2828
2929namespace Microsoft . AspNetCore . Server . Kestrel . Core . Tests ;
3030
31- public class TlsListenerMiddlewareTests
31+ public class TlsListenerTests
3232{
3333 [ Theory ]
3434 [ MemberData ( nameof ( ValidClientHelloData ) ) ]
@@ -50,6 +50,29 @@ public Task OnTlsClientHelloAsync_ValidData_MultipleSegments(int id, List<byte[]
5050 public Task OnTlsClientHelloAsync_InvalidData_MultipleSegments ( int id , List < byte [ ] > packets )
5151 => RunTlsClientHelloCallbackTest_WithMultipleSegments ( id , packets , tlsClientHelloCallbackExpected : false ) ;
5252
53+ [ Fact ]
54+ public async Task RunTlsClientHelloCallbackTest_WithPreCancelledToken ( )
55+ {
56+ var serviceContext = new TestServiceContext ( ) ;
57+
58+ var pipe = new Pipe ( ) ;
59+ var writer = pipe . Writer ;
60+ var reader = new ObservablePipeReader ( pipe . Reader ) ;
61+
62+ var transport = new DuplexPipe ( reader , writer ) ;
63+ var transportConnection = new DefaultConnectionContext ( "test" , transport , transport ) ;
64+
65+ var tlsClientHelloCallbackInvoked = false ;
66+ var middleware = new TlsListener ( ( ctx , data ) => { tlsClientHelloCallbackInvoked = true ; } ) ;
67+
68+ var cts = new CancellationTokenSource ( ) ;
69+ cts . Cancel ( ) ;
70+
71+ await writer . WriteAsync ( new byte [ 1 ] { 0x16 } ) ;
72+ await middleware . OnTlsClientHelloAsync ( transportConnection , cts . Token ) ;
73+ Assert . False ( tlsClientHelloCallbackInvoked ) ;
74+ }
75+
5376 [ Fact ]
5477 public async Task RunTlsClientHelloCallbackTest_DeterministicallyReads ( )
5578 {
0 commit comments