aspnetcore/test/Microsoft.AspNet.Mvc.Functi.../ActivatorTests.cs

65 lines
2.3 KiB
C#

// 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.Threading.Tasks;
using ActivatorWebSite;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.TestHost;
using Xunit;
namespace Microsoft.AspNet.Mvc.FunctionalTests
{
public class ActivatorTests
{
private readonly IServiceProvider _provider = TestHelper.CreateServices("ActivatorWebSite");
private readonly Action<IBuilder> _app = new Startup().Configure;
[Fact]
public async Task ControllerThatCannotBeActivated_ThrowsWhenAttemptedToBeInvoked()
{
// Arrange
var server = TestServer.Create(_provider, _app);
var client = server.Handler;
var expectedMessage = "TODO: No service for type 'ActivatorWebSite.CannotBeActivatedController+FakeType' " +
"has been registered.";
// Act & Assert
var ex = await Assert.ThrowsAsync<Exception>(() => client.GetAsync("http://localhost/CannotBeActivated/Index"));
Assert.Equal(expectedMessage, ex.Message);
}
[Fact]
public async Task PropertiesForPocoControllersAreInitialized()
{
// Arrange
var server = TestServer.Create(_provider, _app);
var client = server.Handler;
var expected = "4|some-text";
// Act
var result = 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();
Assert.Equal(expected, body);
}
[Fact]
public async Task PropertiesForTypesDerivingFromControllerAreInitialized()
{
// Arrange
var server = TestServer.Create(_provider, _app);
var client = server.Handler;
var expected = "Hello world";
// Act
var result = await client.GetAsync("http://localhost/Regular");
// Assert
var body = await result.HttpContext.Response.ReadBodyAsStringAsync();
Assert.Equal(expected, body);
}
}
}