summaryrefslogtreecommitdiff
path: root/cli/tests/unit/websocket_test.ts
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-12-13 19:51:34 +0530
committerGitHub <noreply@github.com>2023-12-13 14:21:34 +0000
commit461ef6bdd80347caa12934c2c16337bc8d40d9a4 (patch)
treed87c365ec1e4bf35e977f13fb0ad0e8675500be9 /cli/tests/unit/websocket_test.ts
parent346d8127095f46bd5c58667f860521690ddd9cd7 (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.ts39
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]);
+ },
+);