public void GetUserSessionFromCookieReturnsSessionWhenCookieExists()
        {
            // Arrange
            var userSession = new DfcUserSession
            {
                SessionId    = "DummySessionId",
                Salt         = "DummySalt",
                CreatedDate  = DateTime.UtcNow,
                PartitionKey = "DummyPartitionKey",
            };
            var userSessionJson          = JsonConvert.SerializeObject(userSession);
            var httpContext              = A.Fake <HttpContext>();
            var localHttpContextAccessor = new HttpContextAccessor {
                HttpContext = httpContext
            };
            var cookies = new RequestCookieCollection(new Dictionary <string, string> {
                { SessionName, userSessionJson }
            });

            A.CallTo(() => localHttpContextAccessor.HttpContext.Request.Cookies).Returns(cookies);

            var localSessionClient = new SessionClient(sessionIdGenerator, partitionKeyGenerator, localHttpContextAccessor, config, logger);

            // Act
            var result = localSessionClient.GetUserSessionFromCookie();

            // Assert
            Assert.Equal(userSession.GetCookieSessionId, result.GetCookieSessionId);
        }
コード例 #2
0
 public FakeRequestCookies()
 {
     Cookies = new RequestCookieCollection(new Dictionary <string, string>
     {
         { "auth_token", Guid.NewGuid().ToString() }
     });
 }
        public void Then_The_Cookie_Is_Deleted_If_Exists(
            string testCookieName,
            string content,
            Mock <IDataProtectionProvider> provider)
        {
            var featureMock            = new Mock <IRequestCookiesFeature>();
            var responseCookiesFeature = new Mock <IResponseCookiesFeature>();
            var cookieDictionary       = new RequestCookieCollection(new Dictionary <string, string> {
                { testCookieName, Convert.ToBase64String(Encoding.UTF8.GetBytes(content)) }
            });
            var mockHeaderDictionary         = new HeaderDictionary();
            var mockResponseHeaderDictionary = new ResponseCookies(mockHeaderDictionary, Mock.Of <ObjectPool <StringBuilder> >());

            featureMock.Setup(x => x.Cookies).Returns(cookieDictionary);
            responseCookiesFeature.Setup(x => x.Cookies).Returns(mockResponseHeaderDictionary);

            var responseMock = new FeatureCollection();

            responseMock.Set(featureMock.Object);
            responseMock.Set(responseCookiesFeature.Object);
            var context = new DefaultHttpContext(responseMock);
            var mockHttpContextAccessor = new Mock <IHttpContextAccessor>();

            mockHttpContextAccessor.Setup(_ => _.HttpContext).Returns(context);
            var service = new CookieStorageService <string>(mockHttpContextAccessor.Object, provider.Object);

            //Act
            service.Delete(testCookieName);

            //Assert
            var actual       = mockHeaderDictionary["set-cookie"].ToArray().First().Split(";");
            var actualExpiry = DateTime.Parse(actual.Skip(1).First().Split("=").Last());

            Assert.IsTrue(actualExpiry < DateTime.UtcNow);
        }
コード例 #4
0
 private static IList <RaygunRequestMessage.Cookie> GetCookies(RequestCookieCollection cookies)
 {
     // ToDo: filter cookies
     return(cookies
            .Select(c => new RaygunRequestMessage.Cookie(c.Key, c.Value))
            .ToList());
 }
コード例 #5
0
    public async Task MyMiddleware_Should_Set_RequestHeader_And_ResponseHeader()
    {
        //Arrange
        var cookieStore = new Dictionary <string, string> {
            { "cookie-name", "cookie-value" }
        };
        var cookies     = new RequestCookieCollection(cookieStore);
        var request     = Mock.Of <IOwinRequest>();
        var requestMock = Mock.Get(request);

        requestMock.Setup(_ => _.Cookies).Returns(cookies);
        requestMock.Setup(_ => _.User.Identity.IsAuthenticated).Returns(true);
        requestMock.Setup(_ => _.Headers.Append(It.IsAny <string>(), It.IsAny <string>()));
        var response    = new OwinResponse();
        var context     = Mock.Of <OwinContext>();
        var contextMock = Mock.Get(context);

        contextMock.CallBase = true;
        contextMock.Setup(_ => _.Request).Returns(request);
        contextMock.Setup(_ => _.Response).Returns(response);
        RequestDelegate next         = _ => Task.FromResult((object)null);
        var             myMiddleware = new MyMiddleware(next);
        //Act
        await myMiddleware.Invoke(context);

        //Assert
        requestMock.Verify(_ => _.Headers.Append("header-name", "header-value"));
        response.Headers.ContainsKey("Set-Cookie");
    }
        public void Then_The_Cookie_Data_Is_Retrieved(
            string testCookieName,
            string content)
        {
            //Arrange
            var mockDataProtector = new Mock <IDataProtector>();

            mockDataProtector.Setup(sut => sut.Unprotect(It.IsAny <byte[]>())).Returns(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(content)));
            var mockDataProtectionProvider = new Mock <IDataProtectionProvider>();

            mockDataProtectionProvider.Setup(s => s.CreateProtector(It.IsAny <string>())).Returns(mockDataProtector.Object);
            var featureMock          = new Mock <IRequestCookiesFeature>();
            var mockHeaderDictionary = new RequestCookieCollection(new Dictionary <string, string> {
                { testCookieName, Convert.ToBase64String(Encoding.UTF8.GetBytes(content)) }
            });

            featureMock.Setup(x => x.Cookies).Returns(mockHeaderDictionary);
            var responseMock = new FeatureCollection();

            responseMock.Set(featureMock.Object);
            var context = new DefaultHttpContext(responseMock);
            var mockHttpContextAccessor = new Mock <IHttpContextAccessor>();

            mockHttpContextAccessor.Setup(_ => _.HttpContext).Returns(context);
            var service = new CookieStorageService <string>(mockHttpContextAccessor.Object, mockDataProtectionProvider.Object);

            //Act
            var actual = service.Get(testCookieName);

            //Assert
            actual.Should().NotBeNull();
            actual.Should().Be(content);
        }
コード例 #7
0
ファイル: Parsing.cs プロジェクト: mherod/MustardBlack
        public void SingleCookie()
        {
            var subject = new RequestCookieCollection("name=value");

            subject.Get("name").Value.Should().Be("value");
            subject.Count().Should().Be(1);
        }
コード例 #8
0
ファイル: Parsing.cs プロジェクト: mherod/MustardBlack
        public void TrailingSeparator()
        {
            var subject = new RequestCookieCollection("name=value;");

            subject.Get("name").Value.Should().Be("value");
            subject.Count().Should().Be(1);
        }
コード例 #9
0
        public async void SelectorResultNullWhenNoQueryParameterOrCookie()
        {
            // Arrange
            var queryCollection         = new QueryCollection();         // No Query Parameter
            var requestCookieCollection = new RequestCookieCollection(); // No Cookie
            var responseCookies         = new ResponseCookies();

            var mockContext = new Mock <HttpContext>();

            mockContext.Setup(p => p.User.IsInRole(SwitcherooThemeSelector.RequiredRole)).Returns(true);
            mockContext.SetupGet(p => p.Request.Query).Returns(queryCollection);
            mockContext.SetupGet(p => p.Request.Cookies).Returns(requestCookieCollection);
            mockContext.SetupGet(p => p.Response.Cookies).Returns(responseCookies);

            var mockContextAccessor = new Mock <IHttpContextAccessor>();

            mockContextAccessor.SetupGet(p => p.HttpContext).Returns(mockContext.Object);

            var mockThemeService = new Mock <ISiteThemeService>();

            mockThemeService.Setup(p => p.GetCurrentThemeNameAsync()).ReturnsAsync(CurrentActiveTheme);

            IThemeSelector selector = new SwitcherooThemeSelector(mockThemeService.Object, mockContextAccessor.Object);

            // Act
            var result = await selector.GetThemeAsync();

            // Assert
            Assert.Null(result);
            Assert.Empty(responseCookies.Cookies);
        }
        public async Task TryFindSessionCodeUsesQueryDataWhenOnlyQueryStringAndCookieSourcesExist()
        {
            // Arrange
            const string expectedQueryStringValue = "qsValue";
            var          userSession = new DfcUserSession
            {
                SessionId    = "DummySessionId",
                Salt         = "DummySalt",
                CreatedDate  = DateTime.UtcNow,
                PartitionKey = "DummyPartitionKey",
            };
            var userSessionJson  = JsonConvert.SerializeObject(userSession);
            var httpContext      = A.Fake <HttpContext>();
            var dummyQueryString = new QueryString($"?{SessionName.TrimStart('.')}={expectedQueryStringValue}");
            var cookies          = new RequestCookieCollection(new Dictionary <string, string> {
                { SessionName, userSessionJson }
            });

            var localHttpContextAccessor = new HttpContextAccessor {
                HttpContext = httpContext
            };

            A.CallTo(() => localHttpContextAccessor.HttpContext.Request.Cookies).Returns(cookies);
            A.CallTo(() => localHttpContextAccessor.HttpContext.Request.QueryString).Returns(dummyQueryString);

            var localSessionClient = new SessionClient(sessionIdGenerator, partitionKeyGenerator, localHttpContextAccessor, config, logger);

            // Act
            var result = await localSessionClient.TryFindSessionCode().ConfigureAwait(false);

            // Assert
            Assert.Equal(expectedQueryStringValue, result);
        }
コード例 #11
0
        /// <summary>
        /// Parse a header
        /// </summary>
        /// <param name="name">Name of header.</param>
        /// <param name="reader">Reader containing value.</param>
        /// <returns>HTTP Header</returns>
        /// <exception cref="FormatException">Header value is not of the expected format.</exception>
        public IHeader Parse(string name, ITextReader reader)
        {
            //key: "value"; key: "value"

            var cookies = new RequestCookieCollection();

            while (!reader.EOF)
            {
                // read name
                string cookieName = reader.ReadToEnd("=;");

                // cookie with value?
                if (reader.Current == '=')
                {
                    reader.Consume();
                    reader.ConsumeWhiteSpaces();

                    // is value quoted or not?
                    string value = reader.Current == '"' ? reader.ReadQuotedString() : reader.ReadToEnd(";");
                    cookies.Add(new RequestCookie(cookieName, value));
                }
                //else
                //    cookies.Add(new RequestCookie(cookieName, string.Empty));

                // consume whitespaces and cookie separator
                reader.ConsumeWhiteSpaces(';');
            }

            return(new CookieHeader(cookies));
        }
コード例 #12
0
ファイル: CookieParser.cs プロジェクト: sclcwwl/Gimela
    /// <summary>
    /// Parse a header
    /// </summary>
    /// <param name="name">Name of header.</param>
    /// <param name="reader">Reader containing value.</param>
    /// <returns>HTTP Header</returns>
    /// <exception cref="FormatException">Header value is not of the expected format.</exception>
    public IHeader Parse(string name, ITextReader reader)
    {
      //key: "value"; key: "value"

      var cookies = new RequestCookieCollection();
      while (!reader.EOF)
      {
        // read name
        string cookieName = reader.ReadToEnd("=;");

        // cookie with value?
        if (reader.Current == '=')
        {
          reader.Consume();
          reader.ConsumeWhiteSpaces();

          // is value quoted or not?
          string value = reader.Current == '"' ? reader.ReadQuotedString() : reader.ReadToEnd(";");
          cookies.Add(new RequestCookie(cookieName, value));
        }

        // consume whitespaces and cookie separator
        reader.ConsumeWhiteSpaces(';');
      }

      return new CookieHeader(cookies);
    }
コード例 #13
0
        public void LoadTempData_Base64UrlDecodesAnd_UnprotectsData_FromCookie()
        {
            // Arrange
            var expectedValues = new Dictionary <string, object>();

            expectedValues.Add("int", 10);
            var tempDataProviderSerializer      = new TempDataSerializer();
            var expectedDataToUnprotect         = tempDataProviderSerializer.Serialize(expectedValues);
            var base64AndUrlEncodedDataInCookie = WebEncoders.Base64UrlEncode(expectedDataToUnprotect);
            var dataProtector    = new PassThroughDataProtector();
            var tempDataProvider = GetProvider(dataProtector);
            var requestCookies   = new RequestCookieCollection(new Dictionary <string, string>()
            {
                { CookieTempDataProvider.CookieName, base64AndUrlEncodedDataInCookie }
            });
            var httpContext = new Mock <HttpContext>();

            httpContext
            .Setup(hc => hc.Request.Cookies)
            .Returns(requestCookies);

            // Act
            var actualValues = tempDataProvider.LoadTempData(httpContext.Object);

            // Assert
            Assert.Equal(expectedDataToUnprotect, dataProtector.DataToUnprotect);
            Assert.Equal(expectedValues, actualValues);
        }
コード例 #14
0
 public RequestCookiesFeatureStub()
 {
     Cookies = new RequestCookieCollection(new Dictionary <string, string>
     {
         { "x_x", "programmingisbullshit" }
     });
 }
コード例 #15
0
    public void AppContextSwitchUnEscapesKeysAndValues(string input, string expectedKey, string expectedValue)
    {
        var cookies = RequestCookieCollection.ParseInternal(new StringValues(input), enableCookieNameEncoding: true);

        Assert.Equal(1, cookies.Count);
        Assert.Equal(expectedKey, cookies.Keys.Single());
        Assert.Equal(expectedValue, cookies[expectedKey]);
    }
コード例 #16
0
    public void UnEscapesValues(string input, string expectedKey, string expectedValue)
    {
        var cookies = RequestCookieCollection.Parse(new StringValues(input));

        Assert.Equal(1, cookies.Count);
        Assert.Equal(expectedKey, cookies.Keys.Single());
        Assert.Equal(expectedValue, cookies[expectedKey]);
    }
コード例 #17
0
ファイル: Parsing.cs プロジェクト: JoshuaR830/MustardBlack
        public void CommaSeparated()
        {
            var subject = new RequestCookieCollection("name=value,name2=value2");

            subject.Get("name").Value.ShouldEqual("value");
            subject.Get("name2").Value.ShouldEqual("value2");
            subject.Count().ShouldEqual(2);
        }
コード例 #18
0
ファイル: Parsing.cs プロジェクト: mherod/MustardBlack
        public void Base64Value()
        {
            var cookieValue = "WC4YUK+AAr3CTkapr3SMoiijXl/8H0Ik5vSNyJFemRjihUJZcQ6VbugPfw81HGAOhteaVTEDEGpovCLDL6mnLJlvZheJKHMxkGiYTDqAY3UHfdIJc3H+pmby5diysgBth/kOWVi9dnDx0tTv7dsnt0psbFG2o/iu93vOiIJshqkRcUCwo2cWjtU80gO1zkhnPzgelj4K85do7GI17oZFrSimROIFHTXM";

            var subject = new RequestCookieCollection($"name={cookieValue}");

            subject.Get("name").Value.Should().Be(cookieValue);
        }
コード例 #19
0
ファイル: CookieHeader.cs プロジェクト: wingcd/utnt
 /// <summary>
 /// Initializes a new instance of the <see cref="CookieHeader"/> class.
 /// </summary>
 /// <param name="collection">The collection.</param>
 /// <exception cref="ArgumentNullException"><c>collection</c> is <c>null</c>.</exception>
 public CookieHeader(RequestCookieCollection collection)
 {
     if (collection == null)
     {
         throw new ArgumentNullException("collection");
     }
     Cookies = collection;
 }
コード例 #20
0
ファイル: Parsing.cs プロジェクト: mherod/MustardBlack
        public void CommaInValue()
        {
            var subject = new RequestCookieCollection("name=value,value2");

            subject.Get("name").Value.Should().Be("value");
            subject.Get("value2").Value.Should().Be("");
            subject.Count().Should().Be(2);
        }
コード例 #21
0
ファイル: Parsing.cs プロジェクト: mherod/MustardBlack
        public void TwoCookies()
        {
            var subject = new RequestCookieCollection("name=value;name2=value2");

            subject.Get("name").Value.Should().Be("value");
            subject.Get("name2").Value.Should().Be("value2");
            subject.Count().Should().Be(2);
        }
コード例 #22
0
ファイル: Parsing.cs プロジェクト: mherod/MustardBlack
        public void Whitespace()
        {
            var subject = new RequestCookieCollection("name=value\n;\tname2=value2 ; name3=value3\n");

            subject.Get("name").Value.Should().Be("value");
            subject.Get("name2").Value.Should().Be("value2");
            subject.Get("name3").Value.Should().Be("value3");
            subject.Count().Should().Be(3);
        }
コード例 #23
0
        private HttpContext GetHttpContext(string cookieName, string cookieValue)
        {
            var cookies = new RequestCookieCollection(new Dictionary <string, string>
            {
                { cookieName, cookieValue },
            });

            return(GetHttpContext(cookies));
        }
コード例 #24
0
        /// <summary>
        /// Redirect user to import page with current job opened
        /// </summary>
        /// <param name="context">Current OWin Context</param>
        /// <param name="encodedUrl">Encoded Url to be redirected </param>
        /// <returns>Redirects to specified page</returns>
        public static string GetOAuthUrl(IOwinContext context, string encodedUrl)
        {
            string decodedUrl = HttpUtility.UrlDecode(encodedUrl);
            RequestCookieCollection cookies = context.Request.Cookies;
            string jobId      = cookies["jobId"];
            string stateToken = CreateAndSetStateCookie(context);

            return(string.Format("{0}&state={1}&jobId={2}", decodedUrl, stateToken, jobId));
        }
コード例 #25
0
ファイル: Parsing.cs プロジェクト: mherod/MustardBlack
        public void MixedSeparated()
        {
            var subject = new RequestCookieCollection("name=value,name2=value2;name3=value3");

            subject.Get("name").Value.Should().Be("value");
            subject.Get("name2").Value.Should().Be("value2");
            subject.Get("name3").Value.Should().Be("value3");
            subject.Count().Should().Be(3);
        }
コード例 #26
0
 public MockHttpRequest() : base()
 {
     Form          = new FormCollection(new Dictionary <string, StringValues>());
     headers       = new HeaderDictionary();
     Cookies       = new RequestCookieCollection();
     Method        = "GET";
     Body          = new MemoryStream();
     ContentLength = 0;
 }
コード例 #27
0
        public MockHttpCookieAccess(string cookieName = null, string cookieContent = null)
        {
            if (cookieName != null)
            {
                _requestCookies[cookieName] = cookieContent;
            }

            CookiesIn  = new RequestCookieCollection(_requestCookies);
            CookiesOut = new ResponseCookies(HeaderDict, null);
        }
コード例 #28
0
ファイル: HandCodeHelper.cs プロジェクト: GuoliangCui/Tools
        public bool Login2(string uname, string upwd, RequestCookieCollection cookieCollection)
        {
            string loginUrl = "http://www.bjguahao.gov.cn/quicklogin.htm";
            Dictionary <string, string> cc = new Dictionary <string, string>();

            cc.Add("1", "1");
            cc.Add("2", "2");
            cookieCollection = new RequestCookieCollection(cc);
            return(true);
        }
コード例 #29
0
ファイル: Startup1.cs プロジェクト: HYMPYT/C-Sharp
        public override Task Invoke(IOwinContext context)
        {
            RequestCookieCollection cool = context.Request.Cookies;

            if ((cool["Auth"] == null) && (context.Request.Path.ToString().EndsWith("ecret")))
            {
                return(context.Response.WriteAsync("<h1>Hey!!</h1>"));
            }
            return(Next.Invoke(context));
        }
コード例 #30
0
        public HttpCookieCollection(RequestCookieCollection cookies, HttpContextSettings settings)
            : base(cookie => cookie.Name)
        {
            var str = string.Format("/{0}/", settings.SecureCookiePrefix);

            cookies.Where(cookie => !cookie.Value.StartsWith(str, StringComparison.Ordinal))
            .Select(x => new HttpCookie(x.Key, x.Value))
            .ToList()
            .ForEach(this.Add);
        }
コード例 #31
0
        public static Task InvokeRequest(IOwinContext context)
        {
            RequestCookieCollection cookies = context.Request.Cookies;
            string owinCookieValue          = cookies["OwinCookieKey"];

            IReadableStringCollection stringquery = context.Request.Query;
            string owinquery = stringquery["owin"];

            context.Response.ContentType = "text/plain";
            return(context.Response.WriteAsync("Hello World 2"));
        }
コード例 #32
0
 public HttpListenerRequestWrapper(HttpListenerRequest httpListenerRequest)
 {
     _httpListenerRequest = httpListenerRequest;
     _qs = new NameValueCollection(httpListenerRequest.QueryString);
     _headers = new NameValueCollection(httpListenerRequest.Headers);
     _cookies = new RequestCookieCollection(httpListenerRequest.Cookies.Cast<System.Net.Cookie>()
         .Select(c => new SignalR.Hosting.Cookie (
             name: c.Name,
             value: c.Value,
             domain: c.Domain,
             path: c.Path
         )));
 }
コード例 #33
0
ファイル: AspNetRequest.cs プロジェクト: gigi81/SignalR
        public AspNetRequest(HttpRequestBase request)
        {
            _request = request;

            Cookies = new RequestCookieCollection(request.Cookies.Cast<string>()
                .Select(key =>
                    {
                        var cookie = request.Cookies[key];
                        return new Cookie (
                            name: cookie.Name,
                            value: cookie.Value,
                            domain: cookie.Domain,
                            path: cookie.Path
                        );
                    }));

            ResolveFormAndQueryString();
        }
コード例 #34
0
ファイル: Request.cs プロジェクト: kppullin/SignalR
        public Request(Uri uri, Action abort, Dictionary<string, string> postData, IPrincipal user)
        {
            Url = uri;
            _abort = abort;
            User = user;
            Form = new NameValueCollection();
            Headers = new NameValueCollection();
            ServerVariables = new NameValueCollection();
            QueryString = HttpUtility.ParseDelimited(Url.Query.TrimStart('?'));
            Cookies = new RequestCookieCollection();

            if (postData != null)
            {
                foreach (var pair in postData)
                {
                    Form[pair.Key] = pair.Value;
                }
            }
        }
コード例 #35
0
ファイル: OwinRequest.cs プロジェクト: gigi81/SignalR
        public OwinRequest(IDictionary<string, object> environment, string body)
        {
            var env = new Gate.Environment(environment);
            var headers = env.Headers;

            Url = BuildUrl(env);
            Headers = new NameValueCollection();

            foreach (var pair in headers)
            {
                foreach (var value in pair.Value)
                {
                    Headers.Add(pair.Key, value);
                }
            }

            // TODO: Add a cookie source that parses the cookie header
            Cookies = new RequestCookieCollection(new Cookie[0]);
            QueryString = ParseDelimited(env.QueryString);
            Form = ParseDelimited(body);
        }
コード例 #36
0
        /// <summary>
        /// Parse a header
        /// </summary>
        /// <param name="name">Name of header.</param>
        /// <param name="reader">Reader containing value.</param>
        /// <returns>HTTP Header</returns>
        /// <exception cref="System.FormatException">Header value is not of the expected format.</exception>
        public IHeader Create(string name, ITextReader reader)
        {
            if (reader == null) return null;
            var cookies = new RequestCookieCollection();
            while (!reader.Eof)
            {
                string cookieName = reader.ReadToEnd("=;");

                if (reader.Current == '=')
                {
                    reader.Consume();
                    reader.ConsumeWhiteSpaces();

                    string value = reader.Current == '"' ? reader.ReadQuotedString() : reader.ReadToEnd(";");
                    cookies.Add(cookieName, new RequestCookie(cookieName, value));
                }

                reader.ConsumeWhiteSpaces(';');
            }

            return new CookieHeader(cookies);
        }
コード例 #37
0
        private HttpContext GetHttpContext(string cookieName, string cookieValue)
        {
            var cookies = new RequestCookieCollection(new Dictionary<string, string>
            {
                { cookieName, cookieValue },
            });

            return GetHttpContext(cookies);
        }
コード例 #38
0
        public void WithHttpRequestShouldWorkCorrectlyWithDefaultValues()
        {
            var stream = new MemoryStream();
            var requestCookies = new RequestCookieCollection(
                new Dictionary<string, string>
                {
                    { "MyRequestCookie", "MyRequestCookieValue" },
                    { "AnotherRequestCookie", "AnotherRequestCookieValue" }
                });

            var files = new[]
            {
                new FormFile(stream, 0, 0, "FirstFile", "FirstFileName"),
                new FormFile(stream, 0, 0, "SecondFile", "SecondFileName"),
            };

            MyController<MvcController>
                .Instance()
                .WithHttpRequest(request => request
                    .WithBody(stream)
                    .WithContentLength(1)
                    .WithContentType(ContentType.ApplicationJson)
                    .AndAlso()
                    .WithCookie("MyCookie", "MyCookieValue")
                    .WithCookies(new Dictionary<string, string>
                    {
                        { "MyDictCookie", "MyDictCookieValue" },
                        { "AnotherDictCookie", "AnotherDictCookieValue" }
                    })
                    .WithCookies(requestCookies)
                    .WithCookies(new
                    {
                        ObjectCookie = "ObjectCookieValue",
                        AnotherObjectCookie = "AnotherObjectCookieValue"  
                    })
                    .AndAlso()
                    .WithFormField("Field", "FieldValue")
                    .WithFormField("MultiField", "FirstFieldValue", "SecondFieldValue")
                    .WithFormFields(new Dictionary<string, IEnumerable<string>>
                    {
                        { "MyDictField", new[] { "MyDictFieldValue" } },
                        { "AnotherDictField", new[] { "AnotherDictFieldValue" } }
                    })
                    .AndAlso()
                    .WithFormFiles(files)
                    .AndAlso()
                    .WithHeader("MyHeader", "MyHeaderValue")
                    .WithHeader("MultiHeader", "FirstHeaderValue", "SecondHeaderValue")
                    .WithHeaders(new Dictionary<string, IEnumerable<string>>
                    {
                        { "MyDictHeader", new[] { "MyDictHeaderValue" } },
                        { "AnotherDictHeader", new[] { "AnotherDictHeaderValue" } }
                    })
                    .AndAlso()
                    .WithHost("mytestedasp.net")
                    .WithMethod("POST")
                    .WithPath("/all")
                    .WithPathBase("/api")
                    .WithProtocol("protocol")
                    .WithQueryString("?key=value&another=yetanother")
                    .WithHttps())
                .ShouldPassForThe<HttpRequest>(builtRequest =>
                {
                    Assert.Same(stream, builtRequest.Body);
                    Assert.Equal(1, builtRequest.ContentLength);
                    Assert.Same(ContentType.ApplicationJson, builtRequest.ContentType);

                    Assert.Equal(7, builtRequest.Cookies.Count);
                    Assert.Equal("MyCookieValue", builtRequest.Cookies["MyCookie"]);
                    Assert.Equal("MyDictCookieValue", builtRequest.Cookies["MyDictCookie"]);
                    Assert.Equal("AnotherDictCookieValue", builtRequest.Cookies["AnotherDictCookie"]);
                    Assert.Equal("MyRequestCookieValue", builtRequest.Cookies["MyRequestCookie"]);
                    Assert.Equal("AnotherRequestCookieValue", builtRequest.Cookies["AnotherRequestCookie"]);
                    Assert.Equal("ObjectCookieValue", builtRequest.Cookies["ObjectCookie"]);
                    Assert.Equal("AnotherObjectCookieValue", builtRequest.Cookies["AnotherObjectCookie"]);

                    Assert.Equal(4, builtRequest.Form.Count);
                    Assert.Equal("FieldValue", builtRequest.Form["Field"]);
                    Assert.Equal("FirstFieldValue,SecondFieldValue", builtRequest.Form["MultiField"]);
                    Assert.Equal("MyDictFieldValue", builtRequest.Form["MyDictField"]);
                    Assert.Equal("AnotherDictFieldValue", builtRequest.Form["AnotherDictField"]);

                    Assert.Equal(2, builtRequest.Form.Files.Count);
                    Assert.Same(files[0], builtRequest.Form.Files[0]);
                    Assert.Same(files[1], builtRequest.Form.Files[1]);

                    Assert.Equal(8, builtRequest.Headers.Count);
                    Assert.Equal("MyHeaderValue", builtRequest.Headers["MyHeader"]);
                    Assert.Equal("FirstHeaderValue,SecondHeaderValue", builtRequest.Headers["MultiHeader"]);
                    Assert.Equal("MyDictHeaderValue", builtRequest.Headers["MyDictHeader"]);
                    Assert.Equal("AnotherDictHeaderValue", builtRequest.Headers["AnotherDictHeader"]);

                    Assert.Equal("mytestedasp.net", builtRequest.Host.Value);
                    Assert.Equal("POST", builtRequest.Method);
                    Assert.Equal("/all", builtRequest.Path);
                    Assert.Equal("/api", builtRequest.PathBase);
                    Assert.Equal("protocol", builtRequest.Protocol);
                    Assert.Equal("?key=value&another=yetanother", builtRequest.QueryString.Value);
                    Assert.Equal("https", builtRequest.Scheme);

                    Assert.Equal(2, builtRequest.Query.Count);
                    Assert.Equal("value", builtRequest.Query["key"]);
                    Assert.Equal("yetanother", builtRequest.Query["another"]);
                });
        }
コード例 #39
0
ファイル: RequestOptions.cs プロジェクト: bestwpw/RestBus
 public RequestOptions()
 {
     Headers = new RequestHeaders();
     Cookies = new RequestCookieCollection(Headers);
 }
コード例 #40
0
        public void Cookies_GetAndSet()
        {
            var request = new DefaultHttpContext().Request;
            var cookieHeaders = request.Headers["Cookie"];
            Assert.Equal(0, cookieHeaders.Count);
            var cookies0 = request.Cookies;
            Assert.Equal(0, cookies0.Count);
            Assert.Null(cookies0["key0"]);
            Assert.False(cookies0.ContainsKey("key0"));

            var newCookies = new[] { "name0=value0", "name1=value1" };
            request.Headers["Cookie"] = newCookies;

            cookies0 = RequestCookieCollection.Parse(newCookies);
            var cookies1 = request.Cookies;
            Assert.Equal(cookies0, cookies1);
            Assert.Equal(2, cookies1.Count);
            Assert.Equal("value0", cookies1["name0"]);
            Assert.Equal("value1", cookies1["name1"]);
            Assert.Equal(newCookies, request.Headers["Cookie"]);

            var cookies2 = new RequestCookieCollection(new Dictionary<string,string>()
            {
                { "name2", "value2" }
            });
            request.Cookies = cookies2;
            Assert.Equal(cookies2, request.Cookies);
            Assert.Equal("value2", request.Cookies["name2"]);
            cookieHeaders = request.Headers["Cookie"];
            Assert.Equal(new[] { "name2=value2" }, cookieHeaders);
        }
コード例 #41
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CookieHeader"/> class.
 /// </summary>
 /// <param name="collection">The collection.</param>
 /// <exception cref="ArgumentNullException"><c>collection</c> is <c>null</c>.</exception>
 public CookieHeader(RequestCookieCollection collection)
 {
     if (collection == null)
         throw new ArgumentNullException("collection");
     Cookies = collection;
 }
コード例 #42
0
		public OwinRequestCookieCollection(RequestCookieCollection cookies) {
			_cookies = cookies;
		}