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); }
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); }
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)); }
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))); }
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); }
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(); }
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(); }
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(); }
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); }
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(); }
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); }