From bf6635fcfd9c97b206b1b1c12db3ad01994d4137 Mon Sep 17 00:00:00 2001 From: Geoff Kizer Date: Tue, 13 Feb 2018 15:03:42 -0800 Subject: [PATCH] add response generation overloads Commit migrated from https://github.com/dotnet/corefx/commit/6943fc7c0e92359e6335a618f6ff5ee8402af4ac --- .../Common/tests/System/Net/Http/LoopbackServer.cs | 134 ++++++++++++++++----- .../tests/FunctionalTests/DiagnosticsTests.cs | 10 +- .../HttpClientHandlerTest.AcceptAllCerts.cs | 2 +- .../HttpClientHandlerTest.ClientCertificates.cs | 2 +- ...tpClientHandlerTest.MaxResponseHeadersLength.cs | 4 +- .../HttpClientHandlerTest.SslProtocols.cs | 12 +- .../tests/FunctionalTests/HttpClientHandlerTest.cs | 59 +++------ .../tests/FunctionalTests/HttpClientTest.cs | 9 +- .../FunctionalTests/HttpCookieProtocolTests.cs | 48 ++++---- .../tests/FunctionalTests/HttpProtocolTests.cs | 22 ++-- .../FunctionalTests/HttpRetryProtocolTests.cs | 14 +-- .../tests/FunctionalTests/IdnaProtocolTests.cs | 6 +- .../FunctionalTests/SocketsHttpHandlerTest.cs | 12 +- .../tests/HttpWebRequestTest.cs | 4 +- .../tests/HttpWebResponseHeaderTest.cs | 30 +---- .../tests/HttpWebResponseTest.cs | 15 +-- .../System.Net.WebClient/tests/WebClientTest.cs | 44 ++----- 17 files changed, 207 insertions(+), 220 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Http/LoopbackServer.cs b/src/libraries/Common/tests/System/Net/Http/LoopbackServer.cs index aacbd00..a417fbc 100644 --- a/src/libraries/Common/tests/System/Net/Http/LoopbackServer.cs +++ b/src/libraries/Common/tests/System/Net/Http/LoopbackServer.cs @@ -81,27 +81,6 @@ namespace System.Net.Test.Common }); } - private static string GetDefaultHttpResponse() => $"HTTP/1.1 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 0\r\n\r\n"; - - public async Task> AcceptConnectionSendResponseAndCloseAsync(string response) - { - List lines = null; - - // Note, we assume there's no request body. - // We'll close the connection after reading the request header and sending the response. - await AcceptConnectionAsync(async connection => - { - lines = await connection.ReadRequestHeaderAndSendResponseAsync(response); - }); - - return lines; - } - - public Task> AcceptConnectionSendDefaultResponseAndCloseAsync() - { - return AcceptConnectionSendResponseAndCloseAsync(GetDefaultHttpResponse()); - } - public async Task AcceptConnectionAsync(Func funcAsync) { using (Socket s = await _listenSocket.AcceptAsync().ConfigureAwait(false)) @@ -135,6 +114,102 @@ namespace System.Net.Test.Common } } + public async Task> AcceptConnectionSendCustomResponseAndCloseAsync(string response) + { + List lines = null; + + // Note, we assume there's no request body. + // We'll close the connection after reading the request header and sending the response. + await AcceptConnectionAsync(async connection => + { + lines = await connection.ReadRequestHeaderAndSendCustomResponseAsync(response); + }); + + return lines; + } + + public async Task> AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode statusCode = HttpStatusCode.OK, string additionalHeaders = null, string content = null) + { + List lines = null; + + // Note, we assume there's no request body. + // We'll close the connection after reading the request header and sending the response. + await AcceptConnectionAsync(async connection => + { + lines = await connection.ReadRequestHeaderAndSendResponseAsync(statusCode, additionalHeaders, content); + }); + + return lines; + } + + // Stolen from HttpStatusDescription code in the product code + private static string GetStatusDescription(HttpStatusCode code) + { + switch ((int)code) + { + case 100: return "Continue"; + case 101: return "Switching Protocols"; + case 102: return "Processing"; + + case 200: return "OK"; + case 201: return "Created"; + case 202: return "Accepted"; + case 203: return "Non-Authoritative Information"; + case 204: return "No Content"; + case 205: return "Reset Content"; + case 206: return "Partial Content"; + case 207: return "Multi-Status"; + + case 300: return "Multiple Choices"; + case 301: return "Moved Permanently"; + case 302: return "Found"; + case 303: return "See Other"; + case 304: return "Not Modified"; + case 305: return "Use Proxy"; + case 307: return "Temporary Redirect"; + + case 400: return "Bad Request"; + case 401: return "Unauthorized"; + case 402: return "Payment Required"; + case 403: return "Forbidden"; + case 404: return "Not Found"; + case 405: return "Method Not Allowed"; + case 406: return "Not Acceptable"; + case 407: return "Proxy Authentication Required"; + case 408: return "Request Timeout"; + case 409: return "Conflict"; + case 410: return "Gone"; + case 411: return "Length Required"; + case 412: return "Precondition Failed"; + case 413: return "Request Entity Too Large"; + case 414: return "Request-Uri Too Long"; + case 415: return "Unsupported Media Type"; + case 416: return "Requested Range Not Satisfiable"; + case 417: return "Expectation Failed"; + case 422: return "Unprocessable Entity"; + case 423: return "Locked"; + case 424: return "Failed Dependency"; + case 426: return "Upgrade Required"; // RFC 2817 + + case 500: return "Internal Server Error"; + case 501: return "Not Implemented"; + case 502: return "Bad Gateway"; + case 503: return "Service Unavailable"; + case 504: return "Gateway Timeout"; + case 505: return "Http Version Not Supported"; + case 507: return "Insufficient Storage"; + } + return null; + } + + public static string GetHttpResponse(HttpStatusCode statusCode = HttpStatusCode.OK, string additionalHeaders = null, string content = null) => + $"HTTP/1.1 {(int)statusCode} {GetStatusDescription(statusCode)}\r\n" + + $"Date: {DateTimeOffset.UtcNow:R}\r\n" + + $"Content-Length: {(content == null ? 0 : content.Length)}\r\n" + + additionalHeaders + + "\r\n" + + content; + public class Options { public IPAddress Address { get; set; } = IPAddress.Loopback; @@ -196,18 +271,23 @@ namespace System.Net.Test.Common return lines; } - public async Task> ReadRequestHeaderAndSendResponseAsync(string response) + public async Task SendResponseAsync(HttpStatusCode statusCode = HttpStatusCode.OK, string additionalHeaders = null, string content = null) { - List lines = await ReadRequestHeaderAsync().ConfigureAwait(false); - - await _writer.WriteAsync(response).ConfigureAwait(false); + await _writer.WriteAsync(GetHttpResponse(statusCode, additionalHeaders, content)); + } + public async Task> ReadRequestHeaderAndSendCustomResponseAsync(string response) + { + List lines = await ReadRequestHeaderAsync().ConfigureAwait(false); + await _writer.WriteAsync(response); return lines; } - public Task> ReadRequestHeaderAndSendDefaultResponseAsync() + public async Task> ReadRequestHeaderAndSendResponseAsync(HttpStatusCode statusCode = HttpStatusCode.OK, string additionalHeaders = null, string content = null) { - return ReadRequestHeaderAndSendResponseAsync(GetDefaultHttpResponse()); + List lines = await ReadRequestHeaderAsync().ConfigureAwait(false); + await SendResponseAsync(statusCode, additionalHeaders, content); + return lines; } } } diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs index 707489d..7c1be60 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs @@ -148,7 +148,7 @@ namespace System.Net.Http.Functional.Tests { LoopbackServer.CreateServerAsync(async (server, url) => { - Task> requestLines = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> requestLines = server.AcceptConnectionSendResponseAndCloseAsync(); Task response = client.GetAsync(url); await Task.WhenAll(response, requestLines); @@ -185,7 +185,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( - server.AcceptConnectionSendDefaultResponseAndCloseAsync(), + server.AcceptConnectionSendResponseAndCloseAsync(), client.GetAsync(url)); }); @@ -286,7 +286,7 @@ namespace System.Net.Http.Functional.Tests Task request = server.AcceptConnectionAsync(connection => { tcs.Cancel(); - return connection.ReadRequestHeaderAndSendDefaultResponseAsync(); + return connection.ReadRequestHeaderAndSendResponseAsync(); }); Task response = client.GetAsync(url, tcs.Token); await Assert.ThrowsAnyAsync(() => TestHelper.WhenAllCompletedOrAnyFailed(response, request)); @@ -356,7 +356,7 @@ namespace System.Net.Http.Functional.Tests { LoopbackServer.CreateServerAsync(async (server, url) => { - Task> requestLines = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> requestLines = server.AcceptConnectionSendResponseAndCloseAsync(); Task response = client.GetAsync(url); await Task.WhenAll(response, requestLines); @@ -610,7 +610,7 @@ namespace System.Net.Http.Functional.Tests Task request = server.AcceptConnectionAsync(connection => { tcs.Cancel(); - return connection.ReadRequestHeaderAndSendDefaultResponseAsync(); + return connection.ReadRequestHeaderAndSendResponseAsync(); }); Task response = client.GetAsync(url, tcs.Token); await Assert.ThrowsAnyAsync(() => TestHelper.WhenAllCompletedOrAnyFailed(response, request)); diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs index 58fd065..66760bc 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.AcceptAllCerts.cs @@ -52,7 +52,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( - server.AcceptConnectionSendDefaultResponseAndCloseAsync(), + server.AcceptConnectionSendResponseAndCloseAsync(), client.GetAsync(url)); }, options); } diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs index 4710175..d91e8fc 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ClientCertificates.cs @@ -239,7 +239,7 @@ namespace System.Net.Http.Functional.Tests { SslStream sslStream = Assert.IsType(connection.Stream); Assert.Equal(cert, sslStream.RemoteCertificate); - await connection.ReadRequestHeaderAndSendDefaultResponseAsync(); + await connection.ReadRequestHeaderAndSendResponseAsync(); })); }; diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs index 1d070cc..c2f9458 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.MaxResponseHeadersLength.cs @@ -74,7 +74,7 @@ namespace System.Net.Http.Functional.Tests var cts = new CancellationTokenSource(); Task serverTask = Task.Run(async delegate { - await connection.ReadRequestHeaderAndSendResponseAsync("HTTP/1.1 200 OK\r\nContent-Length: 0\r\nMyInfiniteHeader: "); + await connection.ReadRequestHeaderAndSendCustomResponseAsync("HTTP/1.1 200 OK\r\nContent-Length: 0\r\nMyInfiniteHeader: "); try { while (!cts.IsCancellationRequested) @@ -118,7 +118,7 @@ namespace System.Net.Http.Functional.Tests await server.AcceptConnectionAsync(async connection => { - Task serverTask = connection.ReadRequestHeaderAndSendResponseAsync(responseHeaders); + Task serverTask = connection.ReadRequestHeaderAndSendCustomResponseAsync(responseHeaders); if (shouldSucceed) { diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs index c6e2920..0f96131 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.SslProtocols.cs @@ -61,7 +61,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( - server.AcceptConnectionSendDefaultResponseAndCloseAsync(), + server.AcceptConnectionSendResponseAndCloseAsync(), client.GetAsync(url)); }); Assert.Throws(() => handler.SslProtocols = SslProtocols.Tls12); @@ -119,7 +119,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( - server.AcceptConnectionSendDefaultResponseAndCloseAsync(), + server.AcceptConnectionSendResponseAndCloseAsync(), client.GetAsync(url)); }, options); } @@ -232,7 +232,7 @@ namespace System.Net.Http.Functional.Tests server.AcceptConnectionAsync(async connection => { Assert.Equal(SslProtocols.Tls12, Assert.IsType(connection.Stream).SslProtocol); - await connection.ReadRequestHeaderAndSendDefaultResponseAsync(); + await connection.ReadRequestHeaderAndSendResponseAsync(); })); }, options); } @@ -258,7 +258,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( - Assert.ThrowsAsync(exceptedServerException, () => server.AcceptConnectionSendDefaultResponseAndCloseAsync()), + Assert.ThrowsAsync(exceptedServerException, () => server.AcceptConnectionSendResponseAndCloseAsync()), Assert.ThrowsAsync(() => client.GetAsync(url))); }, options); } @@ -283,7 +283,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( - Assert.ThrowsAsync(() => server.AcceptConnectionSendDefaultResponseAndCloseAsync()), + Assert.ThrowsAsync(() => server.AcceptConnectionSendResponseAndCloseAsync()), Assert.ThrowsAsync(() => client.GetAsync(url))); }, options); @@ -293,7 +293,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( - server.AcceptConnectionSendDefaultResponseAndCloseAsync(), + server.AcceptConnectionSendResponseAndCloseAsync(), client.GetAsync(url)); }, options); } diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs index b770ce8..16249df 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.cs @@ -366,7 +366,7 @@ namespace System.Net.Http.Functional.Tests { _output.WriteLine(url.ToString()); await TestHelper.WhenAllCompletedOrAnyFailed( - server.AcceptConnectionSendDefaultResponseAndCloseAsync(), + server.AcceptConnectionSendResponseAndCloseAsync(), client.GetAsync(url)); }, options); } @@ -384,7 +384,7 @@ namespace System.Net.Http.Functional.Tests { _output.WriteLine(url.ToString()); await TestHelper.WhenAllCompletedOrAnyFailed( - server.AcceptConnectionSendDefaultResponseAndCloseAsync(), + server.AcceptConnectionSendResponseAndCloseAsync(), client.GetAsync(url)); }, options); } @@ -550,9 +550,6 @@ namespace System.Net.Http.Functional.Tests [InlineData("")] // RFC7235 requires servers to send this header with 401 but some servers don't. public async Task GetAsync_ServerNeedsNonStandardAuthAndSetCredential_StatusCodeUnauthorized(string authHeaders) { - string responseHeaders = - $"HTTP/1.1 401 Unauthorized\r\nDate: {DateTimeOffset.UtcNow:R}\r\n{authHeaders}Content-Length: 0\r\n\r\n"; - _output.WriteLine(responseHeaders); await LoopbackServer.CreateServerAsync(async (server, url) => { HttpClientHandler handler = CreateHttpClientHandler(); @@ -560,7 +557,7 @@ namespace System.Net.Http.Functional.Tests using (var client = new HttpClient(handler)) { Task getResponseTask = client.GetAsync(url); - Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(responseHeaders); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.Unauthorized); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); using (HttpResponseMessage response = await getResponseTask) @@ -616,17 +613,13 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (redirServer, redirUrl) => { // Original URL will redirect to a different URL - Task> serverTask = origServer.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 {statusCode} OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Location: {redirUrl}\r\n" + - "\r\n"); + Task> serverTask = origServer.AcceptConnectionSendResponseAndCloseAsync((HttpStatusCode)statusCode, $"Location: {redirUrl}\r\n"); await Task.WhenAny(getResponseTask, serverTask); Assert.False(getResponseTask.IsCompleted, $"{getResponseTask.Status}: {getResponseTask.Exception}"); await serverTask; // Redirected URL answers with success - serverTask = redirServer.AcceptConnectionSendDefaultResponseAndCloseAsync(); + serverTask = redirServer.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); List receivedRequest = await serverTask; @@ -726,10 +719,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { Task getTask = client.GetAsync(url); - Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 302 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - "\r\n"); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.Found); await TestHelper.WhenAllCompletedOrAnyFailed(getTask, serverTask); using (HttpResponseMessage response = await getTask) @@ -851,16 +841,11 @@ namespace System.Net.Http.Functional.Tests { Task getResponseTask = client.GetAsync(origUrl); - Task redirectTask = redirectServer.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task redirectTask = redirectServer.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed( getResponseTask, - origServer.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 {statusCode} OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Location: {redirectUrl}\r\n" + - "Content-Length: 0\r\n" + - "\r\n")); + origServer.AcceptConnectionSendResponseAndCloseAsync((HttpStatusCode)statusCode, $"Location: {redirectUrl}\r\n")); using (HttpResponseMessage response = await getResponseTask) { @@ -897,14 +882,10 @@ namespace System.Net.Http.Functional.Tests Uri expectedUrl = new Uri(origUrl.ToString() + expectedFragment); Task getResponse = client.GetAsync(origUrl); - Task firstRequest = origServer.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 302 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Location: {redirectUrl}\r\n" + - "\r\n"); + Task firstRequest = origServer.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.Found, $"Location: {redirectUrl}\r\n"); Assert.Equal(firstRequest, await Task.WhenAny(firstRequest, getResponse)); - Task secondRequest = origServer.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task secondRequest = origServer.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(secondRequest, getResponse); using (HttpResponseMessage response = await getResponse) @@ -1055,7 +1036,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.GetAsync(url); await TestHelper.WhenAllCompletedOrAnyFailed( getResponseTask, - server.AcceptConnectionSendResponseAndCloseAsync( + server.AcceptConnectionSendCustomResponseAndCloseAsync( "HTTP/1.1 200 OK\r\n" + "Transfer-Encoding: chunked\r\n" + (includeTrailerHeader ? "Trailer: MyCoolTrailerHeader\r\n" : "") + @@ -1096,7 +1077,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.GetAsync(url); await TestHelper.WhenAllCompletedOrAnyFailed( getResponseTask, - server.AcceptConnectionSendResponseAndCloseAsync( + server.AcceptConnectionSendCustomResponseAndCloseAsync( "HTTP/1.1 200 OK\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + @@ -1152,7 +1133,7 @@ namespace System.Net.Http.Functional.Tests var tcs = new TaskCompletionSource(); Task serverTask = server.AcceptConnectionAsync(async connection => { - await connection.ReadRequestHeaderAndSendResponseAsync(partialResponse); + await connection.ReadRequestHeaderAndSendCustomResponseAsync(partialResponse); await tcs.Task; }); @@ -1177,7 +1158,7 @@ namespace System.Net.Http.Functional.Tests var tcs = new TaskCompletionSource(); Task serverTask = server.AcceptConnectionAsync(async connection => { - await connection.ReadRequestHeaderAndSendResponseAsync("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"); + await connection.ReadRequestHeaderAndSendCustomResponseAsync("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"); TextWriter writer = connection.Writer; try { @@ -1273,7 +1254,7 @@ namespace System.Net.Http.Functional.Tests await server.AcceptConnectionAsync(async connection => { - await connection.ReadRequestHeaderAndSendResponseAsync( + await connection.ReadRequestHeaderAndSendCustomResponseAsync( "HTTP/1.1 200 OK\r\n" + $"Date: {DateTimeOffset.UtcNow:R}\r\n" + "Content-Length: 16000\r\n" + @@ -1324,14 +1305,14 @@ namespace System.Net.Http.Functional.Tests // Second server connects and sends some but not all headers Task serverTask2 = server2.AcceptConnectionAsync(async connection2 => { - await connection2.ReadRequestHeaderAndSendResponseAsync($"HTTP/1.1 200 OK\r\n"); + await connection2.ReadRequestHeaderAndSendCustomResponseAsync($"HTTP/1.1 200 OK\r\n"); await unblockServers.Task; }); // Third server connects and sends all headers and some but not all of the body Task serverTask3 = server3.AcceptConnectionAsync(async connection3 => { - await connection3.ReadRequestHeaderAndSendResponseAsync($"HTTP/1.1 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 20\r\n\r\n"); + await connection3.ReadRequestHeaderAndSendCustomResponseAsync($"HTTP/1.1 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 20\r\n\r\n"); await connection3.Writer.WriteAsync("1234567890"); await unblockServers.Task; await connection3.Writer.WriteAsync("1234567890"); @@ -1380,7 +1361,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = CreateHttpClient()) { Task getResponseTask = client.GetAsync(url); - await server.AcceptConnectionSendResponseAndCloseAsync( + await server.AcceptConnectionSendCustomResponseAndCloseAsync( $"HTTP/1.1 {statusCode}\r\n" + $"Date: {DateTimeOffset.UtcNow:R}\r\n" + "\r\n"); @@ -2082,7 +2063,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = CreateHttpClient()) { Task getResponse = client.SendAsync(request); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponse, serverTask); List receivedRequest = await serverTask; @@ -2265,7 +2246,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = CreateHttpClient()) { Task getResponseTask = client.SendAsync(request); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); List receivedRequest = await serverTask; diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs index 51af806..ad007e5 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs @@ -125,12 +125,7 @@ namespace System.Net.Http.Functional.Tests await LoopbackServer.CreateServerAsync(async (server, url) => { Task getTask = client.GetStringAsync(url); - Task serverTask = server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: {contentLength}\r\n" + - "\r\n" + - new string('s', contentLength)); + Task serverTask = server.AcceptConnectionSendResponseAndCloseAsync(content: new string('s', contentLength)); Task bothTasks = TestHelper.WhenAllCompletedOrAnyFailed(getTask, serverTask); if (exceptionExpected) @@ -417,7 +412,7 @@ namespace System.Net.Http.Functional.Tests await Task.Delay(TimeSpan.FromSeconds(.5)); await TestHelper.WhenAllCompletedOrAnyFailed( getTask, - server.AcceptConnectionSendDefaultResponseAndCloseAsync()); + server.AcceptConnectionSendResponseAndCloseAsync()); }); } } diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpCookieProtocolTests.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpCookieProtocolTests.cs index aecad6b..63fefdb 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpCookieProtocolTests.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpCookieProtocolTests.cs @@ -45,7 +45,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = CreateHttpClient()) { Task getResponseTask = client.GetAsync(url); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); List requestLines = await serverTask; @@ -68,7 +68,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = new HttpClient(handler)) { Task getResponseTask = client.GetAsync(url); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); List requestLines = await serverTask; @@ -111,7 +111,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = new HttpClient(handler)) { Task getResponseTask = client.GetAsync(url); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); List requestLines = await serverTask; @@ -141,7 +141,7 @@ namespace System.Net.Http.Functional.Tests requestMessage.Headers.Add("Cookie", s_customCookieHeaderValue); Task getResponseTask = client.SendAsync(requestMessage); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); List requestLines = await serverTask; @@ -171,7 +171,7 @@ namespace System.Net.Http.Functional.Tests requestMessage.Headers.Add("Cookie", "C=3"); Task getResponseTask = client.SendAsync(requestMessage); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); List requestLines = await serverTask; @@ -216,7 +216,7 @@ namespace System.Net.Http.Functional.Tests requestMessage.Headers.Add("Cookie", s_customCookieHeaderValue); Task getResponseTask = client.SendAsync(requestMessage); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); List requestLines = await serverTask; @@ -259,7 +259,7 @@ namespace System.Net.Http.Functional.Tests requestMessage.Headers.Add("Cookie", "B=2"); Task getResponseTask = client.SendAsync(requestMessage); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); List requestLines = await serverTask; @@ -321,14 +321,12 @@ namespace System.Net.Http.Functional.Tests }, async server => { - List request1Lines = await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 302 Found\r\nContent-Length: 0\r\nLocation: {path2}\r\nConnection: close\r\n\r\n"); + List request1Lines = await server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.Found, $"Location: {path2}\r\n"); Assert.Contains($"Cookie: cookie1=value1", request1Lines); Assert.Equal(1, request1Lines.Count(s => s.StartsWith("Cookie:"))); - List request2Lines = await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\nContent-Length: {s_simpleContent.Length}\r\n\r\n{s_simpleContent}"); + List request2Lines = await server.AcceptConnectionSendResponseAndCloseAsync(content: s_simpleContent); Assert.Contains($"Cookie: cookie2=value2", request2Lines); Assert.Equal(1, request2Lines.Count(s => s.StartsWith("Cookie:"))); @@ -352,7 +350,7 @@ namespace System.Net.Http.Functional.Tests { Task getResponseTask = client.GetAsync(url); Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 Ok\r\nContent-Length: {s_simpleContent.Length}\r\nSet-Cookie: {GetCookieHeaderValue(cookieName, cookieValue)}\r\n\r\n{s_simpleContent}"); + HttpStatusCode.OK, $"Set-Cookie: {GetCookieHeaderValue(cookieName, cookieValue)}\r\n", s_simpleContent); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); CookieCollection collection = handler.CookieContainer.GetCookies(url); @@ -382,14 +380,11 @@ namespace System.Net.Http.Functional.Tests { Task getResponseTask = client.GetAsync(url); Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + + HttpStatusCode.OK, $"Set-Cookie: A=1; Path=/\r\n" + $"Set-Cookie : B=2; Path=/\r\n" + // space before colon to verify header is trimmed and recognized - $"Set-Cookie: C=3; Path=/\r\n" + - $"Content-Length: {s_simpleContent.Length}\r\n" + - $"\r\n" + - $"{s_simpleContent}"); + $"Set-Cookie: C=3; Path=/\r\n", + s_simpleContent); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); CookieCollection collection = handler.CookieContainer.GetCookies(url); @@ -420,7 +415,7 @@ namespace System.Net.Http.Functional.Tests { Task getResponseTask = client.GetAsync(url); Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 Ok\r\nContent-Length: {s_simpleContent.Length}\r\nSet-Cookie: {s_cookieName}={newCookieValue}\r\n\r\n{s_simpleContent}"); + HttpStatusCode.OK, $"Set-Cookie: {s_cookieName}={newCookieValue}\r\n", s_simpleContent); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); CookieCollection collection = handler.CookieContainer.GetCookies(url); @@ -443,7 +438,7 @@ namespace System.Net.Http.Functional.Tests { Task getResponseTask = client.GetAsync(url); Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 Ok\r\nContent-Length: {s_simpleContent.Length}\r\nSet-Cookie: {s_cookieName}=; Expires=Sun, 06 Nov 1994 08:49:37 GMT\r\n\r\n{s_simpleContent}"); + HttpStatusCode.OK, $"Set-Cookie: {s_cookieName}=; Expires=Sun, 06 Nov 1994 08:49:37 GMT\r\n", s_simpleContent); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); CookieCollection collection = handler.CookieContainer.GetCookies(url); @@ -483,12 +478,12 @@ namespace System.Net.Http.Functional.Tests async server => { List request1Lines = await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 302 Found\r\nContent-Length: 0\r\nLocation: {path2}\r\nSet-Cookie: A=1; Path=/\r\nConnection: close\r\n\r\n"); + HttpStatusCode.Found, $"Location: {path2}\r\nSet-Cookie: A=1; Path=/\r\n"); Assert.Equal(0, request1Lines.Count(s => s.StartsWith("Cookie:"))); List request2Lines = await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\nContent-Length: {s_simpleContent.Length}\r\nSet-Cookie: B=2; Path=/\r\n\r\n{s_simpleContent}"); + HttpStatusCode.OK, $"Set-Cookie: B=2; Path=/\r\n", s_simpleContent); Assert.Contains($"Cookie: A=1", request2Lines); Assert.Equal(1, request2Lines.Count(s => s.StartsWith("Cookie:"))); @@ -530,11 +525,16 @@ namespace System.Net.Http.Functional.Tests { await server.AcceptConnectionAsync(async connection => { - List request1Lines = await connection.ReadRequestHeaderAndSendResponseAsync($"HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nWWW-Authenticate: Basic realm=\"WallyWorld\"\r\nSet-Cookie: A=1; Path=/\r\n\r\n"); + List request1Lines = await connection.ReadRequestHeaderAndSendResponseAsync( + HttpStatusCode.Unauthorized, + $"WWW-Authenticate: Basic realm=\"WallyWorld\"\r\nSet-Cookie: A=1; Path=/\r\n"); Assert.Equal(0, request1Lines.Count(s => s.StartsWith("Cookie:"))); - List request2Lines = await connection.ReadRequestHeaderAndSendResponseAsync($"HTTP/1.1 200 OK\r\nContent-Length: {s_simpleContent.Length}\r\nSet-Cookie: B=2; Path=/\r\n\r\n{s_simpleContent}"); + List request2Lines = await connection.ReadRequestHeaderAndSendResponseAsync( + HttpStatusCode.OK, + $"Set-Cookie: B=2; Path=/\r\n", + s_simpleContent); Assert.Contains($"Cookie: A=1", request2Lines); Assert.Equal(1, request2Lines.Count(s => s.StartsWith("Cookie:"))); diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpProtocolTests.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpProtocolTests.cs index 73490cf..3a37d77 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpProtocolTests.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpProtocolTests.cs @@ -28,7 +28,7 @@ namespace System.Net.Http.Functional.Tests request.Version = HttpVersion.Version10; Task getResponseTask = client.SendAsync(request); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); @@ -49,7 +49,7 @@ namespace System.Net.Http.Functional.Tests request.Version = HttpVersion.Version11; Task getResponseTask = client.SendAsync(request); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); @@ -83,7 +83,7 @@ namespace System.Net.Http.Functional.Tests request.Version = new Version(0, minorVersion); Task getResponseTask = client.SendAsync(request); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); if (exceptionType == null) { @@ -123,7 +123,7 @@ namespace System.Net.Http.Functional.Tests request.Version = new Version(majorVersion, minorVersion); Task getResponseTask = client.SendAsync(request); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); if (exceptionType == null) { @@ -153,7 +153,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.SendAsync(request); Task> serverTask = - server.AcceptConnectionSendResponseAndCloseAsync( + server.AcceptConnectionSendCustomResponseAndCloseAsync( $"HTTP/1.{responseMinorVersion} 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 0\r\n\r\n"); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); @@ -184,7 +184,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.SendAsync(request); Task> serverTask = - server.AcceptConnectionSendResponseAndCloseAsync( + server.AcceptConnectionSendCustomResponseAndCloseAsync( $"HTTP/1.{responseMinorVersion} 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 0\r\n\r\n"); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); @@ -229,7 +229,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.SendAsync(request); Task> serverTask = - server.AcceptConnectionSendResponseAndCloseAsync( + server.AcceptConnectionSendCustomResponseAndCloseAsync( $"HTTP/0.{responseMinorVersion} 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 0\r\n\r\n"); if (reportAs10) @@ -285,7 +285,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.SendAsync(request); Task> serverTask = - server.AcceptConnectionSendResponseAndCloseAsync( + server.AcceptConnectionSendCustomResponseAndCloseAsync( $"HTTP/{responseMajorVersion}.{responseMinorVersion} 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 0\r\n\r\n"); if (reportAs00) @@ -383,7 +383,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.GetAsync(url); await TestHelper.WhenAllCompletedOrAnyFailed( getResponseTask, - server.AcceptConnectionSendResponseAndCloseAsync( + server.AcceptConnectionSendCustomResponseAndCloseAsync( $"{statusLine}\r\n" + $"Date: {DateTimeOffset.UtcNow:R}\r\n" + "Content-Length: 0\r\n" + @@ -496,7 +496,7 @@ namespace System.Net.Http.Functional.Tests { using (HttpClient client = CreateHttpClient()) { - Task ignoredServerTask = server.AcceptConnectionSendResponseAndCloseAsync( + Task ignoredServerTask = server.AcceptConnectionSendCustomResponseAndCloseAsync( responseString + "\r\nContent-Length: 0\r\n\r\n"); await Assert.ThrowsAsync(() => client.GetAsync(url)); @@ -515,7 +515,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = CreateHttpClient()) { Task getResponseTask = client.GetAsync(url); - Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync( + Task> serverTask = server.AcceptConnectionSendCustomResponseAndCloseAsync( $"HTTP/1.1 200 OK{lineEnding}Date: {DateTimeOffset.UtcNow:R}{lineEnding}Server: TestServer{lineEnding}Content-Length: 0{lineEnding}{lineEnding}"); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpRetryProtocolTests.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpRetryProtocolTests.cs index ceb1272..9f5c5ea 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpRetryProtocolTests.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpRetryProtocolTests.cs @@ -15,12 +15,6 @@ namespace System.Net.Http.Functional.Tests public class HttpRetryProtocolTests : HttpClientTestBase { private static readonly string s_simpleContent = "Hello World\r\n"; - private static readonly string s_simpleResponse = - $"HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: {s_simpleContent.Length}\r\n" + - "\r\n" + - s_simpleContent; // Retry logic is supported by SocketsHttpHandler, CurlHandler, uap, and netfx. Only WinHttp does not support. private bool IsRetrySupported => !IsWinHttpHandler; @@ -56,14 +50,14 @@ namespace System.Net.Http.Functional.Tests await server.AcceptConnectionAsync(async connection => { // Initial response - await connection.ReadRequestHeaderAndSendResponseAsync(s_simpleResponse); + await connection.ReadRequestHeaderAndSendResponseAsync(content: s_simpleContent); // Second response: Read request headers, then close connection await connection.ReadRequestHeaderAsync(); }); // Client should reconnect. Accept that connection and send response. - await server.AcceptConnectionSendResponseAndCloseAsync(s_simpleResponse); + await server.AcceptConnectionSendResponseAndCloseAsync(content: s_simpleContent); }); } @@ -104,7 +98,7 @@ namespace System.Net.Http.Functional.Tests await server.AcceptConnectionAsync(async connection => { // Initial response - await connection.ReadRequestHeaderAndSendResponseAsync(s_simpleResponse); + await connection.ReadRequestHeaderAndSendResponseAsync(content: s_simpleContent); // Second response: Read request headers, then close connection List lines = await connection.ReadRequestHeaderAsync(); @@ -122,7 +116,7 @@ namespace System.Net.Http.Functional.Tests string contentLine = await connection.Reader.ReadLineAsync(); Assert.Equal(s_simpleContent, contentLine + "\r\n"); - await connection.Writer.WriteAsync(s_simpleResponse); + await connection.SendResponseAsync(content: s_simpleContent); }); }); } diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/IdnaProtocolTests.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/IdnaProtocolTests.cs index 7254ddc..75aa0ee 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/IdnaProtocolTests.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/IdnaProtocolTests.cs @@ -36,7 +36,7 @@ namespace System.Net.Http.Functional.Tests using (HttpClient client = new HttpClient(handler)) { Task getResponseTask = client.GetAsync(uri); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); @@ -69,7 +69,7 @@ namespace System.Net.Http.Functional.Tests request.Headers.Host = hostname; request.Headers.Referrer = uri; Task getResponseTask = client.SendAsync(request); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); @@ -102,7 +102,7 @@ namespace System.Net.Http.Functional.Tests { Task getResponseTask = client.GetAsync(serverUrl); Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 302 Redirect\r\nLocation: http://{uri.IdnHost}/\r\n\r\n"); + HttpStatusCode.Found, "Location: http://{uri.IdnHost}/\r\n"); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs index edf318a..5041ad0 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs @@ -281,7 +281,7 @@ namespace System.Net.Http.Functional.Tests Task getResponseTask = client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead); await server.AcceptConnectionAsync(async connection => { - Task> serverTask = connection.ReadRequestHeaderAndSendResponseAsync($"HTTP/1.1 101 Switching Protocols\r\nDate: {DateTimeOffset.UtcNow:R}\r\n\r\n"); + Task> serverTask = connection.ReadRequestHeaderAndSendCustomResponseAsync($"HTTP/1.1 101 Switching Protocols\r\nDate: {DateTimeOffset.UtcNow:R}\r\n\r\n"); await TestHelper.WhenAllCompletedOrAnyFailed(getResponseTask, serverTask); @@ -375,7 +375,7 @@ namespace System.Net.Http.Functional.Tests for (int i = 0; i < 2; i++) { Task request = client.GetStringAsync(uri); - await server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + await server.AcceptConnectionSendResponseAndCloseAsync(); await request; if (i == 0) @@ -405,14 +405,14 @@ namespace System.Net.Http.Functional.Tests Task request1 = client.GetStringAsync(uri); await server.AcceptConnectionAsync(async connection1 => { - await connection1.ReadRequestHeaderAndSendResponseAsync(responseBody); + await connection1.ReadRequestHeaderAndSendCustomResponseAsync(responseBody); await request1; // Make second request and expect it to be served from a different connection. Task request2 = client.GetStringAsync(uri); await server.AcceptConnectionAsync(async connection2 => { - await connection2.ReadRequestHeaderAndSendResponseAsync(responseBody); + await connection2.ReadRequestHeaderAndSendCustomResponseAsync(responseBody); await request2; }); }); @@ -442,7 +442,7 @@ namespace System.Net.Http.Functional.Tests Task request1 = client.GetStringAsync(uri); await server.AcceptConnectionAsync(async connection => { - await connection.ReadRequestHeaderAndSendDefaultResponseAsync(); + await connection.ReadRequestHeaderAndSendResponseAsync(); await request1; // Wait a small amount of time before making the second request, to give the first request time to timeout. @@ -452,7 +452,7 @@ namespace System.Net.Http.Functional.Tests Task request2 = client.GetStringAsync(uri); await server.AcceptConnectionAsync(async connection2 => { - await connection2.ReadRequestHeaderAndSendDefaultResponseAsync(); + await connection2.ReadRequestHeaderAndSendResponseAsync(); await request2; }); }); diff --git a/src/libraries/System.Net.Requests/tests/HttpWebRequestTest.cs b/src/libraries/System.Net.Requests/tests/HttpWebRequestTest.cs index 5ecbc59..c898efd 100644 --- a/src/libraries/System.Net.Requests/tests/HttpWebRequestTest.cs +++ b/src/libraries/System.Net.Requests/tests/HttpWebRequestTest.cs @@ -173,7 +173,7 @@ namespace System.Net.Tests { HttpWebRequest request = WebRequest.CreateHttp(uri); Task getResponse = request.GetResponseAsync(); - await server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + await server.AcceptConnectionSendResponseAndCloseAsync(); using (WebResponse response = await getResponse) { Assert.Throws(() => request.AutomaticDecompression = DecompressionMethods.Deflate); @@ -745,7 +745,7 @@ namespace System.Net.Tests request.ProtocolVersion = requestVersion; Task getResponse = request.GetResponseAsync(); - Task> serverTask = server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + Task> serverTask = server.AcceptConnectionSendResponseAndCloseAsync(); using (HttpWebResponse response = (HttpWebResponse) await getResponse) { diff --git a/src/libraries/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs b/src/libraries/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs index eda49d5..76e9d44 100644 --- a/src/libraries/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs +++ b/src/libraries/System.Net.Requests/tests/HttpWebResponseHeaderTest.cs @@ -32,13 +32,7 @@ namespace System.Net.Tests request.ContinueDelegate = continueDelegate; Task getResponse = request.GetResponseAsync(); DateTimeOffset utcNow = DateTimeOffset.UtcNow; - await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {utcNow:R}\r\n" + - "Content-Type: application/json;charset=UTF-8\r\n" + - "Content-Length: 5\r\n" + - "\r\n" + - "12345"); + await server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.OK, "Content-Type: application/json;charset=UTF-8\r\n", "12345"); Assert.Equal(continueDelegate, request.ContinueDelegate); }); } @@ -53,13 +47,7 @@ namespace System.Net.Tests request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); DateTimeOffset utcNow = DateTimeOffset.UtcNow; - await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {utcNow:R}\r\n" + - "Content-Type: application/json;charset=UTF-8\r\n" + - "Content-Length: 5\r\n" + - "\r\n" + - "12345"); + await server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.OK, "Content-Type: application/json;charset=UTF-8\r\n", "12345"); using (WebResponse response = await getResponse) { @@ -86,13 +74,7 @@ namespace System.Net.Tests request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); DateTimeOffset utcNow = DateTimeOffset.UtcNow; - await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {utcNow:R}\r\n" + - "Content-Type: application/json;charset=UTF-8\r\n" + - "Content-Length: 5\r\n" + - "\r\n" + - "12345"); + await server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.OK, "Content-Type: application/json;charset=UTF-8\r\n", "12345"); WebResponse response = await getResponse; HttpWebResponse httpResponse = (HttpWebResponse)response; httpResponse.Close(); @@ -121,11 +103,7 @@ namespace System.Net.Tests request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); DateTimeOffset utcNow = DateTimeOffset.UtcNow; - await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {utcNow:R}\r\n" + - "Content-Length: 0\r\n" + - "\r\n"); + await server.AcceptConnectionSendResponseAndCloseAsync(); using (WebResponse response = await getResponse) { diff --git a/src/libraries/System.Net.Requests/tests/HttpWebResponseTest.cs b/src/libraries/System.Net.Requests/tests/HttpWebResponseTest.cs index 3386dda..d60921b 100644 --- a/src/libraries/System.Net.Requests/tests/HttpWebResponseTest.cs +++ b/src/libraries/System.Net.Requests/tests/HttpWebResponseTest.cs @@ -23,13 +23,7 @@ namespace System.Net.Tests HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); - await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Type: {expectedContentType}\r\n" + - "Content-Length: 5\r\n" + - "\r\n" + - "12345"); + await server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.OK, $"Content-Type: {expectedContentType}\r\n", "12345"); using (WebResponse response = await getResponse) { @@ -46,12 +40,7 @@ namespace System.Net.Tests HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); - await server.AcceptConnectionSendResponseAndCloseAsync( - $"HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - "Content-Length: 5\r\n" + - "\r\n" + - "12345"); + await server.AcceptConnectionSendResponseAndCloseAsync(content: "12345"); using (WebResponse response = await getResponse) { diff --git a/src/libraries/System.Net.WebClient/tests/WebClientTest.cs b/src/libraries/System.Net.WebClient/tests/WebClientTest.cs index 9555bcc..45d3291 100644 --- a/src/libraries/System.Net.WebClient/tests/WebClientTest.cs +++ b/src/libraries/System.Net.WebClient/tests/WebClientTest.cs @@ -374,12 +374,7 @@ namespace System.Net.Tests { Task download = wc.DownloadStringTaskAsync(url.ToString()); Assert.Null(wc.ResponseHeaders); - await server.AcceptConnectionSendResponseAndCloseAsync( - "HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: 0\r\n" + - "ArbitraryHeader: ArbitraryValue\r\n" + - "\r\n"); + await server.AcceptConnectionSendResponseAndCloseAsync(additionalHeaders: "ArbitraryHeader: ArbitraryValue\r\n"); await download; }); @@ -430,7 +425,7 @@ namespace System.Net.Tests { Task download = wc.DownloadStringTaskAsync(url.ToString()); Assert.Null(wc.ResponseHeaders); - await server.AcceptConnectionSendDefaultResponseAndCloseAsync(); + await server.AcceptConnectionSendResponseAndCloseAsync(); await download; }); } @@ -518,12 +513,7 @@ namespace System.Net.Tests } Task download = DownloadStringAsync(wc, url.ToString()); - await server.AcceptConnectionSendResponseAndCloseAsync( - "HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: {ExpectedText.Length}\r\n" + - "\r\n" + - $"{ExpectedText}"); + await server.AcceptConnectionSendResponseAndCloseAsync(content: ExpectedText); Assert.Equal(ExpectedText, await download); }); } @@ -539,12 +529,7 @@ namespace System.Net.Tests wc.DownloadProgressChanged += (s, e) => downloadProgressInvoked.TrySetResult(true); Task download = DownloadDataAsync(wc, url.ToString()); - await server.AcceptConnectionSendResponseAndCloseAsync( - "HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: {ExpectedText.Length}\r\n" + - "\r\n" + - $"{ExpectedText}"); + await server.AcceptConnectionSendResponseAndCloseAsync(content: ExpectedText); Assert.Equal(ExpectedText, Encoding.ASCII.GetString(await download)); if (IsAsync) @@ -572,12 +557,7 @@ namespace System.Net.Tests }; Task download = DownloadDataAsync(wc, url.ToString()); - await server.AcceptConnectionSendResponseAndCloseAsync( - "HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: {largeText.Length}\r\n" + - "\r\n" + - $"{largeText}"); + await server.AcceptConnectionSendResponseAndCloseAsync(content: largeText); Assert.Equal(largeText, Encoding.ASCII.GetString(await download)); if (IsAsync) @@ -597,12 +577,7 @@ namespace System.Net.Tests { var wc = new WebClient(); Task download = DownloadFileAsync(wc, url.ToString(), tempPath); - await server.AcceptConnectionSendResponseAndCloseAsync( - "HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: {ExpectedText.Length}\r\n" + - "\r\n" + - $"{ExpectedText}"); + await server.AcceptConnectionSendResponseAndCloseAsync(content: ExpectedText); await download; Assert.Equal(ExpectedText, File.ReadAllText(tempPath)); @@ -621,12 +596,7 @@ namespace System.Net.Tests { var wc = new WebClient(); Task download = OpenReadAsync(wc, url.ToString()); - await server.AcceptConnectionSendResponseAndCloseAsync( - "HTTP/1.1 200 OK\r\n" + - $"Date: {DateTimeOffset.UtcNow:R}\r\n" + - $"Content-Length: {ExpectedText.Length}\r\n" + - "\r\n" + - $"{ExpectedText}"); + await server.AcceptConnectionSendResponseAndCloseAsync(content: ExpectedText); using (var reader = new StreamReader(await download)) { -- 2.7.4