Files
openclaw/src/gateway/http-utils.model-override.test.ts
Peter Steinberger ef923805f5 Revert "refactor(cli): remove custom cli backends"
This reverts commit 6243806f7b.
2026-04-06 13:40:42 +01:00

51 lines
1.5 KiB
TypeScript

import type { IncomingMessage } from "node:http";
import { beforeEach, describe, expect, it, vi } from "vitest";
import type { OpenClawConfig } from "../config/config.js";
const loadConfigMock = vi.fn();
const loadGatewayModelCatalogMock = vi.fn();
vi.mock("../config/config.js", () => ({
loadConfig: () => loadConfigMock(),
}));
vi.mock("./server-model-catalog.js", () => ({
loadGatewayModelCatalog: () => loadGatewayModelCatalogMock(),
}));
import { resolveOpenAiCompatModelOverride } from "./http-utils.js";
function createReq(headers: Record<string, string> = {}): IncomingMessage {
return { headers } as IncomingMessage;
}
describe("resolveOpenAiCompatModelOverride", () => {
beforeEach(() => {
loadConfigMock.mockReset().mockReturnValue({
agents: {
defaults: {
model: { primary: "openai/gpt-5.4" },
models: {
"openai/gpt-5.4": {},
},
},
},
} satisfies OpenClawConfig);
loadGatewayModelCatalogMock
.mockReset()
.mockResolvedValue([{ id: "gpt-5.4", name: "GPT 5.4", provider: "openai" }]);
});
it("rejects CLI model overrides outside the configured allowlist", async () => {
await expect(
resolveOpenAiCompatModelOverride({
req: createReq({ "x-openclaw-model": "claude-cli/opus" }),
agentId: "main",
model: "openclaw",
}),
).resolves.toEqual({
errorMessage: "Model 'claude-cli/opus' is not allowed for agent 'main'.",
});
});
});