test: slim runtime hotspot mocks

This commit is contained in:
Peter Steinberger
2026-04-17 01:15:31 +01:00
parent 59b98334f6
commit 272536015f
5 changed files with 30 additions and 23 deletions

View File

@@ -1,6 +1,5 @@
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import * as authModule from "../../../../src/agents/model-auth.js";
import { mockPublicPinnedHostname } from "./test-helpers/ssrf.js";
vi.mock("../../../../src/infra/net/fetch-guard.js", () => ({
fetchWithSsrFGuard: async (params: {
@@ -101,7 +100,6 @@ async function createProviderWithFetch(
options: Partial<Parameters<typeof createGeminiEmbeddingProvider>[0]> & { model: string },
) {
installFetchMock(fetchMock as unknown as typeof globalThis.fetch);
mockPublicPinnedHostname();
mockResolvedProviderKey();
const { provider } = await createGeminiEmbeddingProvider({
config: {} as never,

View File

@@ -3,6 +3,24 @@ import path from "node:path";
import type { RequestPermissionRequest } from "@agentclientprotocol/sdk";
import { afterEach, describe, expect, it, vi } from "vitest";
import { createTrackedTempDirs } from "../test-utils/tracked-temp-dirs.js";
vi.mock("../secrets/provider-env-vars.js", () => ({
listKnownProviderAuthEnvVarNames: () => ["OPENAI_API_KEY", "GITHUB_TOKEN", "HF_TOKEN"],
omitEnvKeysCaseInsensitive: (
baseEnv: NodeJS.ProcessEnv,
keys: Iterable<string>,
): NodeJS.ProcessEnv => {
const denied = new Set([...keys].map((key) => key.trim().toUpperCase()).filter(Boolean));
const env = { ...baseEnv };
for (const key of Object.keys(env)) {
if (denied.has(key.toUpperCase())) {
delete env[key];
}
}
return env;
},
}));
import {
buildAcpClientStripKeys,
resolveAcpClientSpawnEnv,

View File

@@ -353,13 +353,10 @@ describe("image-generation runtime", () => {
return [];
});
const promise = generateImage({ cfg: {} as OpenClawConfig, prompt: "draw a cat" });
await expect(promise).rejects.toThrow("No image-generation model configured.");
await expect(promise).rejects.toThrow(
'Set agents.defaults.imageGenerationModel.primary to a provider/model like "vision-one/paint-v1".',
await expect(
generateImage({ cfg: {} as OpenClawConfig, prompt: "draw a cat" }),
).rejects.toThrow(
'No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "vision-one/paint-v1". If you want a specific provider, also configure that provider\'s auth/API key first (vision-one: VISION_ONE_API_KEY; vision-two: VISION_TWO_API_KEY).',
);
await expect(promise).rejects.toThrow("vision-one: VISION_ONE_API_KEY");
await expect(promise).rejects.toThrow("vision-two: VISION_TWO_API_KEY");
});
});

View File

@@ -757,12 +757,10 @@ describe("video-generation runtime", () => {
]);
mocks.getProviderEnvVars.mockReturnValue(["MOTION_ONE_API_KEY"]);
const promise = generateVideo({ cfg: {} as OpenClawConfig, prompt: "animate a cat" });
await expect(promise).rejects.toThrow("No video-generation model configured.");
await expect(promise).rejects.toThrow(
'Set agents.defaults.videoGenerationModel.primary to a provider/model like "motion-one/animate-v1".',
await expect(
generateVideo({ cfg: {} as OpenClawConfig, prompt: "animate a cat" }),
).rejects.toThrow(
'No video-generation model configured. Set agents.defaults.videoGenerationModel.primary to a provider/model like "motion-one/animate-v1". If you want a specific provider, also configure that provider\'s auth/API key first (motion-one: MOTION_ONE_API_KEY).',
);
await expect(promise).rejects.toThrow("motion-one: MOTION_ONE_API_KEY");
});
});

View File

@@ -72,14 +72,10 @@ vi.mock("../../../src/config/model-input.js", () => ({
vi.mock("../../../src/logging/subsystem.js", () => ({
createSubsystemLogger: mediaRuntimeMocks.createSubsystemLogger,
}));
vi.mock("../../../src/secrets/provider-env-vars.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../../../src/secrets/provider-env-vars.js")>();
return {
...actual,
getProviderEnvVars: mediaRuntimeMocks.getProviderEnvVars,
resolveProviderAuthEnvVarCandidates: mediaRuntimeMocks.resolveProviderAuthEnvVarCandidates,
};
});
vi.mock("../../../src/secrets/provider-env-vars.js", () => ({
getProviderEnvVars: mediaRuntimeMocks.getProviderEnvVars,
resolveProviderAuthEnvVarCandidates: mediaRuntimeMocks.resolveProviderAuthEnvVarCandidates,
}));
vi.mock("../../../src/image-generation/model-ref.js", () => ({
parseImageGenerationModelRef: mediaRuntimeMocks.parseImageGenerationModelRef,