sandbox-agent/factory/packages/backend/test/providers.test.ts
2026-03-09 14:00:20 -07:00

52 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { ConfigSchema, type AppConfig } from "@openhandoff/shared";
import { createProviderRegistry } from "../src/providers/index.js";
function makeConfig(): AppConfig {
return ConfigSchema.parse({
auto_submit: true,
notify: ["terminal"],
workspace: { default: "default" },
backend: {
host: "127.0.0.1",
port: 7741,
dbPath: "~/.local/share/openhandoff/handoff.db",
opencode_poll_interval: 2,
github_poll_interval: 30,
backup_interval_secs: 3600,
backup_retention_days: 7
},
providers: {
local: {},
daytona: { image: "ubuntu:24.04" }
}
});
}
describe("provider registry", () => {
it("defaults to local when daytona is not configured", () => {
const registry = createProviderRegistry(makeConfig());
expect(registry.defaultProviderId()).toBe("local");
});
it("prefers daytona when an api key is configured", () => {
const registry = createProviderRegistry(
ConfigSchema.parse({
...makeConfig(),
providers: {
...makeConfig().providers,
daytona: {
...makeConfig().providers.daytona,
apiKey: "test-token",
},
},
})
);
expect(registry.defaultProviderId()).toBe("daytona");
});
it("returns the built-in provider", () => {
const registry = createProviderRegistry(makeConfig());
expect(registry.get("daytona").id()).toBe("daytona");
});
});