summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2022-01-05 17:41:44 +0100
committerGitHub <noreply@github.com>2022-01-05 17:41:44 +0100
commitc40419b55beda0f69c5d59c7eded369c6af66f0e (patch)
tree7423528ff8f7223595a15ef2771c8f99f9e618cb /cli/tests
parentc74eb7a889322e88173cb044a670602d124fcc67 (diff)
feat(ext/websocket): add header support to WebSocketStream (#11887)
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/testdata/websocketstream_test.ts57
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();
+});