From b8692c2c2169ce4375bd3dbf621c0860affcfc36 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 28 Aug 2014 15:54:50 -0700 Subject: [PATCH] Updating FunctionalTests to use HttpClient abstractions --- .../ActivatorTests.cs | 31 +- .../AntiForgeryTests.cs | 24 +- .../BasicTests.cs | 74 +++-- .../CompositeViewEngineTests.cs | 17 +- .../ConnegTests.cs | 142 ++++----- .../DependencyResolverTests.cs | 12 +- .../DirectivesTest.cs | 12 +- .../HttpResponseHelpers.cs | 22 -- .../InlineConstraintTests.cs | 32 +-- .../InputFormatterTests.cs | 48 ++-- .../ModelBindingTests.cs | 20 +- .../OutputFormattterTests.cs | 43 ++- .../RoutingTests.cs | 270 +++++++++--------- .../ValueProviderTests.cs | 24 +- .../ViewEngineTests.cs | 15 +- .../XmlOutputFormatterTests.cs | 45 ++- .../Controllers/HomeController.cs | 3 + 17 files changed, 387 insertions(+), 447 deletions(-) delete mode 100644 test/Microsoft.AspNet.Mvc.FunctionalTests/HttpResponseHelpers.cs diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs index 6193cbfbf9..a31c993eb4 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs @@ -20,7 +20,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expectedMessage = "TODO: No service for type 'ActivatorWebSite.CannotBeActivatedController+FakeType' " + "has been registered."; @@ -34,15 +34,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expected = "4|some-text"; // Act - var result = await client.GetAsync("http://localhost/Plain?foo=some-text"); + var response = await client.GetAsync("http://localhost/Plain?foo=some-text"); // Assert - Assert.Equal("Fake-Value", result.HttpContext.Response.Headers["X-Fake-Header"]); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + var headerValue = Assert.Single(response.Headers.GetValues("X-Fake-Header")); + Assert.Equal("Fake-Value", headerValue); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expected, body); } @@ -51,14 +52,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expected = "Hello world"; // Act - var result = await client.GetAsync("http://localhost/Regular"); + var body = await client.GetStringAsync("http://localhost/Regular"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body); } @@ -66,14 +66,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests public async Task ViewActivator_ActivatesDefaultInjectedProperties() { var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expected = @" world! /View/ConsumeServicesFromBaseType"; // Act - var result = await client.GetAsync("http://localhost/View/ConsumeDefaultProperties"); + var body = await client.GetStringAsync("http://localhost/View/ConsumeDefaultProperties"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } @@ -81,14 +80,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests public async Task ViewActivator_ActivatesAndContextualizesInjectedServices() { var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expected = "4 test-value"; // Act - var result = await client.GetAsync("http://localhost/View/ConsumeInjectedService?test=test-value"); + var body = await client.GetStringAsync("http://localhost/View/ConsumeInjectedService?test=test-value"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } @@ -96,15 +94,14 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests public async Task ViewActivator_ActivatesServicesFromBaseType() { var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expected = @"/content/scripts/test.js"; // Act - var result = await client.GetAsync("http://localhost/View/ConsumeServicesFromBaseType"); + var body = await client.GetStringAsync("http://localhost/View/ConsumeServicesFromBaseType"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } } diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/AntiForgeryTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/AntiForgeryTests.cs index 1f7d6e8bc3..7b357a178a 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/AntiForgeryTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/AntiForgeryTests.cs @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Linq; +using System.Net; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.TestHost; @@ -11,32 +13,28 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { public class AntiForgeryTests { - private readonly IServiceProvider _services; + private readonly IServiceProvider _services = TestHelper.CreateServices("AntiForgeryWebSite"); private readonly Action _app = new AntiForgeryWebSite.Startup().Configure; - public AntiForgeryTests() - { - _services = TestHelper.CreateServices("AntiForgeryWebSite"); - } - [Fact] public async Task MultipleAFTokensWithinTheSamePage_AreAllowed() { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Account/Login"); //Assert - Assert.Equal(200, response.StatusCode); - Assert.Equal("SAMEORIGIN", response.Headers["X-Frame-Options"]); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + var header = Assert.Single(response.Headers.GetValues("X-Frame-Options")); + Assert.Equal("SAMEORIGIN", header); - var setCookieHeader = response.Headers.GetCommaSeparatedValues("Set-Cookie"); - Assert.Equal(2, setCookieHeader.Count); - Assert.Equal(true, setCookieHeader[0].StartsWith("__RequestVerificationToken")); - Assert.Equal(true, setCookieHeader[1].StartsWith("__RequestVerificationToken")); + var setCookieHeader = response.Headers.GetValues("Set-Cookie").ToArray(); + Assert.Equal(2, setCookieHeader.Length); + Assert.True(setCookieHeader[0].StartsWith("__RequestVerificationToken")); + Assert.True(setCookieHeader[1].StartsWith("__RequestVerificationToken")); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/BasicTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/BasicTests.cs index cc3a9f88b9..94c9c60721 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/BasicTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/BasicTests.cs @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Net; +using System.Net.Http.Headers; using System.Reflection; using System.Threading.Tasks; using BasicWebSite; @@ -13,7 +15,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { public class BasicTests { - private readonly IServiceProvider _provider; + private readonly IServiceProvider _provider = TestHelper.CreateServices("BasicWebSite"); private readonly Action _app = new Startup().Configure; // Some tests require comparing the actual response body against an expected response baseline @@ -22,11 +24,6 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests // use it on all the rest of the tests. private readonly Assembly _resourcesAssembly = typeof(BasicTests).GetTypeInfo().Assembly; - public BasicTests() - { - _provider = TestHelper.CreateServices("BasicWebSite"); - } - [InlineData("http://localhost/")] [InlineData("http://localhost/Home")] [InlineData("http://localhost/Home/Index")] @@ -36,7 +33,8 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); + var expectedMediaType = MediaTypeHeaderValue.Parse("text/html; charset=utf-8"); // The K runtime compiles every file under compiler/resources as a resource at runtime with the same name // as the file name, in order to update a baseline you just need to change the file in that folder. @@ -45,12 +43,12 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests // Act // The host is not important as everything runs in memory and tests are isolated from each other. - var result = await client.GetAsync(url); - var responseContent = await result.ReadBodyAsStringAsync(); + var response = await client.GetAsync(url); + var responseContent = await response.Content.ReadAsStringAsync(); // Assert - Assert.Equal(200, result.StatusCode); - Assert.Equal(result.ContentType, "text/html; charset=utf-8"); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(expectedMediaType, response.Content.Headers.ContentType); Assert.Equal(expectedContent, responseContent); } @@ -59,16 +57,18 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expectedContent = await _resourcesAssembly.ReadResourceAsStringAsync("compiler/resources/BasicWebSite.Home.PlainView.html"); + var expectedMediaType = MediaTypeHeaderValue.Parse("text/html; charset=utf-8"); + // Act - var result = await client.GetAsync("http://localhost/Home/PlainView"); - var responseContent = await result.ReadBodyAsStringAsync(); + var response = await client.GetAsync("http://localhost/Home/PlainView"); + var responseContent = await response.Content.ReadAsStringAsync(); // Assert - Assert.Equal(200, result.StatusCode); - Assert.Equal(result.ContentType, "text/html; charset=utf-8"); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(expectedMediaType, response.Content.Headers.ContentType); Assert.Equal(expectedContent, responseContent); } @@ -77,17 +77,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/Home/NoContentResult"); + var response = await client.GetAsync("http://localhost/Home/NoContentResult"); + var responseContent = await response.Content.ReadAsStringAsync(); // Assert - Assert.Equal(204, result.StatusCode); - Assert.Null(result.ContentType); - Assert.Null(result.ContentLength); - Assert.NotNull(result.Body); - Assert.Equal(0, result.Body.Length); + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + Assert.Null(response.Content.Headers.ContentType); + Assert.Equal(0, response.Content.Headers.ContentLength); + Assert.Equal(0, responseContent.Length); } [Fact] @@ -95,14 +95,14 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/Home/ActionReturningTask"); + var response = await client.GetAsync("http://localhost/Home/ActionReturningTask"); // Assert - Assert.Equal(204, result.StatusCode); - var body = await result.ReadBodyAsStringAsync(); + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal("Hello world", body); } @@ -111,25 +111,19 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); var expectedContent = "1"; - // Call the server 3 times, and make sure the return value remains the same. - var results = new string[3]; - - // Act - for (int i = 0; i < 3; i++) + // Act and Assert + for (var i = 0; i < 3; i++) { var result = await client.GetAsync("http://localhost/Monitor/CountActionDescriptorInvocations"); - Assert.Equal(200, result.StatusCode); - results[i] = await result.ReadBodyAsStringAsync(); - } + Assert.Equal(HttpStatusCode.OK, result.StatusCode); + var responseContent = await result.Content.ReadAsStringAsync(); - // Assert - Assert.Equal(expectedContent, results[0]); - Assert.Equal(expectedContent, results[1]); - Assert.Equal(expectedContent, results[2]); + Assert.Equal(expectedContent, responseContent); + } } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/CompositeViewEngineTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/CompositeViewEngineTests.cs index ea46c4b553..d46428b9ca 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/CompositeViewEngineTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/CompositeViewEngineTests.cs @@ -11,26 +11,20 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { public class CompositeViewEngineTests { - private readonly IServiceProvider _services; + private readonly IServiceProvider _services = TestHelper.CreateServices("CompositeViewEngine"); private readonly Action _app = new CompositeViewEngine.Startup().Configure; - public CompositeViewEngineTests() - { - _services = TestHelper.CreateServices("CompositeViewEngine"); - } - [Fact] public async Task CompositeViewEngine_FindsPartialViewsAcrossAllEngines() { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.GetAsync("http://localhost/"); + var body = await client.GetStringAsync("http://localhost/"); // Assert - var body = await response.ReadBodyAsStringAsync(); Assert.Equal("Hello world", body.Trim()); } @@ -39,13 +33,12 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.GetAsync("http://localhost/Home/TestView"); + var body = await client.GetStringAsync("http://localhost/Home/TestView"); // Assert - var body = await response.ReadBodyAsStringAsync(); Assert.Equal("Content from test view", body.Trim()); } } diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/ConnegTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/ConnegTests.cs index 0f70303954..cb4d885b21 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/ConnegTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/ConnegTests.cs @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Net; +using System.Net.Http.Headers; using System.Threading.Tasks; using ConnegWebsite; using Microsoft.AspNet.Builder; @@ -20,18 +22,18 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Selects custom even though it is last in the list. - var expectedContentType = "application/custom;charset=utf-8"; + var expectedContentType = MediaTypeHeaderValue.Parse("application/custom;charset=utf-8"); var expectedBody = "Written using custom format."; // Act - var result = await client.GetAsync("http://localhost/Normal/WriteUserUsingCustomFormat"); + var response = await client.GetAsync("http://localhost/Normal/WriteUserUsingCustomFormat"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -40,16 +42,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/json;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("application/json;charset=utf-8"); var expectedBody = "{\r\n \"Name\": \"My name\",\r\n \"Address\": \"My address\"\r\n}"; // Act - var result = await client.GetAsync("http://localhost/Normal/MultipleAllowedContentTypes"); + var response = await client.GetAsync("http://localhost/Normal/MultipleAllowedContentTypes"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -58,16 +60,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "text/plain;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("text/plain;charset=utf-8"); var expectedBody = "NormalController"; // Act - var result = await client.GetAsync("http://localhost/Normal/ReturnClassName"); + var response = await client.GetAsync("http://localhost/Normal/ReturnClassName"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -76,15 +78,14 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/json;charset=utf-8"; - //var expectedBody = "\"NormalController\""; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("application/json;charset=utf-8"); // Act - var result = await client.GetAsync("http://localhost/Normal/ReturnUser"); + var response = await client.GetAsync("http://localhost/Normal/ReturnUser"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); } [Fact] @@ -92,31 +93,32 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/Normal/ReturnUser_NoMatchingFormatter"); + var response = await client.GetAsync("http://localhost/Normal/ReturnUser_NoMatchingFormatter"); // Assert - Assert.Equal(406, result.HttpContext.Response.StatusCode); + Assert.Equal(HttpStatusCode.NotAcceptable, response.StatusCode); } [Fact] public async Task ProducesContentAttribute_OnAction_OverridesTheValueOnClass() { var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Value on the class is application/json. - var expectedContentType = "application/custom_ProducesContentBaseController_Action;charset=utf-8"; + var expectedContentType = MediaTypeHeaderValue.Parse( + "application/custom_ProducesContentBaseController_Action;charset=utf-8"); var expectedBody = "ProducesContentBaseController"; // Act - var result = await client.GetAsync("http://localhost/ProducesContentBase/ReturnClassName"); + var response = await client.GetAsync("http://localhost/ProducesContentBase/ReturnClassName"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -124,17 +126,18 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests public async Task ProducesContentAttribute_OnDerivedClass_OverridesTheValueOnBaseClass() { var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/custom_ProducesContentOnClassController;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse( + "application/custom_ProducesContentOnClassController;charset=utf-8"); var expectedBody = "ProducesContentOnClassController"; // Act - var result = await client.GetAsync( + var response = await client.GetAsync( "http://localhost/ProducesContentOnClass/ReturnClassNameWithNoContentTypeOnAction"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -142,16 +145,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests public async Task ProducesContentAttribute_OnDerivedAction_OverridesTheValueOnBaseClass() { var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/custom_NoProducesContentOnClassController_Action;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse( + "application/custom_NoProducesContentOnClassController_Action;charset=utf-8"); var expectedBody = "NoProducesContentOnClassController"; // Act - var result = await client.GetAsync("http://localhost/NoProducesContentOnClass/ReturnClassName"); + var response = await client.GetAsync("http://localhost/NoProducesContentOnClass/ReturnClassName"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -159,16 +163,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests public async Task ProducesContentAttribute_OnDerivedAction_OverridesTheValueOnBaseAction() { var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/custom_NoProducesContentOnClassController_Action;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse( + "application/custom_NoProducesContentOnClassController_Action;charset=utf-8"); var expectedBody = "NoProducesContentOnClassController"; // Act - var result = await client.GetAsync("http://localhost/NoProducesContentOnClass/ReturnClassName"); + var response = await client.GetAsync("http://localhost/NoProducesContentOnClass/ReturnClassName"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -177,16 +182,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/custom_ProducesContentOnClassController_Action;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse( + "application/custom_ProducesContentOnClassController_Action;charset=utf-8"); var expectedBody = "ProducesContentOnClassController"; // Act - var result = await client.GetAsync("http://localhost/ProducesContentOnClass/ReturnClassNameContentTypeOnDerivedAction"); + var response = await client.GetAsync("http://localhost/ProducesContentOnClass/ReturnClassNameContentTypeOnDerivedAction"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } [Fact] @@ -194,16 +200,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/json;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("application/json;charset=utf-8"); var expectedBody = "{\"MethodName\":\"Produces_WithNonObjectResult\"}"; // Act - var result = await client.GetAsync("http://localhost/JsonResult/Produces_WithNonObjectResult"); + var response = await client.GetAsync("http://localhost/JsonResult/Produces_WithNonObjectResult"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -212,16 +218,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/json;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("application/json;charset=utf-8"); var expectedBody = "{\"MethodName\":\"ReturnJsonResult\"}"; // Act - var result = await client.GetAsync("http://localhost/JsonResult/ReturnJsonResult"); + var response = await client.GetAsync("http://localhost/JsonResult/ReturnJsonResult"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -230,16 +236,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/custom-json;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("application/custom-json;charset=utf-8"); var expectedBody = "{ MethodName = ReturnJsonResult_WithCustomMediaType }"; // Act - var result = await client.GetAsync("http://localhost/JsonResult/ReturnJsonResult_WithCustomMediaType"); + var response = await client.GetAsync("http://localhost/JsonResult/ReturnJsonResult_WithCustomMediaType"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -248,16 +254,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/json;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("application/json;charset=utf-8"); var expectedBody = "{\"MethodName\":\"ReturnJsonResult_WithCustomMediaType_NoFormatter\"}"; // Act - var result = await client.GetAsync("http://localhost/JsonResult/ReturnJsonResult_WithCustomMediaType_NoFormatter"); + var response = await client.GetAsync("http://localhost/JsonResult/ReturnJsonResult_WithCustomMediaType_NoFormatter"); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } } diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/DependencyResolverTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/DependencyResolverTests.cs index ee54784faf..f92b18cf1d 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/DependencyResolverTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/DependencyResolverTests.cs @@ -1,10 +1,9 @@ #if NET45 using System; -using System.IO; +using System.Net.Http; using System.Threading.Tasks; using AutofacWebSite; using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Http; using Microsoft.AspNet.TestHost; using Xunit; @@ -20,20 +19,19 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests // Arrange var provider = TestHelper.CreateServices("AutofacWebSite"); Action app = new Startup().Configure; - TestServer server = null; - HttpResponse response = null; + HttpResponseMessage response = null; // Act & Assert await Assert.DoesNotThrowAsync(async () => { // This essentially calls into the Startup.Configuration method - server = TestServer.Create(provider, app); + var server = TestServer.Create(provider, app); // Make a request to start resolving DI pieces - response = await server.Handler.GetAsync(url); + response = await server.CreateClient().GetAsync(url); }); - var actualResponseBody = new StreamReader(response.Body).ReadToEnd(); + var actualResponseBody = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedResponseBody, actualResponseBody); } } diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/DirectivesTest.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/DirectivesTest.cs index 3b4c20a562..e4966e6b66 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/DirectivesTest.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/DirectivesTest.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Diagnostics; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.TestHost; @@ -21,13 +20,12 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { var expected = @"Hello Person1"; var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/Directives/ViewInheritsInjectAndUsingsFromViewStarts"); + var body = await client.GetStringAsync("http://localhost/Directives/ViewInheritsInjectAndUsingsFromViewStarts"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } @@ -36,15 +34,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { var expected = @"WriteLiteral says:layout:Write says:Write says:Hello Person2"; var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/Directives/ViewInheritsBasePageFromViewStarts"); + var body = await client.GetStringAsync("http://localhost/Directives/ViewInheritsBasePageFromViewStarts"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } - } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/HttpResponseHelpers.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/HttpResponseHelpers.cs deleted file mode 100644 index c2e77c4c0f..0000000000 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/HttpResponseHelpers.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System.IO; -using System.Threading.Tasks; -using Microsoft.AspNet.Http; - -namespace Microsoft.AspNet.Mvc.FunctionalTests -{ - // This class contains methods to make easier to read responses in different formats - // until there is a built-in easier way to do it. - public static class HttpResponseHelpers - { - public static async Task ReadBodyAsStringAsync(this HttpResponse response) - { - using (var streamReader = new StreamReader(response.Body)) - { - return await streamReader.ReadToEndAsync(); - } - } - } -} \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/InlineConstraintTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/InlineConstraintTests.cs index d706de8900..b60ac42055 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/InlineConstraintTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/InlineConstraintTests.cs @@ -2,20 +2,13 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using System.Text; +using System.Net; using System.Threading.Tasks; using InlineConstraints; using Microsoft.AspNet.Builder; -using Microsoft.AspNet.Routing; using Microsoft.AspNet.TestHost; -using Microsoft.Framework.ConfigurationModel; using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection.Fallback; -using Microsoft.Framework.Runtime; -using Microsoft.Framework.Runtime.Infrastructure; using Xunit; namespace Microsoft.AspNet.Mvc.FunctionalTests @@ -24,7 +17,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { private readonly IServiceProvider _provider; private readonly Action _app = new Startup().Configure; - + public InlineConstraintTests() { _provider = TestHelper.CreateServices("InlineConstraintsWebSite"); @@ -37,20 +30,20 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests public async Task RoutingToANonExistantArea_WithExistConstraint_RoutesToCorrectAction() { var svc = _provider.GetService(); - svc.AddArgument("--TemplateCollection:areaRoute:TemplateValue="+ + svc.AddArgument("--TemplateCollection:areaRoute:TemplateValue=" + "{area:exists}/{controller=Home}/{action=Index}"); - svc.AddArgument("--TemplateCollection:actionAsMethod:TemplateValue="+ + svc.AddArgument("--TemplateCollection:actionAsMethod:TemplateValue=" + "{controller=Home}/{action=Index}"); var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/Users"); - Assert.Equal(200, result.StatusCode); + var response = await client.GetAsync("http://localhost/Users"); // Assert - var returnValue = await result.ReadBodyAsStringAsync(); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + var returnValue = await response.Content.ReadAsStringAsync(); Assert.Equal("Users.Index", returnValue); } @@ -59,17 +52,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var svc = _provider.GetService(); - svc.AddArgument("--TemplateCollection:areaRoute:TemplateValue="+ + svc.AddArgument("--TemplateCollection:areaRoute:TemplateValue=" + "{area}/{controller=Home}/{action=Index}"); - svc.AddArgument("--TemplateCollection:actionAsMethod:TemplateValue"+ + svc.AddArgument("--TemplateCollection:actionAsMethod:TemplateValue" + "={controller=Home}/{action=Index}"); var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act & Assert - var ex = await Assert.ThrowsAsync - (async () => await client.GetAsync("http://localhost/Users")); + var ex = await Assert.ThrowsAsync(() => client.GetAsync("http://localhost/Users")); Assert.Equal("The view 'Index' was not found." + " The following locations were searched:\r\n/Areas/Users/Views/Home/Index.cshtml\r\n" + diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/InputFormatterTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/InputFormatterTests.cs index 44c3f575c9..22b110fe9f 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/InputFormatterTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/InputFormatterTests.cs @@ -2,6 +2,10 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.TestHost; @@ -12,30 +16,26 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { public class InputFormatterTests { - private readonly IServiceProvider _services; + private readonly IServiceProvider _services = TestHelper.CreateServices("FormatterWebSite"); private readonly Action _app = new FormatterWebSite.Startup().Configure; - public InputFormatterTests() - { - _services = TestHelper.CreateServices("FormatterWebSite"); - } - [Fact] public async Task CheckIfXmlInputFormatterIsBeingCalled() { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); var sampleInputInt = 10; var input = "" + "" + sampleInputInt.ToString() + ""; + var content = new StringContent(input, Encoding.UTF8, "application/xml"); // Act - var response = await client.PostAsync("http://localhost/Home/Index", input, "application/xml"); + var response = await client.PostAsync("http://localhost/Home/Index", content); //Assert - Assert.Equal(200, response.StatusCode); - Assert.Equal(sampleInputInt.ToString(), await response.ReadBodyAsStringAsync()); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(sampleInputInt.ToString(), await response.Content.ReadAsStringAsync()); } [Theory] @@ -48,16 +48,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); var sampleInputInt = 10; var input = "{\"SampleInt\":10}"; + var content = new StringContent(input, Encoding.UTF8, requestContentType); // Act - var response = await client.PostAsync("http://localhost/Home/Index", input, requestContentType); + var response = await client.PostAsync("http://localhost/Home/Index", content); //Assert - Assert.Equal(200, response.StatusCode); - Assert.Equal(sampleInputInt.ToString(), await response.ReadBodyAsStringAsync()); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(sampleInputInt.ToString(), await response.Content.ReadAsStringAsync()); } [Theory] @@ -71,24 +72,27 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests [InlineData("invalid", false)] [InlineData("application/custom", false)] [InlineData("image/jpg", false)] - public async Task ModelStateErrorValidation_NoInputFormatterFound_ForGivenContetType(string requestContentType, - bool filterHandlesModelStateError) + public async Task ModelStateErrorValidation_NoInputFormatterFound_ForGivenContentType(string requestContentType, + bool filterHandlesModelStateError) { // Arrange var actionName = filterHandlesModelStateError ? "ActionFilterHandlesError" : "ActionHandlesError"; var expectedSource = filterHandlesModelStateError ? "filter" : "action"; var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); var input = "{\"SampleInt\":10}"; + var content = new StringContent(input); + content.Headers.Clear(); + content.Headers.TryAddWithoutValidation("Content-Type", requestContentType); // Act - var response = await client.PostAsync("http://localhost/InputFormatter/" + actionName, - input, - requestContentType, - (request) => request.Accept = "application/json"); + var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/InputFormatter/" + actionName); + request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json")); + request.Content = content; + var response = await client.SendAsync(request); - var responseBody = await response.ReadBodyAsStringAsync(); + var responseBody = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(responseBody); // Assert diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/ModelBindingTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/ModelBindingTests.cs index c7431bb341..52023c3f4b 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/ModelBindingTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/ModelBindingTests.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Net; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.TestHost; @@ -11,27 +12,22 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { public class ModelBindingTests { - private readonly IServiceProvider _services; + private readonly IServiceProvider _services = TestHelper.CreateServices("ModelBindingWebSite"); private readonly Action _app = new ModelBindingWebSite.Startup().Configure; - public ModelBindingTests() - { - _services = TestHelper.CreateServices("ModelBindingWebSite"); - } - [Fact] public async Task ModelBindingBindsBase64StringsToByteArrays() { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Home/Index?byteValues=SGVsbG9Xb3JsZA=="); //Assert - Assert.Equal(200, response.StatusCode); - Assert.Equal("HelloWorld", await response.ReadBodyAsStringAsync()); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal("HelloWorld", await response.Content.ReadAsStringAsync()); } [Fact] @@ -39,14 +35,14 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Home/Index?byteValues="); //Assert - Assert.Equal(200, response.StatusCode); - Assert.Equal("\0", await response.ReadBodyAsStringAsync()); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal("\0", await response.Content.ReadAsStringAsync()); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/OutputFormattterTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/OutputFormattterTests.cs index cd7fed2512..8ebb2b6d2b 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/OutputFormattterTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/OutputFormattterTests.cs @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Net; +using System.Net.Http.Headers; using System.Threading.Tasks; using ConnegWebsite; using Microsoft.AspNet.Builder; @@ -24,16 +26,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "text/plain;charset=utf-8"; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("text/plain;charset=utf-8"); var expectedBody = actionName; // Act - var result = await client.GetAsync("http://localhost/TextPlain/" + actionName); + var response = await client.GetAsync("http://localhost/TextPlain/" + actionName); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); Assert.Equal(expectedBody, body); } @@ -44,41 +46,36 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - var expectedContentType = "application/json;charset=utf-8"; - var expectedBody = actionName; + var client = server.CreateClient(); + var expectedContentType = MediaTypeHeaderValue.Parse("application/json;charset=utf-8"); // Act - var result = await client.GetAsync("http://localhost/TextPlain/" + actionName); + var response = await client.GetAsync("http://localhost/TextPlain/" + actionName); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType); } [Theory] [InlineData("ReturnTaskOfString_NullValue")] - [InlineData("ReturnTaskOfObject_NullValue")] + [InlineData("ReturnTaskOfObject_NullValue")] [InlineData("ReturnObject_NullValue")] public async Task NoContentFormatter_ForNullValue_GetsSelectedAndWritesResponse(string actionName) { // Arrange var server = TestServer.Create(_provider, _app); - var client = server.Handler; - string expectedContentType = null; - - // ReadBodyAsString returns empty string instead of null. - string expectedBody = ""; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/NoContent/" + actionName); + var response = await client.GetAsync("http://localhost/NoContent/" + actionName); // Assert - Assert.Equal(expectedContentType, result.HttpContext.Response.ContentType); - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); - Assert.Equal(expectedBody, body); - Assert.Equal(204, result.HttpContext.Response.StatusCode); - Assert.Equal(0, result.HttpContext.Response.ContentLength); + Assert.Null(response.Content.Headers.ContentType); + var body = await response.Content.ReadAsStringAsync(); + // Response body is empty instead of null. + Assert.Empty(body); + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + Assert.Equal(0, response.Content.Headers.ContentLength); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/RoutingTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/RoutingTests.cs index 08ab08e9e4..c6e7b2f2dc 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/RoutingTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/RoutingTests.cs @@ -4,40 +4,36 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; +using System.Net.Http; using System.Threading.Tasks; -using Newtonsoft.Json; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Routing; using Microsoft.AspNet.TestHost; +using Newtonsoft.Json; using Xunit; - namespace Microsoft.AspNet.Mvc.FunctionalTests { public class RoutingTests { - private readonly IServiceProvider _services; + private readonly IServiceProvider _services = TestHelper.CreateServices("RoutingWebSite"); private readonly Action _app = new RoutingWebSite.Startup().Configure; - public RoutingTests() - { - _services = TestHelper.CreateServices("RoutingWebSite"); - } - [Fact] public async Task ConventionRoutedController_ActionIsReachable() { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Home/Index"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Home/Index", result.ExpectedUrls); @@ -57,15 +53,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/", result.ExpectedUrls); @@ -85,13 +81,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Home/NotAnAction"); // Assert - Assert.Equal(404, response.StatusCode); + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } [Fact] @@ -99,15 +95,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Travel/Flight/Index"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Travel/Flight/Index", result.ExpectedUrls); @@ -128,13 +124,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Travel/Flight/BuyTickets"); // Assert - Assert.Equal(404, response.StatusCode); + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } [Fact] @@ -142,15 +138,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Store/Shop/Products"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Store/Shop/Products", result.ExpectedUrls); @@ -172,13 +168,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Store/ListProducts"); // Assert - Assert.Equal(404, response.StatusCode); + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } // There's two actions at this URL - but attribute routes go in the route table @@ -188,15 +184,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Home/About"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Home/About", result.ExpectedUrls); @@ -209,15 +205,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Blog/Edit/5"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Blog/Edit/5", result.ExpectedUrls); @@ -243,15 +239,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/api/Employee"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -268,15 +264,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.SendAsync(verb, "http://localhost/api/Employee"); + var message = new HttpRequestMessage(new HttpMethod(verb), "http://localhost/api/Employee"); + var response = await client.SendAsync(message); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -290,15 +287,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.SendAsync("MERGE", "http://localhost/api/Employee/5"); + var message = new HttpRequestMessage(new HttpMethod("MERGE"), "http://localhost/api/Employee/5"); + var response = await client.SendAsync(message); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -315,15 +313,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.SendAsync(verb, "http://localhost/api/Employee/5/Administrator"); + var message = new HttpRequestMessage(new HttpMethod(verb), "http://localhost/api/Employee/5/Administrator"); + var response = await client.SendAsync(message); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/api/Employee/5/Administrator", result.ExpectedUrls); @@ -340,15 +339,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Manager/5"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Manager/5", result.ExpectedUrls); @@ -365,15 +364,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Team/5"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Team/5", result.ExpectedUrls); @@ -390,15 +389,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Teams"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/Teams", result.ExpectedUrls); @@ -411,7 +410,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetStringAsync("http://localhost/Organization/5"); @@ -426,7 +425,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetStringAsync("http://localhost/Teams/AllTeams"); @@ -441,15 +440,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/api/Employee").To(new { }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -464,15 +463,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/api/Employee").To(new { action = "Get", id = 5 }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -487,16 +486,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/api/Employee").To(new { action = "ShowPosts", controller = "Blog" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -511,15 +510,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/api/Employee").To(new { action = "Index", controller = "Home" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -536,14 +535,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.SendAsync(method, "http://localhost/api/Company/5"); - Assert.Equal(200, response.StatusCode); + var message = new HttpRequestMessage(new HttpMethod(method), "http://localhost/api/Company/5"); + var response = await client.SendAsync(message); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -559,14 +559,14 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.SendAsync("DELETE", "http://localhost/api/Company/5"); - Assert.Equal(200, response.StatusCode); + var response = await client.DeleteAsync("http://localhost/api/Company/5"); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -582,17 +582,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); var url = LinkFrom("http://localhost") .To(new { id = 5 }); // Act - var response = await client.SendAsync("GET", "http://localhost/api/Company/5/Employees"); - Assert.Equal(200, response.StatusCode); + var response = await client.GetAsync("http://localhost/api/Company/5/Employees"); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -608,14 +608,14 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.SendAsync("GET", "http://localhost/api/Company/5/Departments"); - Assert.Equal(200, response.StatusCode); + var response = await client.GetAsync("http://localhost/api/Company/5/Departments"); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -635,13 +635,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); var expectedMessage = "The supplied route name 'DuplicateRoute' is ambiguous and matched more than one route."; // Act var ex = await Assert.ThrowsAsync(async () => - await client.SendAsync("GET", url)); + await client.GetAsync(url)); // Assert Assert.Equal(expectedMessage, ex.Message); @@ -652,16 +652,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/") .To(new { action = "BuyTickets", controller = "Flight", area = "Travel" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -676,15 +676,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/Travel/Flight").To(new { action = "BuyTickets" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -699,15 +699,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/Travel/Flight").To(new { action = "Index", controller = "Home", area = "" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -722,15 +722,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/Travel/Flight").To(new { action = "Contact", controller = "Home", }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -745,16 +745,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/api/Employee") .To(new { action = "Schedule", controller = "Rail", area = "Travel" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -769,15 +769,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/ContosoCorp/Trains/CheckSchedule").To(new { action = "Index" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -792,16 +792,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/ContosoCorp/Trains/CheckSchedule") .To(new { action = "Index", controller = "Home", area = "" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -816,16 +816,16 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/ContosoCorp/Trains") .To(new { action = "Contact", controller = "Home", }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -840,17 +840,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/ContosoCorp/Trains") .To(new { action = "Index", controller = "Flight", }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -865,17 +865,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/Travel/Flight") .To(new { action = "Index", controller = "Rail", }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -890,17 +890,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/Travel/Flight") .To(new { action = "ListUsers", controller = "UserManagement", area = "Admin" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -915,17 +915,17 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = LinkFrom("http://localhost/ContosoCorp/Trains") .To(new { action = "ListUsers", controller = "UserManagement", area = "Admin" }); var response = await client.GetAsync(url); - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Assert - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -940,15 +940,15 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/api/Products/US/GetProducts"); // Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); Assert.Contains("/api/Products/US/GetProducts", result.ExpectedUrls); @@ -970,13 +970,13 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Products/GetProducts"); // Assert - Assert.Equal(404, response.StatusCode); + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } [Fact] @@ -984,7 +984,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = @@ -992,7 +992,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests .To(new { action = "GetProducts", controller = "Products", country = "US" }); var response = await client.GetAsync(url); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -1004,7 +1004,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = @@ -1012,7 +1012,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests .To(new { action = "GetProducts", controller = "Products", country = "CA" }); var response = await client.GetAsync(url); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert @@ -1024,7 +1024,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act var url = @@ -1032,7 +1032,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests .To(new { action = "GetProducts", controller = "Products", country = (string)null }); var response = await client.GetAsync(url); - var body = await response.ReadBodyAsStringAsync(); + var body = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(body); // Assert diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/ValueProviderTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/ValueProviderTests.cs index 2fae97fa1d..0b71be5349 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/ValueProviderTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/ValueProviderTests.cs @@ -3,35 +3,29 @@ using System; using System.Threading.Tasks; -using ValueProvidersSite; using Microsoft.AspNet.Builder; using Microsoft.AspNet.TestHost; +using ValueProvidersSite; using Xunit; namespace Microsoft.AspNet.Mvc.FunctionalTests { public class ValueProviderTest { - private readonly IServiceProvider _services; + private readonly IServiceProvider _services = TestHelper.CreateServices("ValueProvidersSite"); private readonly Action _app = new Startup().Configure; - public ValueProviderTest() - { - _services = TestHelper.CreateServices("ValueProvidersSite"); - } - [Fact] public async Task ValueProviderFactories_AreVisitedInSequentialOrder_ForValueProviders() { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.GetAsync("http://localhost/Home/TestValueProvider?test=not-test-value"); + var body = await client.GetStringAsync("http://localhost/Home/TestValueProvider?test=not-test-value"); // Assert - var body = await response.ReadBodyAsStringAsync(); Assert.Equal("custom-value-provider-value", body.Trim()); } @@ -40,13 +34,12 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.GetAsync("http://localhost/Home/DefaultValueProviders?test=query-value"); + var body = await client.GetStringAsync("http://localhost/Home/DefaultValueProviders?test=query-value"); // Assert - var body = await response.ReadBodyAsStringAsync(); Assert.Equal("query-value", body.Trim()); } @@ -55,13 +48,12 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var response = await client.GetAsync("http://localhost/RouteTest/route-value"); + var body = await client.GetStringAsync("http://localhost/RouteTest/route-value"); // Assert - var body = await response.ReadBodyAsStringAsync(); Assert.Equal("route-value", body.Trim()); } } diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/ViewEngineTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/ViewEngineTests.cs index 7ddfc61dad..58bd2e2570 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/ViewEngineTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/ViewEngineTests.cs @@ -57,13 +57,12 @@ ViewWithNestedLayout-Content public async Task RazorView_ExecutesPageAndLayout(string actionName, string expected) { var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/ViewEngine/" + actionName); + var body = await client.GetStringAsync("http://localhost/ViewEngine/" + actionName); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } @@ -76,13 +75,12 @@ ViewWithNestedLayout-Content test-value"; var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/ViewEngine/ViewWithPartial"); + var body = await client.GetStringAsync("http://localhost/ViewEngine/ViewWithPartial"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } @@ -95,13 +93,12 @@ test-value"; partial-content component-content"; var server = TestServer.Create(_provider, _app); - var client = server.Handler; + var client = server.CreateClient(); // Act - var result = await client.GetAsync("http://localhost/ViewEngine/ViewPassesViewDataToLayout"); + var body = await client.GetStringAsync("http://localhost/ViewEngine/ViewPassesViewDataToLayout"); // Assert - var body = await result.HttpContext.Response.ReadBodyAsStringAsync(); Assert.Equal(expected, body.Trim()); } } diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlOutputFormatterTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlOutputFormatterTests.cs index 62611648ff..008f803909 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlOutputFormatterTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/XmlOutputFormatterTests.cs @@ -3,8 +3,9 @@ using System; using System.Collections.Generic; -using System.IO; -using System.Text; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.TestHost; @@ -27,20 +28,19 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; - var headers = new Dictionary(); - headers.Add("Accept", new string[] { "application/xml;charset=utf-8" }); + var client = server.CreateClient(); // Act - var response = await client.SendAsync("POST", - "http://localhost/Home/GetDummyClass?sampleInput=10", headers, null, null); + var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/Home/GetDummyClass?sampleInput=10"); + request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/xml;charset=utf-8")); + var response = await client.SendAsync(request); //Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal("" + "10", - new StreamReader(response.Body, Encoding.UTF8).ReadToEnd()); + await response.Content.ReadAsStringAsync()); } [Fact] @@ -48,19 +48,18 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; - var headers = new Dictionary(); - headers.Add("Accept", new string[] { "application/xml;charset=utf-8" }); + var client = server.CreateClient(); // Act - var response = await client.SendAsync("POST", - "http://localhost/XmlSerializer/GetDummyClass?sampleInput=10", headers, null, null); + var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/XmlSerializer/GetDummyClass?sampleInput=10"); + request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/xml;charset=utf-8")); + var response = await client.SendAsync(request); //Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal("10", - new StreamReader(response.Body, Encoding.UTF8).ReadToEnd()); + await response.Content.ReadAsStringAsync()); } [Fact] @@ -68,20 +67,20 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests { // Arrange var server = TestServer.Create(_services, _app); - var client = server.Handler; - var headers = new Dictionary(); - headers.Add("Accept", new string[] { "application/xml;charset=utf-8" }); + var client = server.CreateClient(); // Act - var response = await client.SendAsync("POST", - "http://localhost/DataContractSerializer/GetPerson?name=HelloWorld", headers, null, null); + var request = new HttpRequestMessage(HttpMethod.Post, + "http://localhost/DataContractSerializer/GetPerson?name=HelloWorld"); + request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/xml;charset=utf-8")); + var response = await client.SendAsync(request); //Assert - Assert.Equal(200, response.StatusCode); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal("" + "HelloWorld", - new StreamReader(response.Body, Encoding.UTF8).ReadToEnd()); + await response.Content.ReadAsStringAsync()); } } } \ No newline at end of file diff --git a/test/WebSites/BasicWebSite/Controllers/HomeController.cs b/test/WebSites/BasicWebSite/Controllers/HomeController.cs index 360be39b79..339159d3e2 100644 --- a/test/WebSites/BasicWebSite/Controllers/HomeController.cs +++ b/test/WebSites/BasicWebSite/Controllers/HomeController.cs @@ -26,6 +26,9 @@ namespace BasicWebSite.Controllers public async Task ActionReturningTask() { + // TODO: #1077. With HttpResponseMessage, there seems to be a race between the write operation setting the + // header to 200 and NoContentResult returned by the action invoker setting it to 204. + Context.Response.StatusCode = 204; await Context.Response.WriteAsync("Hello world"); } }