aspnetcore/test/Microsoft.AspNet.TestHost.T.../TestClientTests.cs

116 lines
3.8 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.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;
using Xunit;
namespace Microsoft.AspNet.TestHost
{
public class TestClientTests
{
private readonly TestServer _server;
public TestClientTests()
{
_server = TestServer.Create(app => app.Run(ctx => Task.FromResult(0)));
}
[Fact]
public async Task GetAsyncWorks()
{
// Arrange
var expected = "GET Response";
RequestDelegate appDelegate = ctx =>
ctx.Response.WriteAsync(expected);
var server = TestServer.Create(app => app.Run(appDelegate));
var client = server.CreateClient();
// Act
var actual = await client.GetStringAsync("http://localhost:12345");
// Assert
Assert.Equal(expected, actual);
}
[Fact]
public async Task NoTrailingSlash_NoPathBase()
{
// Arrange
var expected = "GET Response";
RequestDelegate appDelegate = ctx =>
{
Assert.Equal("", ctx.Request.PathBase.Value);
Assert.Equal("/", ctx.Request.Path.Value);
return ctx.Response.WriteAsync(expected);
};
var server = TestServer.Create(app => app.Run(appDelegate));
var client = server.CreateClient();
// Act
var actual = await client.GetStringAsync("http://localhost:12345");
// Assert
Assert.Equal(expected, actual);
}
[Fact]
public async Task SingleTrailingSlash_NoPathBase()
{
// Arrange
var expected = "GET Response";
RequestDelegate appDelegate = ctx =>
{
Assert.Equal("", ctx.Request.PathBase.Value);
Assert.Equal("/", ctx.Request.Path.Value);
return ctx.Response.WriteAsync(expected);
};
var server = TestServer.Create(app => app.Run(appDelegate));
var client = server.CreateClient();
// Act
var actual = await client.GetStringAsync("http://localhost:12345/");
// Assert
Assert.Equal(expected, actual);
}
[Fact]
public async Task PutAsyncWorks()
{
// Arrange
RequestDelegate appDelegate = ctx =>
ctx.Response.WriteAsync(new StreamReader(ctx.Request.Body).ReadToEnd() + " PUT Response");
var server = TestServer.Create(app => app.Run(appDelegate));
var client = server.CreateClient();
// Act
var content = new StringContent("Hello world");
var response = await client.PutAsync("http://localhost:12345", content);
// Assert
Assert.Equal("Hello world PUT Response", await response.Content.ReadAsStringAsync());
}
[Fact]
public async Task PostAsyncWorks()
{
// Arrange
RequestDelegate appDelegate = async ctx =>
await ctx.Response.WriteAsync(new StreamReader(ctx.Request.Body).ReadToEnd() + " POST Response");
var server = TestServer.Create(app => app.Run(appDelegate));
var client = server.CreateClient();
// Act
var content = new StringContent("Hello world");
var response = await client.PostAsync("http://localhost:12345", content);
// Assert
Assert.Equal("Hello world POST Response", await response.Content.ReadAsStringAsync());
}
}
}