@@ -9,6 +9,7 @@ import * as errors from '@/errors';
9
9
import { fc } from '@fast-check/jest' ;
10
10
import * as tlsUtils from './tlsUtils' ;
11
11
import * as certFixtures from './fixtures/certFixtures' ;
12
+ import { promise } from "@/utils" ;
12
13
13
14
const tlsArb = fc . oneof (
14
15
certFixtures . tlsConfigExampleArb ,
@@ -243,6 +244,43 @@ describe(QUICClient.name, () => {
243
244
await server . stop ( ) ;
244
245
} ) ;
245
246
} )
247
+ describe ( 'graceful tls handshake' , ( ) => {
248
+ test ( 'handshake succeeds' , async ( ) => {
249
+ const server = new QUICServer ( {
250
+ crypto,
251
+ logger : logger . getChild ( QUICServer . name ) ,
252
+ config : {
253
+ tlsConfig : certFixtures . tlsConfigFileRSA1 ,
254
+ verifyPeer : true ,
255
+ verifyFromPemFile : certFixtures . tlsConfigFileRSA2 . certChainFromPemFile
256
+ }
257
+ } ) ;
258
+ const handleConnectionEventProm = promise < any > ( )
259
+ server . addEventListener ( 'connection' , handleConnectionEventProm . resolveP ) ;
260
+ await server . start ( {
261
+ host : '127.0.0.1' as Host ,
262
+ } ) ;
263
+ // Connection should succeed
264
+ const client = await QUICClient . createQUICClient ( {
265
+ host : '::ffff:127.0.0.1' as Host ,
266
+ port : server . port ,
267
+ localHost : '::' as Host ,
268
+ crypto,
269
+ logger : logger . getChild ( QUICClient . name ) ,
270
+ config : {
271
+ verifyPeer : false ,
272
+ tlsConfig : certFixtures . tlsConfigFileRSA2 ,
273
+ verifyFromPemFile : certFixtures . tlsConfigFileRSA2 . certChainFromPemFile
274
+ }
275
+ } ) ;
276
+ await handleConnectionEventProm . p
277
+ await client . destroy ( ) ;
278
+ await server . stop ( ) ;
279
+ } )
280
+ test . todo ( 'handshake fails validation for server' )
281
+ test . todo ( 'handshake fails validation for client' )
282
+ test . todo ( 'handshake fails validation for both' )
283
+ } )
246
284
247
285
// test('dual stack to dual stack', async () => {
248
286
0 commit comments