evOo-local/packages/adapters/src/sandbox-factory.test.ts
cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
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.
2026-09-20 17:15:16 +02:00

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.',
);
});
});