diff options
author | 2023-10-17 14:36:56 -0700 | |
---|---|---|
committer | 2023-10-17 14:36:56 -0700 | |
commit | afab26762043a40f38954868ebdccce85be7f95c (patch) | |
tree | 89e27598435d96e3b6777a9c9f7526e1992a89c8 /test/js/web/websocket | |
parent | ac36f5c278197026b2a442d8ac0f18da6d77f9a1 (diff) | |
download | bun-afab26762043a40f38954868ebdccce85be7f95c.tar.gz bun-afab26762043a40f38954868ebdccce85be7f95c.tar.zst bun-afab26762043a40f38954868ebdccce85be7f95c.zip |
Fix `Host` header excluding port in WebSocket upgradefix-websocket-upgrade
Diffstat (limited to 'test/js/web/websocket')
-rw-r--r-- | test/js/web/websocket/websocket-upgrade.test.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/js/web/websocket/websocket-upgrade.test.ts b/test/js/web/websocket/websocket-upgrade.test.ts new file mode 100644 index 000000000..1b6e2f5d7 --- /dev/null +++ b/test/js/web/websocket/websocket-upgrade.test.ts @@ -0,0 +1,37 @@ +import { serve } from "bun"; +import { describe, test, expect } from "bun:test"; + +describe("WebSocket upgrade", () => { + test("should send correct upgrade headers", async () => { + const server = serve({ + hostname: "localhost", + port: 0, + fetch(request, server) { + expect(server.upgrade(request)).toBeTrue(); + const { headers } = request; + expect(headers.get("connection")).toBe("upgrade"); + expect(headers.get("upgrade")).toBe("websocket"); + expect(headers.get("sec-websocket-version")).toBe("13"); + expect(headers.get("sec-websocket-key")).toBeString(); + expect(headers.get("host")).toBe(`localhost:${server.port}`); + return; + // FIXME: types gets annoyed if this is not here + return new Response(); + }, + websocket: { + open(ws) { + // FIXME: double-free issue + // ws.close(); + server.stop(); + }, + message(ws, message) {}, + }, + }); + await new Promise((resolve, reject) => { + const ws = new WebSocket(`ws://localhost:${server.port}/`); + ws.addEventListener("open", resolve); + ws.addEventListener("error", reject); + ws.addEventListener("close", reject); + }); + }); +}); |