コード例 #1
0
        public void Test_VerifyXsrfToken_NoXsrfHeaderOrQueryStringParameter()
        {
            HttpActionContext   actionContext;
            AuthenticationToken authTicket;
            const string        authToken = "authToken";
            const string        xsrfToken = "xsrfToken";

            actionContext = WebApiTestHelpers.BuildHttpActionContext();
            actionContext.Request.Headers.Add(
                "Cookie",
                string.Format(
                    "{0}={1}&Persist=False&{2}={3}; {4}={5}",
                    FormsAuthentication.FormsCookieName,
                    authToken,
                    LoginConstants.Cookie.XsrfToken,
                    xsrfToken,
                    LoginConstants.Cookie.AngularDefaultXsrfCookieName,
                    xsrfToken));
            actionContext.Request.RequestUri = new Uri(
                "http://a",
                UriKind.Absolute);

            authTicket = WebApiTestHelpers.BuildAuthenticationToken(authToken, xsrfToken);

            Assert.That(
                CookieHelper.VerifyXsrfToken(actionContext, authTicket, actionContext.Request.Headers.GetCookies( )),
                Is.False);
        }
コード例 #2
0
        public async Task MultipleRequestsFromSameClientShouldNotFail()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableHttpServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var         request = new RestRequest("api/books");
            List <Book> response;

            // Execute
            response = await client.ExecuteAsync <List <Book> >(request);

            // Validate
            response.Should().NotBeNull();
            response.Count().Should().Be(5);

            var         request2 = new RestRequest("api/books");
            List <Book> response2;

            // Execute
            response2 = await client.ExecuteAsync <List <Book> >(request2);

            // Validate
            response2.Should().NotBeNull();
            response2.Count().Should().Be(5);
        }
コード例 #3
0
        public void Test_VerifyXsrfToken(string authCookieXsrfToken, string cookieXsrfToken,
                                         string headerXsrfToken, string uriXsrfToken, bool expectedResult)
        {
            HttpActionContext   actionContext;
            AuthenticationToken authTicket;
            const string        authToken = "authToken";

            actionContext = WebApiTestHelpers.BuildHttpActionContext();
            actionContext.Request.Headers.Add(
                "Cookie",
                string.Format(
                    "{0}={1}&Persist=False&{2}={3}; {4}={5}",
                    FormsAuthentication.FormsCookieName,
                    authToken,
                    LoginConstants.Cookie.XsrfToken,
                    authCookieXsrfToken,
                    LoginConstants.Cookie.AngularDefaultXsrfCookieName,
                    cookieXsrfToken));
            actionContext.Request.Headers.Add(
                LoginConstants.Headers.AngularJsXsrfToken,
                headerXsrfToken);
            actionContext.Request.RequestUri = new Uri(
                string.Format(
                    "http://a?{0}={1}",
                    LoginConstants.QueryString.XsrfToken,
                    uriXsrfToken),
                UriKind.Absolute);

            authTicket = WebApiTestHelpers.BuildAuthenticationToken(authToken, authCookieXsrfToken);

            Assert.That(
                CookieHelper.VerifyXsrfToken(actionContext, authTicket, actionContext.Request.Headers.GetCookies( )),
                Is.EqualTo(expectedResult));
        }
コード例 #4
0
        public void Test_GetUriQueryParameter(string requestUri, string parameterName, string expectedValue)
        {
            HttpActionContext actionContext;

            actionContext = WebApiTestHelpers.BuildHttpActionContext();
            actionContext.Request.RequestUri = new Uri(requestUri, UriKind.Absolute);

            Assert.That(CookieHelper.GetUriQueryParameter(actionContext, parameterName),
                        Is.EqualTo(HttpUtility.UrlEncode(expectedValue)));
        }
コード例 #5
0
        public async Task ExecuteAsyncOfTReturnsDeserializedContentOfT()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableHttpServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var request  = new RestRequest("api/books");
            var response = await client.ExecuteAsync <List <Book> >(request);

            // Validate
            response.Should().NotBeNull();
            response.Count().Should().Be(5);
        }
コード例 #6
0
        public async Task DeleteShouldReturn204WithNoContent()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var request = new RestRequest("api/books", HttpMethod.Delete);
            RestResponse <string> response;

            // Execute
            response = await client.SendAsync <string>(request);

            // Validate
            response.HttpResponseMessage.StatusCode.Should().Be(HttpStatusCode.NoContent);
            response.Content.Should().BeNull();
        }
コード例 #7
0
        public async Task InternalServerError500ReturnedWhenServerReturns500HttpStatus()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var request = new RestRequest("notsuccess/internalservererror");
            RestResponse <string> response;

            // Execute
            response = await client.SendAsync <string>(request);

            // Validate
            response.HttpResponseMessage.StatusCode.Should().Be(HttpStatusCode.InternalServerError);
            response.Content.Should().BeNull();
        }
コード例 #8
0
ファイル: SendAsyncTests.cs プロジェクト: fr830/PortableRest
        public async Task NotFound404ReturnedWhenServerReturnsNotFoundHttpStatus()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableHttpServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var request = new RestRequest("notsuccess/notfound");
            RestResponse <string> response;

            // Execute
            response = await client.SendAsync <string>(request);

            // Validate
            response.HttpResponseMessage.StatusCode.Should().Be(HttpStatusCode.NotFound);
            response.Content.Should().BeNull();
        }
コード例 #9
0
        public async Task SendAsyncOfTContainsHttpResponseAndDeserializedContent()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var request = new RestRequest("api/books");
            RestResponse <IEnumerable <Book> > response;

            // Execute
            response = await client.SendAsync <IEnumerable <Book> >(request);

            // Validate
            response.HttpResponseMessage.Should().NotBeNull();
            response.HttpResponseMessage.StatusCode.Should().Be(HttpStatusCode.OK);
            response.Content.Should().NotBeNull();
            response.Content.Count().Should().Be(5);
        }
コード例 #10
0
        public async Task GracefullyHandleNullContentWithNonStringType()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var request = new RestRequest("notsuccess/notfound");
            RestResponse <IEnumerable <Book> > response;


            // Execute
            response = await client.SendAsync <IEnumerable <Book> >(request);


            // Validate
            response.HttpResponseMessage.StatusCode.Should().Be(HttpStatusCode.NotFound);
            response.Content.Should().BeNull();
        }
コード例 #11
0
        public async Task SettingAcceptsHeaderOnGetDoesntThrow()
        {
            // Setup
            var server = WebApiTestHelpers.GetTestableServer();
            var client = new RestClient(server)
            {
                BaseUrl = WebApiConstants.Localhost
            };
            var request = new RestRequest("api/books");

            request.AddHeader("Accept", "application/json");
            RestResponse <IEnumerable <Book> > response;

            // Execute
            response = await client.SendAsync <IEnumerable <Book> >(request);

            // Validate
            response.HttpResponseMessage.Should().NotBeNull();
            response.HttpResponseMessage.StatusCode.Should().Be(HttpStatusCode.OK);
            response.Content.Should().NotBeNull();
            response.Content.Count().Should().Be(5);
        }