From 91c9bd9dcc23c4cc1a6ef6aabc89a1a50de34aa9 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Sun, 21 May 2023 18:34:00 -0700 Subject: [WebSocket] Implement `"nodebuffer"` binaryType --- test/js/web/websocket/websocket.test.js | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'test/js/web/websocket/websocket.test.js') diff --git a/test/js/web/websocket/websocket.test.js b/test/js/web/websocket/websocket.test.js index 99d60f292..867b86123 100644 --- a/test/js/web/websocket/websocket.test.js +++ b/test/js/web/websocket/websocket.test.js @@ -71,6 +71,66 @@ describe("WebSocket", () => { }); const ws = new WebSocket(`http://${server.hostname}:${server.port}`, {}); }); + describe("nodebuffer", () => { + it("should support 'nodebuffer' binaryType", done => { + const server = Bun.serve({ + port: 0, + fetch(req, server) { + if (server.upgrade(req)) { + return; + } + + return new Response(); + }, + websocket: { + open(ws) { + ws.sendBinary(new Uint8Array([1, 2, 3])); + }, + }, + }); + const ws = new WebSocket(`http://${server.hostname}:${server.port}`, {}); + ws.binaryType = "nodebuffer"; + expect(ws.binaryType).toBe("nodebuffer"); + Bun.gc(true); + ws.onmessage = ({ data }) => { + expect(Buffer.isBuffer(data)).toBe(true); + expect(data).toEqual(new Uint8Array([1, 2, 3])); + server.stop(true); + Bun.gc(true); + done(); + }; + }); + + it("should support 'nodebuffer' binaryType when the handler is not immediately provided", done => { + var client; + const server = Bun.serve({ + port: 0, + fetch(req, server) { + if (server.upgrade(req)) { + return; + } + + return new Response(); + }, + websocket: { + open(ws) { + ws.sendBinary(new Uint8Array([1, 2, 3])); + setTimeout(() => { + client.onmessage = ({ data }) => { + expect(Buffer.isBuffer(data)).toBe(true); + expect(data).toEqual(new Uint8Array([1, 2, 3])); + server.stop(true); + done(); + }; + }, 0); + }, + }, + }); + client = new WebSocket(`http://${server.hostname}:${server.port}`, {}); + client.binaryType = "nodebuffer"; + expect(client.binaryType).toBe("nodebuffer"); + }); + }); it("should send and receive messages", async () => { const ws = new WebSocket(TEST_WEBSOCKET_HOST); -- cgit v1.2.3