mirror of
https://github.com/cloudflare/workers-rs.git
synced 2025-12-08 18:01:59 +00:00
Updates CI to use miniflare 3 when testing against worker-sandbox using vitest instead of Cargo's built in test runner.
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { describe, expect, test, vi } from "vitest";
|
|
import { MessageEvent } from "miniflare";
|
|
import { mf } from "./mf";
|
|
|
|
describe("websocket", () => {
|
|
test("to echo", async () => {
|
|
const resp = await mf.dispatchFetch("http://fake.host/websocket", {
|
|
headers: {
|
|
upgrade: "websocket",
|
|
},
|
|
});
|
|
expect(resp.webSocket).not.toBeNull();
|
|
|
|
const socket = resp.webSocket!;
|
|
socket.accept();
|
|
|
|
const handlers = {
|
|
messageHandler: (event: MessageEvent) =>
|
|
expect(event.data).toBe("Hello, world!"),
|
|
close(event: CloseEvent) {},
|
|
};
|
|
|
|
const messageHandlerWrapper = vi.spyOn(handlers, "messageHandler");
|
|
const closeHandlerWrapper = vi.spyOn(handlers, "messageHandler");
|
|
socket.addEventListener("message", handlers.messageHandler);
|
|
socket.addEventListener("close", handlers.close);
|
|
|
|
socket.send("Hello, world!");
|
|
|
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
|
|
expect(messageHandlerWrapper).toBeCalled();
|
|
socket.close();
|
|
expect(closeHandlerWrapper).toBeCalled();
|
|
});
|
|
});
|