1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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);
});
});
});
|