Skip to content

Commit 3bba24a

Browse files
committed
tests
1 parent bd94496 commit 3bba24a

File tree

1 file changed

+38
-10
lines changed

1 file changed

+38
-10
lines changed

src/Servers/Kestrel/Core/test/TlsListenerTests.cs

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,41 @@ public async Task RunTlsClientHelloCallbackTest_WithPreCancelledToken()
6363
var transportConnection = new DefaultConnectionContext("test", transport, transport);
6464

6565
var tlsClientHelloCallbackInvoked = false;
66-
var middleware = new TlsListener((ctx, data) => { tlsClientHelloCallbackInvoked = true; });
66+
var listener = new TlsListener((ctx, data) => { tlsClientHelloCallbackInvoked = true; });
6767

6868
var cts = new CancellationTokenSource();
6969
cts.Cancel();
7070

7171
await writer.WriteAsync(new byte[1] { 0x16 });
72-
await middleware.OnTlsClientHelloAsync(transportConnection, cts.Token);
72+
await Assert.ThrowsAsync<OperationCanceledException>(async () =>
73+
{
74+
await listener.OnTlsClientHelloAsync(transportConnection, cts.Token);
75+
});
76+
Assert.False(tlsClientHelloCallbackInvoked);
77+
}
78+
79+
[Fact]
80+
public async Task RunTlsClientHelloCallbackTest_WithPendingCancellation()
81+
{
82+
var serviceContext = new TestServiceContext();
83+
84+
var pipe = new Pipe();
85+
var writer = pipe.Writer;
86+
var reader = new ObservablePipeReader(pipe.Reader);
87+
88+
var transport = new DuplexPipe(reader, writer);
89+
var transportConnection = new DefaultConnectionContext("test", transport, transport);
90+
91+
var tlsClientHelloCallbackInvoked = false;
92+
var listener = new TlsListener((ctx, data) => { tlsClientHelloCallbackInvoked = true; });
93+
94+
var cts = new CancellationTokenSource();
95+
await writer.WriteAsync(new byte[1] { 0x16 });
96+
var listenerTask = listener.OnTlsClientHelloAsync(transportConnection, cts.Token);
97+
await writer.WriteAsync(new byte[2] { 0x03, 0x01 });
98+
cts.Cancel();
99+
100+
await Assert.ThrowsAsync<OperationCanceledException>(async () => await listenerTask);
73101
Assert.False(tlsClientHelloCallbackInvoked);
74102
}
75103

@@ -90,15 +118,15 @@ public async Task RunTlsClientHelloCallbackTest_DeterministicallyReads()
90118
var transportConnection = new DefaultConnectionContext("test", transport, transport);
91119

92120
var tlsClientHelloCallbackInvoked = false;
93-
var middleware = new TlsListener((ctx, data) => { tlsClientHelloCallbackInvoked = true; });
121+
var listener = new TlsListener((ctx, data) => { tlsClientHelloCallbackInvoked = true; });
94122

95123
await writer.WriteAsync(new byte[1] { 0x16 });
96-
var middlewareTask = middleware.OnTlsClientHelloAsync(transportConnection, CancellationToken.None);
124+
var listenerTask = listener.OnTlsClientHelloAsync(transportConnection, CancellationToken.None);
97125
await writer.WriteAsync(new byte[2] { 0x03, 0x01 });
98126
await writer.WriteAsync(new byte[2] { 0x00, 0x20 });
99127
await writer.CompleteAsync();
100128

101-
await middlewareTask;
129+
await listenerTask;
102130
Assert.False(tlsClientHelloCallbackInvoked);
103131

104132
var readResult = await reader.ReadAsync();
@@ -124,7 +152,7 @@ private async Task RunTlsClientHelloCallbackTest_WithMultipleSegments(
124152

125153
var fullLength = packets.Sum(p => p.Length);
126154

127-
var middleware = new TlsListener(
155+
var listener = new TlsListener(
128156
tlsClientHelloBytesCallback: (ctx, data) =>
129157
{
130158
tlsClientHelloCallbackActual = true;
@@ -137,7 +165,7 @@ private async Task RunTlsClientHelloCallbackTest_WithMultipleSegments(
137165

138166
// write first packet
139167
await writer.WriteAsync(packets[0]);
140-
var middlewareTask = middleware.OnTlsClientHelloAsync(transportConnection, CancellationToken.None);
168+
var listenerTask = listener.OnTlsClientHelloAsync(transportConnection, CancellationToken.None);
141169

142170
/* It is a race condition (middleware's loop and writes here).
143171
* We don't know specifically how many packets will be read by middleware's loop
@@ -151,7 +179,7 @@ private async Task RunTlsClientHelloCallbackTest_WithMultipleSegments(
151179
await writer.WriteAsync(packet);
152180
}
153181
await writer.CompleteAsync();
154-
await middlewareTask;
182+
await listenerTask;
155183

156184
Assert.Equal(tlsClientHelloCallbackExpected, tlsClientHelloCallbackActual);
157185

@@ -175,7 +203,7 @@ private async Task RunTlsClientHelloCallbackTest(
175203

176204
var tlsClientHelloCallbackActual = false;
177205

178-
var middleware = new TlsListener(
206+
var listener = new TlsListener(
179207
tlsClientHelloBytesCallback: (ctx, data) =>
180208
{
181209
tlsClientHelloCallbackActual = true;
@@ -190,7 +218,7 @@ private async Task RunTlsClientHelloCallbackTest(
190218
await writer.CompleteAsync();
191219

192220
// call middleware and expect a callback
193-
await middleware.OnTlsClientHelloAsync(transportConnection, CancellationToken.None);
221+
await listener.OnTlsClientHelloAsync(transportConnection, CancellationToken.None);
194222

195223
Assert.Equal(tlsClientHelloCallbackExpected, tlsClientHelloCallbackActual);
196224

0 commit comments

Comments
 (0)