Skip to content

Commit

Permalink
add tests for ws.close (#2844)
Browse files Browse the repository at this point in the history
* add tests for ws.close

* add timeout on ws.close tests
  • Loading branch information
cirospaciari authored May 11, 2023
1 parent 9c166a1 commit d032b73
Showing 1 changed file with 144 additions and 0 deletions.
144 changes: 144 additions & 0 deletions test/js/bun/websocket/websocket-server.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -984,4 +984,148 @@ describe("websocket server", () => {
expect(serverCounter).toBe(sendQueue.length);
server.stop(true);
});
it("can close with reason and code #2631", done => {
let timeout: any;
let server = Bun.serve({
websocket: {
message(ws) {
ws.close(2000, "test");
},
open(ws) {
try {
expect(ws.remoteAddress).toBe("127.0.0.1");
} catch (e) {
clearTimeout(timeout);
done(e);
}
},
close(ws, code, reason) {
try {
expect(code).toBe(2000);
expect(reason).toBe("test");
clearTimeout(timeout);
done();
} catch (e) {
clearTimeout(timeout);
done(e);
}
},
},
fetch(req, server) {
if (!server.upgrade(req)) {
return new Response(null, { status: 404 });
}
},
port: 0,
});

let z = new WebSocket(`ws://${server.hostname}:${server.port}`);
z.addEventListener("open", () => {
z.send("test");
});
z.addEventListener("close", () => {
server.stop();
});

timeout = setTimeout(() => {
done(new Error("Did not close in time"));
server.stop(true);
}, 1000);
});

it("can close with code and without reason #2631", done => {
let timeout: any;
let server = Bun.serve({
websocket: {
message(ws) {
ws.close(2000);
},
open(ws) {
try {
expect(ws.remoteAddress).toBe("127.0.0.1");
} catch (e) {
done(e);
clearTimeout(timeout);
}
},
close(ws, code, reason) {
clearTimeout(timeout);

try {
expect(code).toBe(2000);
expect(reason).toBe("");
done();
} catch (e) {
done(e);
}
},
},
fetch(req, server) {
if (!server.upgrade(req)) {
return new Response(null, { status: 404 });
}
},
port: 0,
});

let z = new WebSocket(`ws://${server.hostname}:${server.port}`);
z.addEventListener("open", () => {
z.send("test");
});
z.addEventListener("close", () => {
server.stop();
});

timeout = setTimeout(() => {
done(new Error("Did not close in time"));
server.stop(true);
}, 1000);
});
it("can close without reason or code #2631", done => {
let timeout: any;
let server = Bun.serve({
websocket: {
message(ws) {
ws.close();
},
open(ws) {
try {
expect(ws.remoteAddress).toBe("127.0.0.1");
} catch (e) {
clearTimeout(timeout);
done(e);
}
},
close(ws, code, reason) {
clearTimeout(timeout);
try {
expect(code).toBe(1006);
expect(reason).toBe("");
done();
} catch (e) {
done(e);
}
},
},
fetch(req, server) {
if (!server.upgrade(req)) {
return new Response(null, { status: 404 });
}
},
port: 0,
});

let z = new WebSocket(`ws://${server.hostname}:${server.port}`);
z.addEventListener("open", () => {
z.send("test");
});
z.addEventListener("close", () => {
server.stop();
});

timeout = setTimeout(() => {
done(new Error("Did not close in time"));
server.stop(true);
}, 1000);
});
});

0 comments on commit d032b73

Please sign in to comment.