diff --git a/server/client.test.ts b/server/client.test.ts index cfbf96a..160f09d 100644 --- a/server/client.test.ts +++ b/server/client.test.ts @@ -1,15 +1,58 @@ import { assertEquals } from "jsr:@std/assert"; import { createSession } from "#/server/handler.ts"; import handler from "./handler.ts"; -import { close, connect, flush, href, setup } from "./testSetup.ts"; +import { close, connect, flush, hostname, port, setup } from "./testSetup.ts"; + +const href = `ws://${hostname}:${port}`; Deno.test( - "test", + "needs upgrade header", + setup(async () => { + const res = await fetch(`http://${hostname}:${port}`); + assertEquals(res.status, 426); + assertEquals(res.statusText, "Upgrade Required"); + }, handler), +); + +Deno.test( + "needs a session parameter", + setup(async () => { + const res = await connect(href).catch((reason) => { + return reason; + }); + + assertEquals( + res.message, + "NetworkError: failed to connect to WebSocket: Invalid status code: 400", + ); + }, handler), +); + +Deno.test( + "needs an existing session", + setup(async () => { + const res = await connect(`${href}?sessionId=DOES_NOT_EXISTS`).catch( + (reason) => { + return reason; + }, + ); + + assertEquals( + res.message, + "NetworkError: failed to connect to WebSocket: Invalid status code: 401", + ); + }, handler), +); + +Deno.test( + "connects to an existing session", setup(async () => { const sessionId = createSession(); const [s1, m1] = await connect(`${href}?sessionId=${sessionId}`); + await flush(); assertEquals(m1, []); + await close(s1); }, handler), ); diff --git a/server/handler.ts b/server/handler.ts index 8c5dfaa..d43999f 100644 --- a/server/handler.ts +++ b/server/handler.ts @@ -1,7 +1,5 @@ import { STATUS_CODE, STATUS_TEXT, type StatusCode } from "jsr:@std/http"; -const ALLOWED_ORIGIN = "http://0.0.0.0:8042"; - type Session = { id: string; connId: number; @@ -68,7 +66,7 @@ export default function (request: Request): Response { const url = new URL(request.url); const sessionId = url.searchParams.get("sessionId"); - if (url.origin !== ALLOWED_ORIGIN || sessionId === null) { + if (sessionId === null) { return createResponse(STATUS_CODE.BadRequest); } diff --git a/server/testSetup.ts b/server/testSetup.ts index 8c11808..0c1f38b 100644 --- a/server/testSetup.ts +++ b/server/testSetup.ts @@ -2,7 +2,6 @@ import { startServer } from "./server.ts"; export const hostname = "0.0.0.0"; export const port = 8042; -export const href = `ws://${hostname}:${port}`; export function setup( fn: (ctx: Deno.TestContext) => Promise,