summaryrefslogtreecommitdiff
path: root/cli/tests/unit/websocketstream_test.ts.disabled
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-10 13:22:13 -0700
committerGitHub <noreply@github.com>2024-02-10 20:22:13 +0000
commitf5e46c9bf2f50d66a953fa133161fc829cecff06 (patch)
tree8faf2f5831c1c7b11d842cd9908d141082c869a5 /cli/tests/unit/websocketstream_test.ts.disabled
parentd2477f780630a812bfd65e3987b70c0d309385bb (diff)
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests -> tests, and updates of relative paths for files. This is the first step towards aggregate all of the integration test files under tests/, which will lead to a set of integration tests that can run without the CLI binary being built. While we could leave these tests under `cli`, it would require us to keep a more complex directory structure for the various test runners. In addition, we have a lot of complexity to ignore various test files in the `cli` project itself (cargo publish exclusion rules, autotests = false, etc). And finally, the `tests/` folder will eventually house the `test_ffi`, `test_napi` and other testing code, reducing the size of the root repo directory. For easier review, the extremely large and noisy "move" is in the first commit (with no changes -- just a move), while the remainder of the changes to actual files is in the second commit.
Diffstat (limited to 'cli/tests/unit/websocketstream_test.ts.disabled')
-rw-r--r--cli/tests/unit/websocketstream_test.ts.disabled359
1 files changed, 0 insertions, 359 deletions
diff --git a/cli/tests/unit/websocketstream_test.ts.disabled b/cli/tests/unit/websocketstream_test.ts.disabled
deleted file mode 100644
index eaedb71bd..000000000
--- a/cli/tests/unit/websocketstream_test.ts.disabled
+++ /dev/null
@@ -1,359 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-import {
- assertEquals,
- assertNotEquals,
- assertRejects,
- assertThrows,
- unreachable,
-} from "@test_util/std/assert/mod.ts";
-
-Deno.test("fragment", () => {
- assertThrows(() => new WebSocketStream("ws://localhost:4242/#"));
- assertThrows(() => new WebSocketStream("ws://localhost:4242/#foo"));
-});
-
-Deno.test("duplicate protocols", () => {
- assertThrows(() =>
- new WebSocketStream("ws://localhost:4242", {
- protocols: ["foo", "foo"],
- })
- );
-});
-
-Deno.test(
- "connect & close custom valid code",
- { sanitizeOps: false },
- async () => {
- const ws = new WebSocketStream("ws://localhost:4242");
- await ws.opened;
- ws.close({ code: 1000 });
- await ws.closed;
- },
-);
-
-Deno.test(
- "connect & close custom invalid reason",
- { sanitizeOps: false },
- async () => {
- const ws = new WebSocketStream("ws://localhost:4242");
- await ws.opened;
- assertThrows(() => ws.close({ code: 1000, reason: "".padEnd(124, "o") }));
- ws.close();
- await ws.closed;
- },
-);
-
-Deno.test("echo string", { sanitizeOps: false }, async () => {
- const ws = new WebSocketStream("ws://localhost:4242");
- const { readable, writable } = await ws.opened;
- await writable.getWriter().write("foo");
- const res = await readable.getReader().read();
- assertEquals(res.value, "foo");
- ws.close();
- await ws.closed;
-});
-
-// TODO(mmastrac): This fails -- perhaps it isn't respecting the TLS settings?
-Deno.test("echo string tls", { ignore: true }, async () => {
- const ws = new WebSocketStream("wss://localhost:4243");
- const { readable, writable } = await ws.opened;
- await writable.getWriter().write("foo");
- const res = await readable.getReader().read();
- assertEquals(res.value, "foo");
- ws.close();
- await ws.closed;
-});
-
-Deno.test("websocket error", { sanitizeOps: false }, async () => {
- const ws = new WebSocketStream("wss://localhost:4242");
- await Promise.all([
- // TODO(mmastrac): this exception should be tested
- assertRejects(
- () => ws.opened,
- // Deno.errors.UnexpectedEof,
- // "tls handshake eof",
- ),
- // TODO(mmastrac): this exception should be tested
- assertRejects(
- () => ws.closed,
- // Deno.errors.UnexpectedEof,
- // "tls handshake eof",
- ),
- ]);
-});
-
-Deno.test("echo uint8array", { sanitizeOps: false }, async () => {
- const ws = new WebSocketStream("ws://localhost:4242");
- const { readable, writable } = await ws.opened;
- const uint = new Uint8Array([102, 111, 111]);
- await writable.getWriter().write(uint);
- const res = await readable.getReader().read();
- assertEquals(res.value, uint);
- ws.close();
- await ws.closed;
-});
-
-Deno.test("aborting immediately throws an AbortError", async () => {
- const controller = new AbortController();
- const wss = new WebSocketStream("ws://localhost:4242", {
- signal: controller.signal,
- });
- controller.abort();
- // TODO(mmastrac): this exception should be tested
- await assertRejects(
- () => wss.opened,
- // (error: Error) => {
- // assert(error instanceof DOMException);
- // assertEquals(error.name, "AbortError");
- // },
- );
- // TODO(mmastrac): this exception should be tested
- await assertRejects(
- () => wss.closed,
- // (error: Error) => {
- // assert(error instanceof DOMException);
- // assertEquals(error.name, "AbortError");
- // },
- );
-});
-
-Deno.test("aborting immediately with a reason throws that reason", async () => {
- const controller = new AbortController();
- const wss = new WebSocketStream("ws://localhost:4242", {
- signal: controller.signal,
- });
- const abortReason = new Error();
- controller.abort(abortReason);
- // TODO(mmastrac): this exception should be tested
- await assertRejects(
- () => wss.opened,
- // (error: Error) => assertEquals(error, abortReason),
- );
- // TODO(mmastrac): this exception should be tested
- await assertRejects(
- () => wss.closed,
- // (error: Error) => assertEquals(error, abortReason),
- );
-});
-
-Deno.test("aborting immediately with a primitive as reason throws that primitive", async () => {
- const controller = new AbortController();
- const wss = new WebSocketStream("ws://localhost:4242", {
- signal: controller.signal,
- });
- controller.abort("Some string");
- await wss.opened.then(
- () => unreachable(),
- (e) => assertEquals(e, "Some string"),
- );
- await wss.closed.then(
- () => unreachable(),
- (e) => assertEquals(e, "Some string"),
- );
-});
-
-Deno.test("headers", { sanitizeOps: false }, async () => {
- const listener = Deno.listen({ port: 4512 });
- const promise = (async () => {
- const conn = await listener.accept();
- const httpConn = Deno.serveHttp(conn);
- const { request, respondWith } = (await httpConn.nextRequest())!;
- assertEquals(request.headers.get("x-some-header"), "foo");
- const { response, socket } = Deno.upgradeWebSocket(request);
- socket.onopen = () => socket.close();
- const p = new Promise<void>((resolve) => {
- socket.onopen = () => socket.close();
- socket.onclose = () => resolve();
- });
- await respondWith(response);
- await p;
- })();
-
- const ws = new WebSocketStream("ws://localhost:4512", {
- headers: [["x-some-header", "foo"]],
- });
- await ws.opened;
- 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: 4512 });
- const promise = (async () => {
- const conn = await listener.accept();
- const httpConn = Deno.serveHttp(conn);
- const { request, respondWith } = (await httpConn.nextRequest())!;
- for (const [key] of request.headers) {
- assertNotEquals(key, "foo");
- }
- const { response, socket } = Deno.upgradeWebSocket(request);
- const p = new Promise<void>((resolve) => {
- socket.onopen = () => socket.close();
- socket.onclose = () => resolve();
- });
- await respondWith(response);
- await p;
- })();
-
- const ws = new WebSocketStream("ws://localhost:4512", {
- headers: forbiddenHeaders.map((header) => [header, "foo"]),
- });
- await ws.opened;
- await promise;
- await ws.closed;
- listener.close();
-});
-
-Deno.test("sync close with empty stream", { sanitizeOps: false }, async () => {
- const listener = Deno.listen({ port: 4512 });
- const promise = (async () => {
- const conn = await listener.accept();
- const httpConn = Deno.serveHttp(conn);
- const { request, respondWith } = (await httpConn.nextRequest())!;
- const { response, socket } = Deno.upgradeWebSocket(request);
- const p = new Promise<void>((resolve) => {
- socket.onopen = () => {
- socket.send("first message");
- socket.send("second message");
- };
- socket.onclose = () => resolve();
- });
- await respondWith(response);
- await p;
- })();
-
- const ws = new WebSocketStream("ws://localhost:4512");
- const { readable } = await ws.opened;
- const reader = readable.getReader();
- const firstMessage = await reader.read();
- assertEquals(firstMessage.value, "first message");
- const secondMessage = await reader.read();
- assertEquals(secondMessage.value, "second message");
- ws.close({ code: 1000 });
- await ws.closed;
- await promise;
- listener.close();
-});
-
-Deno.test(
- "sync close with unread messages in stream",
- { sanitizeOps: false },
- async () => {
- const listener = Deno.listen({ port: 4512 });
- const promise = (async () => {
- const conn = await listener.accept();
- const httpConn = Deno.serveHttp(conn);
- const { request, respondWith } = (await httpConn.nextRequest())!;
- const { response, socket } = Deno.upgradeWebSocket(request);
- const p = new Promise<void>((resolve) => {
- socket.onopen = () => {
- socket.send("first message");
- socket.send("second message");
- socket.send("third message");
- socket.send("fourth message");
- };
- socket.onclose = () => resolve();
- });
- await respondWith(response);
- await p;
- })();
-
- const ws = new WebSocketStream("ws://localhost:4512");
- const { readable } = await ws.opened;
- const reader = readable.getReader();
- const firstMessage = await reader.read();
- assertEquals(firstMessage.value, "first message");
- const secondMessage = await reader.read();
- assertEquals(secondMessage.value, "second message");
- ws.close({ code: 1000 });
- await ws.closed;
- await promise;
- listener.close();
- },
-);
-
-// TODO(mmastrac): Failed on CI, disabled
-Deno.test("async close with empty stream", { ignore: true }, async () => {
- const listener = Deno.listen({ port: 4512 });
- const promise = (async () => {
- const conn = await listener.accept();
- const httpConn = Deno.serveHttp(conn);
- const { request, respondWith } = (await httpConn.nextRequest())!;
- const { response, socket } = Deno.upgradeWebSocket(request);
- const p = new Promise<void>((resolve) => {
- socket.onopen = () => {
- socket.send("first message");
- socket.send("second message");
- };
- socket.onclose = () => resolve();
- });
- await respondWith(response);
- await p;
- })();
-
- const ws = new WebSocketStream("ws://localhost:4512");
- const { readable } = await ws.opened;
- const reader = readable.getReader();
- const firstMessage = await reader.read();
- assertEquals(firstMessage.value, "first message");
- const secondMessage = await reader.read();
- assertEquals(secondMessage.value, "second message");
- setTimeout(() => {
- ws.close({ code: 1000 });
- }, 0);
- await ws.closed;
- await promise;
- listener.close();
-});
-
-// TODO(mmastrac): Failed on CI, disabled
-Deno.test(
- "async close with unread messages in stream",
- { ignore: true },
- async () => {
- const listener = Deno.listen({ port: 4512 });
- const promise = (async () => {
- const conn = await listener.accept();
- const httpConn = Deno.serveHttp(conn);
- const { request, respondWith } = (await httpConn.nextRequest())!;
- const { response, socket } = Deno.upgradeWebSocket(request);
- const p = new Promise<void>((resolve) => {
- socket.onopen = () => {
- socket.send("first message");
- socket.send("second message");
- socket.send("third message");
- socket.send("fourth message");
- };
- socket.onclose = () => resolve();
- });
- await respondWith(response);
- await p;
- })();
-
- const ws = new WebSocketStream("ws://localhost:4512");
- const { readable } = await ws.opened;
- const reader = readable.getReader();
- const firstMessage = await reader.read();
- assertEquals(firstMessage.value, "first message");
- const secondMessage = await reader.read();
- assertEquals(secondMessage.value, "second message");
- setTimeout(() => {
- ws.close({ code: 1000 });
- }, 0);
- await ws.closed;
- await promise;
- listener.close();
- },
-);