Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline (Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/* packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
52 lines
2.1 KiB
TypeScript
52 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { NO_SANDBOX_MESSAGE } from "./none-sandbox.js";
|
|
import { createSandboxProvider } from "./sandbox-factory.js";
|
|
|
|
const ctx = {
|
|
operationId: "op",
|
|
traceId: "tr",
|
|
spaceId: "ws",
|
|
userId: "user",
|
|
signal: new AbortController().signal,
|
|
};
|
|
|
|
describe("createSandboxProvider", () => {
|
|
it("returns fake sandbox when explicitly requested", () => {
|
|
const sandbox = createSandboxProvider("fake", {});
|
|
expect(sandbox.describe().id).toBe("fake");
|
|
});
|
|
|
|
it("returns none when requested or when the kind is empty", async () => {
|
|
expect(createSandboxProvider("none", {}).describe().id).toBe("none");
|
|
expect(createSandboxProvider("", {}).describe().id).toBe("none");
|
|
await expect(
|
|
createSandboxProvider("none", {}).provision({ botId: "b", homePath: "/tmp" }, ctx),
|
|
).rejects.toThrow(NO_SANDBOX_MESSAGE);
|
|
});
|
|
|
|
it("returns provider-specific managed sandbox emulators", () => {
|
|
expect(createSandboxProvider("e2b-emulator", {}).describe().id).toBe("e2b-emulator");
|
|
expect(createSandboxProvider("daytona-emulator", {}).describe().id).toBe("daytona-emulator");
|
|
expect(createSandboxProvider("box-emulator", {}).describe()).toMatchObject({
|
|
id: "box-emulator",
|
|
capabilities: { multiScreen: true },
|
|
});
|
|
});
|
|
|
|
it("boots without a remote key and keeps computers unavailable", async () => {
|
|
expect(createSandboxProvider("e2b", {}).describe().id).toBe("none");
|
|
expect(createSandboxProvider("daytona", {}).describe().id).toBe("none");
|
|
expect(createSandboxProvider("box", {}).describe().id).toBe("none");
|
|
await expect(
|
|
createSandboxProvider("e2b", {}).provision({ botId: "b", homePath: "/tmp" }, ctx),
|
|
).rejects.toThrow(/E2B_API_KEY/);
|
|
expect(createSandboxProvider("box", { boxApiKey: "test-box-key" }).describe().id).toBe("box");
|
|
});
|
|
|
|
it("throws on unknown provider", () => {
|
|
expect(() => createSandboxProvider("bogus", {})).toThrow(
|
|
'Unknown SANDBOX_PROVIDER "bogus". Use none | docker | e2b | daytona | box | e2b-emulator | daytona-emulator | box-emulator | desktop | fake.',
|
|
);
|
|
});
|
|
});
|