From afddf9ace1cbd643e98dac9ab4efc74c55841325 Mon Sep 17 00:00:00 2001 From: Geoffrey Kizer Date: Thu, 1 Apr 2021 00:11:53 -0700 Subject: [PATCH] add Http1ConnectResponseStreamConformanceTests --- .../ResponseStreamConformanceTests.cs | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/ResponseStreamConformanceTests.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/ResponseStreamConformanceTests.cs index 37b93847ccccb..ca396024393b8 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/ResponseStreamConformanceTests.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/ResponseStreamConformanceTests.cs @@ -22,7 +22,7 @@ protected override async Task CreateConnectedStreamsAsync() } } - public sealed class Http1RawResponseStreamConformanceTests : ResponseConnectedStreamConformanceTests + public sealed class Http1UpgradeResponseStreamConformanceTests : ResponseConnectedStreamConformanceTests { protected override string GetResponseHeaders() => "HTTP/1.1 101 Switching Protocols\r\n\r\n"; @@ -35,6 +35,26 @@ protected override async Task CreateConnectedStreamsAsync() } } + public sealed class Http1ConnectResponseStreamConformanceTests : ResponseConnectedStreamConformanceTests + { + protected override string GetResponseHeaders() => "HTTP/1.1 200 OK\r\n\r\n"; + + protected override HttpRequestMessage GetHttpRequestMessage() + { + var request = new HttpRequestMessage(new HttpMethod("CONNECT"), $"http://doesntmatter:12345/"); + request.Headers.Host = "doesntmatter:12345"; + return request; + } + + protected override async Task CreateConnectedStreamsAsync() + { + StreamPair pair = await base.CreateConnectedStreamsAsync(); + Assert.True(pair.Stream2.CanWrite); + Assert.True(pair.Stream2.CanRead); + return pair; + } + } + public sealed class Http1ContentLengthResponseStreamConformanceTests : ResponseStandaloneStreamConformanceTests { protected override async Task WriteResponseAsync(Stream responseStream, byte[] bodyData) @@ -83,12 +103,15 @@ public abstract class ResponseConnectedStreamConformanceTests : ConnectedStreamC protected abstract string GetResponseHeaders(); + protected virtual HttpRequestMessage GetHttpRequestMessage() => + new HttpRequestMessage(HttpMethod.Get, $"http://doesntmatter:12345/"); + protected override async Task CreateConnectedStreamsAsync() { (Stream httpConnection, Stream server) = ConnectedStreams.CreateBidirectional(4096, int.MaxValue); using var hc = new HttpClient(new SocketsHttpHandler() { ConnectCallback = delegate { return ValueTask.FromResult(httpConnection); } }); - Task clientTask = hc.SendAsync(new HttpRequestMessage(HttpMethod.Get, $"http://doesntmatter:12345/"), HttpCompletionOption.ResponseHeadersRead); + Task clientTask = hc.SendAsync(GetHttpRequestMessage(), HttpCompletionOption.ResponseHeadersRead); await ReadHeadersAsync(server);