55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { createLiveConsoleBrowserMiddleware } from "./live-console-browser-server.mjs";
|
|
|
|
describe("Live console Vite transport bootstrap", () => {
|
|
it("uses the runner's shared bind guard before constructing middleware", async () => {
|
|
const calls = [];
|
|
const middleware = createLiveConsoleBrowserMiddleware({
|
|
workingDirectory: "/server-owned-workspace",
|
|
loadRunner: async () => ({
|
|
assertLiveConsoleLoopbackBindHost(host) {
|
|
calls.push(host);
|
|
throw new Error("shared guard rejected non-loopback bind");
|
|
},
|
|
}),
|
|
});
|
|
|
|
await expect(middleware.prepare("0.0.0.0")).rejects.toThrow(
|
|
"shared guard rejected non-loopback bind",
|
|
);
|
|
expect(calls).toEqual(["0.0.0.0"]);
|
|
});
|
|
|
|
it("passes the validated Vite bind host into the shared demo server", async () => {
|
|
let serverOptions;
|
|
const middleware = createLiveConsoleBrowserMiddleware({
|
|
workingDirectory: "/server-owned-workspace",
|
|
loadRunner: async () => ({
|
|
assertLiveConsoleLoopbackBindHost(host) {
|
|
expect(host).toBe("127.0.0.1");
|
|
},
|
|
liveConsoleDemoManifestCatalogue: () => [],
|
|
LiveConsoleScriptedDriver: class {},
|
|
LiveConsoleDemoServer: class {
|
|
constructor(options) {
|
|
serverOptions = options;
|
|
}
|
|
|
|
middleware() {
|
|
return () => undefined;
|
|
}
|
|
|
|
async close() {}
|
|
},
|
|
}),
|
|
});
|
|
|
|
await middleware.prepare("127.0.0.1");
|
|
expect(serverOptions).toMatchObject({
|
|
host: "127.0.0.1",
|
|
workingDirectory: "/server-owned-workspace",
|
|
});
|
|
});
|
|
});
|