// 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; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.TestHost; using Xunit; namespace Microsoft.AspNet.Mvc.FunctionalTests { public class MvcSampleTests { // Path relative to Mvc\\test\Microsoft.AspNet.Mvc.FunctionalTests private readonly IServiceProvider _services = TestHelper.CreateServices("MvcSample.Web", Path.Combine("..", "..", "samples")); private readonly Action _app = new MvcSample.Web.Startup().Configure; [Theory] [InlineData("")] // Shared/MyView.cshtml [InlineData("/")] // Shared/MyView.cshtml [InlineData("/Home/Index")] // Shared/MyView.cshtml [InlineData("/Home/Create")] // Home/Create.cshtml [InlineData("/Home/FlushPoint")] // Home/FlushPoint.cshtml [InlineData("/Home/InjectSample")] // Home/InjectSample.cshtml [InlineData("/Home/Language")] // Home/Language.cshtml [InlineData("/Home/MyView")] // Shared/MyView.cshtml [InlineData("/Home/NullUser")] // Home/NullUser.cshtml [InlineData("/Home/Post")] // Shared/MyView.cshtml with null User [InlineData("/Home/SaveUser")] // Shared/MyView.cshtml with uninitialized User instance [InlineData("/Home/ValidationSummary")] // Home/ValidationSummary.cshtml public async Task Home_Pages_ReturnSuccess(string path) { using (TestHelper.ReplaceCallContextServiceLocationService(_services)) { // Arrange var server = TestServer.Create(_services, _app); var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost" + path); // Assert Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } } [Fact] public async Task Home_NotFoundAction_Returns404() { using (TestHelper.ReplaceCallContextServiceLocationService(_services)) { // Arrange var server = TestServer.Create(_services, _app); var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Home/NotFound"); // Assert Assert.NotNull(response); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } } [Fact] public async Task Home_CreateUser_ReturnsXmlBasedOnAcceptHeader() { using (TestHelper.ReplaceCallContextServiceLocationService(_services)) { // Arrange var server = TestServer.Create(_services, _app); var client = server.CreateClient(); var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/Home/ReturnUser"); request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/xml;charset=utf-8")); // Act var response = await client.SendAsync(request); // Assert Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal("I like playing Football" + "
My address
13true" + "
Dependents address
0false" + "0Dependents name" + "13.37" + "My nameSecure stringSoftware Engineer
", await response.Content.ReadAsStringAsync()); } } [Theory] [InlineData("http://localhost/Filters/ChallengeUser", HttpStatusCode.Unauthorized)] [InlineData("http://localhost/Filters/AllGranted", HttpStatusCode.Unauthorized)] [InlineData("http://localhost/Filters/NotGrantedClaim", HttpStatusCode.Unauthorized)] public async Task FiltersController_Tests(string url, HttpStatusCode statusCode) { using (TestHelper.ReplaceCallContextServiceLocationService(_services)) { // Arrange var server = TestServer.Create(_services, _app); var client = server.CreateClient(); // Act var response = await client.GetAsync(url); // Assert Assert.NotNull(response); Assert.Equal(statusCode, response.StatusCode); } } [Fact] public async Task FiltersController_Crash_ThrowsException() { using (TestHelper.ReplaceCallContextServiceLocationService(_services)) { // Arrange var server = TestServer.Create(_services, _app); var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Filters/Crash?message=HelloWorld"); // Assert Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal("Boom HelloWorld", await response.Content.ReadAsStringAsync()); } } } }