summaryrefslogtreecommitdiff
path: root/std/examples/chat/server_test.ts
diff options
context:
space:
mode:
authorYusuke Sakurai <kerokerokerop@gmail.com>2020-02-23 08:51:04 +0900
committerGitHub <noreply@github.com>2020-02-22 18:51:04 -0500
commit8b646e8657309e57bd4e907f911529e33e3a05fb (patch)
tree372d96b4863bf5821638790b1bc2236e31575afa /std/examples/chat/server_test.ts
parentfb98556d56d0defa325fab1296077627cce31aab (diff)
Added browser chat example (#4022)
Diffstat (limited to 'std/examples/chat/server_test.ts')
-rw-r--r--std/examples/chat/server_test.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/std/examples/chat/server_test.ts b/std/examples/chat/server_test.ts
new file mode 100644
index 000000000..d43e41693
--- /dev/null
+++ b/std/examples/chat/server_test.ts
@@ -0,0 +1,46 @@
+import { assert, assertEquals } from "../../testing/asserts.ts";
+import { TextProtoReader } from "../../textproto/mod.ts";
+import { BufReader } from "../../io/bufio.ts";
+import { connectWebSocket, WebSocket } from "../../ws/mod.ts";
+
+let server: Deno.Process | undefined;
+async function startServer(): Promise<void> {
+ server = Deno.run({
+ args: [Deno.execPath(), "--allow-net", "--allow-read", "server.ts"],
+ cwd: "examples/chat",
+ stdout: "piped"
+ });
+ try {
+ assert(server.stdout != null);
+ const r = new TextProtoReader(new BufReader(server.stdout));
+ const s = await r.readLine();
+ assert(s !== Deno.EOF && s.includes("chat server starting"));
+ } catch {
+ server.close();
+ }
+}
+
+const { test } = Deno;
+
+await startServer();
+
+test("GET / should serve html", async () => {
+ const resp = await fetch("http://0.0.0.0:8080/");
+ assertEquals(resp.status, 200);
+ assertEquals(resp.headers.get("content-type"), "text/html");
+ const html = await resp.body.text();
+ assert(html.includes("ws chat example"), "body is ok");
+});
+
+let ws: WebSocket | undefined;
+test("GET /ws should upgrade conn to ws", async () => {
+ ws = await connectWebSocket("http://0.0.0.0:8080/ws");
+ const it = ws.receive();
+ assertEquals((await it.next()).value, "Connected: [1]");
+ ws.send("Hello");
+ assertEquals((await it.next()).value, "[1]: Hello");
+});
+test("afterAll", () => {
+ server?.close();
+ ws?.conn.close();
+});