diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-12-13 19:51:34 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-13 14:21:34 +0000 |
commit | 461ef6bdd80347caa12934c2c16337bc8d40d9a4 (patch) | |
tree | d87c365ec1e4bf35e977f13fb0ad0e8675500be9 /cli/tests/unit/websocket_test.ts | |
parent | 346d8127095f46bd5c58667f860521690ddd9cd7 (diff) |
fix(websockets): server socket field initialization (#21433)
Diffstat (limited to 'cli/tests/unit/websocket_test.ts')
-rw-r--r-- | cli/tests/unit/websocket_test.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/cli/tests/unit/websocket_test.ts b/cli/tests/unit/websocket_test.ts index 7bc53495a..a31e71e04 100644 --- a/cli/tests/unit/websocket_test.ts +++ b/cli/tests/unit/websocket_test.ts @@ -365,3 +365,42 @@ Deno.test(async function websocketTlsSocketWorks() { await finished; }); + +// https://github.com/denoland/deno/issues/15340 +Deno.test( + async function websocketServerFieldInit() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (req) => { + const { socket, response } = Deno.upgradeWebSocket(req, { + idleTimeout: 0, + }); + socket.onopen = function () { + assert(typeof socket.url == "string"); + assert(socket.readyState == WebSocket.OPEN); + assert(socket.protocol == ""); + socket.close(); + }; + socket.onclose = () => ac.abort(); + return response; + }, + signal: ac.signal, + onListen: () => listeningDeferred.resolve(), + hostname: "localhost", + port: servePort, + }); + + await listeningDeferred.promise; + const deferred = Promise.withResolvers<void>(); + const ws = new WebSocket(serveUrl); + assertEquals(ws.url, serveUrl); + ws.onerror = () => fail(); + ws.onclose = () => { + deferred.resolve(); + }; + + await Promise.all([deferred.promise, server.finished]); + }, +); |