diff --git a/src/Hosting/TestHost/src/ClientHandler.cs b/src/Hosting/TestHost/src/ClientHandler.cs index 86a425465e..95788035ea 100644 --- a/src/Hosting/TestHost/src/ClientHandler.cs +++ b/src/Hosting/TestHost/src/ClientHandler.cs @@ -163,6 +163,7 @@ namespace Microsoft.AspNetCore.TestHost response.StatusCode = (HttpStatusCode)httpContext.Response.StatusCode; response.ReasonPhrase = httpContext.Features.Get().ReasonPhrase; response.RequestMessage = request; + response.Version = request.Version; response.Content = new StreamContent(httpContext.Response.Body); diff --git a/src/Hosting/TestHost/test/TestClientTests.cs b/src/Hosting/TestHost/test/TestClientTests.cs index 701d191f0b..08600239c9 100644 --- a/src/Hosting/TestHost/test/TestClientTests.cs +++ b/src/Hosting/TestHost/test/TestClientTests.cs @@ -823,5 +823,48 @@ namespace Microsoft.AspNetCore.TestHost Assert.Same(value, capturedValue); } + + [Fact] + public async Task SendAsync_Default_Protocol11() + { + // Arrange + var expected = "GET Response"; + RequestDelegate appDelegate = ctx => + ctx.Response.WriteAsync(expected); + var builder = new WebHostBuilder().Configure(app => app.Run(appDelegate)); + var server = new TestServer(builder); + var client = server.CreateClient(); + var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:12345"); + + // Act + var message = await client.SendAsync(request); + var actual = await message.Content.ReadAsStringAsync(); + + // Assert + Assert.Equal(expected, actual); + Assert.Equal(new Version(1, 1), message.Version); + } + + [Fact] + public async Task SendAsync_ExplicitlySet_Protocol20() + { + // Arrange + var expected = "GET Response"; + RequestDelegate appDelegate = ctx => + ctx.Response.WriteAsync(expected); + var builder = new WebHostBuilder().Configure(app => app.Run(appDelegate)); + var server = new TestServer(builder); + var client = server.CreateClient(); + var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:12345"); + request.Version = new Version(2, 0); + + // Act + var message = await client.SendAsync(request); + var actual = await message.Content.ReadAsStringAsync(); + + // Assert + Assert.Equal(expected, actual); + Assert.Equal(new Version(2, 0), message.Version); + } } }