diff options
Diffstat (limited to 'cli/tests/unit/tls_test.ts')
-rw-r--r-- | cli/tests/unit/tls_test.ts | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/cli/tests/unit/tls_test.ts b/cli/tests/unit/tls_test.ts index 860965e49..df82f6ef6 100644 --- a/cli/tests/unit/tls_test.ts +++ b/cli/tests/unit/tls_test.ts @@ -1376,3 +1376,54 @@ Deno.test( await Promise.all([server(), startTlsClient()]); }, ); + +Deno.test( + { permissions: { read: false, net: true } }, + async function listenTlsWithReuseAddr() { + const resolvable1 = deferred(); + const hostname = "localhost"; + const port = 3500; + + const listener1 = Deno.listenTls({ hostname, port, cert, key }); + + const response1 = encoder.encode( + "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n", + ); + + listener1.accept().then( + async (conn) => { + await conn.write(response1); + setTimeout(() => { + conn.close(); + resolvable1.resolve(); + }, 0); + }, + ); + + const conn1 = await Deno.connectTls({ hostname, port, caCerts }); + conn1.close(); + listener1.close(); + await resolvable1; + + const resolvable2 = deferred(); + const listener2 = Deno.listenTls({ hostname, port, cert, key }); + const response2 = encoder.encode( + "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n", + ); + + listener2.accept().then( + async (conn) => { + await conn.write(response2); + setTimeout(() => { + conn.close(); + resolvable2.resolve(); + }, 0); + }, + ); + + const conn2 = await Deno.connectTls({ hostname, port, caCerts }); + conn2.close(); + listener2.close(); + await resolvable2; + }, +); |