mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 21:21:10 +00:00
test: add shared media live harness
This commit is contained in:
73
src/scripts/test-live-media.test.ts
Normal file
73
src/scripts/test-live-media.test.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const loadShellEnvFallbackMock = vi.fn();
|
||||
const collectProviderApiKeysMock = vi.fn((provider: string) =>
|
||||
process.env[`TEST_AUTH_${provider.toUpperCase()}`] ? ["test-key"] : [],
|
||||
);
|
||||
|
||||
vi.mock("../../src/infra/shell-env.js", () => ({
|
||||
loadShellEnvFallback: loadShellEnvFallbackMock,
|
||||
}));
|
||||
|
||||
vi.mock("../../src/agents/live-auth-keys.js", () => ({
|
||||
collectProviderApiKeys: collectProviderApiKeysMock,
|
||||
}));
|
||||
|
||||
describe("test-live-media", () => {
|
||||
afterEach(() => {
|
||||
collectProviderApiKeysMock.mockClear();
|
||||
loadShellEnvFallbackMock.mockReset();
|
||||
vi.unstubAllEnvs();
|
||||
});
|
||||
|
||||
it("defaults to all suites with auth filtering", async () => {
|
||||
vi.stubEnv("TEST_AUTH_OPENAI", "1");
|
||||
vi.stubEnv("TEST_AUTH_GOOGLE", "1");
|
||||
vi.stubEnv("TEST_AUTH_MINIMAX", "1");
|
||||
vi.stubEnv("TEST_AUTH_FAL", "1");
|
||||
vi.stubEnv("TEST_AUTH_VYDRA", "1");
|
||||
|
||||
const { buildRunPlan, parseArgs } = await import("../../scripts/test-live-media.ts");
|
||||
const plan = buildRunPlan(parseArgs([]));
|
||||
|
||||
expect(plan.map((entry) => entry.suite.id)).toEqual(["image", "music", "video"]);
|
||||
expect(plan.find((entry) => entry.suite.id === "image")?.providers).toEqual([
|
||||
"fal",
|
||||
"google",
|
||||
"minimax",
|
||||
"openai",
|
||||
"vydra",
|
||||
]);
|
||||
expect(plan.find((entry) => entry.suite.id === "music")?.providers).toEqual([
|
||||
"google",
|
||||
"minimax",
|
||||
]);
|
||||
expect(plan.find((entry) => entry.suite.id === "video")?.providers).toEqual([
|
||||
"fal",
|
||||
"google",
|
||||
"minimax",
|
||||
"openai",
|
||||
"vydra",
|
||||
]);
|
||||
});
|
||||
|
||||
it("supports suite-specific provider filters without auth narrowing", async () => {
|
||||
const { buildRunPlan, parseArgs } = await import("../../scripts/test-live-media.ts");
|
||||
const plan = buildRunPlan(
|
||||
parseArgs(["video", "--video-providers", "openai,runway", "--all-providers"]),
|
||||
);
|
||||
|
||||
expect(plan).toHaveLength(1);
|
||||
expect(plan[0]?.suite.id).toBe("video");
|
||||
expect(plan[0]?.providers).toEqual(["openai", "runway"]);
|
||||
});
|
||||
|
||||
it("forwards quiet flags separately from passthrough args", async () => {
|
||||
const { parseArgs } = await import("../../scripts/test-live-media.ts");
|
||||
const options = parseArgs(["image", "--quiet", "--reporter", "dot"]);
|
||||
|
||||
expect(options.suites).toEqual(["image"]);
|
||||
expect(options.quietArgs).toEqual(["--quiet"]);
|
||||
expect(options.passthroughArgs).toEqual(["--reporter", "dot"]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user