// 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.Text; 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; [Fact] public async Task Home_Index_ReturnsSuccess() { // Arrange var server = TestServer.Create(_services, _app); var client = server.CreateClient(); // Act var response = await client.GetAsync("http://localhost/Home/Index"); // Assert Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } [Fact] public async Task Home_NotFoundAction_Returns404() { // 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() { // 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
", new StreamReader(await response.Content.ReadAsStreamAsync(), Encoding.UTF8).ReadToEnd()); } [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) { // 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() { // 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", new StreamReader(await response.Content.ReadAsStreamAsync(), Encoding.UTF8).ReadToEnd()); } } }