workers-rs/test/tests/container.spec.ts
2025-09-17 13:33:21 -07:00

48 lines
1.3 KiB
TypeScript

import { describe, test, expect } from "vitest";
import { mf, mfUrl } from "./mf";
import { MessageEvent } from "miniflare";
describe("container", () => {
let testContainer = true;
if (!process.env.TEST_CONTAINER_NAME) {
console.log('No container specified, skipping container test');
testContainer = false;
}
(testContainer ? test : test.skip)("post-echo", async () => {
const test_text = "Hello container!";
const resp = await mf.dispatchFetch(`${mfUrl}container/echo`, {
method: "POST",
body: test_text,
});
expect(await resp.text()).toBe(test_text);
});
(testContainer ? test : test.skip)("websocket-to-container", async () => {
const resp = await mf.dispatchFetch(`${mfUrl}container/ws`, {
headers: {
upgrade: "websocket",
},
});
expect(resp.webSocket).not.toBeNull();
const socket = resp.webSocket!;
socket.accept();
const messages = ["123", "223", "323", "abc"];
let idx = 0;
socket.addEventListener("message", function (event: MessageEvent) {
expect(event.data).toBe(messages[idx]);
idx++;
});
for (const msg of messages) {
socket.send(msg);
await new Promise((resolve) => setTimeout(resolve, 500));
}
socket.close();
});
});