diff options
author | Leo Kettmeir <crowlkats@toaxl.com> | 2022-01-05 17:41:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-05 17:41:44 +0100 |
commit | c40419b55beda0f69c5d59c7eded369c6af66f0e (patch) | |
tree | 7423528ff8f7223595a15ef2771c8f99f9e618cb /cli/tests | |
parent | c74eb7a889322e88173cb044a670602d124fcc67 (diff) |
feat(ext/websocket): add header support to WebSocketStream (#11887)
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/testdata/websocketstream_test.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cli/tests/testdata/websocketstream_test.ts b/cli/tests/testdata/websocketstream_test.ts index 1198c4164..b43b90139 100644 --- a/cli/tests/testdata/websocketstream_test.ts +++ b/cli/tests/testdata/websocketstream_test.ts @@ -3,6 +3,7 @@ import { assert, assertEquals, + assertNotEquals, assertRejects, assertThrows, unreachable, @@ -137,3 +138,59 @@ Deno.test("aborting immediately with a primitive as reason throws that primitive (e) => assertEquals(e, "Some string"), ); }); + +Deno.test("headers", async () => { + const listener = Deno.listen({ port: 4501 }); + const promise = (async () => { + const httpConn = Deno.serveHttp(await listener.accept()); + const { request, respondWith } = (await httpConn.nextRequest())!; + assertEquals(request.headers.get("x-some-header"), "foo"); + const { + response, + socket, + } = Deno.upgradeWebSocket(request); + socket.onopen = () => socket.close(); + await respondWith(response); + })(); + + const ws = new WebSocketStream("ws://localhost:4501", { + headers: [["x-some-header", "foo"]], + }); + await promise; + await ws.closed; + listener.close(); +}); + +Deno.test("forbidden headers", async () => { + const forbiddenHeaders = [ + "sec-websocket-accept", + "sec-websocket-extensions", + "sec-websocket-key", + "sec-websocket-protocol", + "sec-websocket-version", + "upgrade", + "connection", + ]; + + const listener = Deno.listen({ port: 4501 }); + const promise = (async () => { + const httpConn = Deno.serveHttp(await listener.accept()); + const { request, respondWith } = (await httpConn.nextRequest())!; + for (const header of request.headers.keys()) { + assertNotEquals(header, "foo"); + } + const { + response, + socket, + } = Deno.upgradeWebSocket(request); + socket.onopen = () => socket.close(); + await respondWith(response); + })(); + + const ws = new WebSocketStream("ws://localhost:4501", { + headers: forbiddenHeaders.map((header) => [header, "foo"]), + }); + await promise; + await ws.closed; + listener.close(); +}); |