mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 15:47:28 +00:00
test: guard provider request mock calls
This commit is contained in:
@@ -34,6 +34,18 @@ function fetchWithTimeoutCall(index: number): [string, RequestInit | undefined,
|
||||
return call;
|
||||
}
|
||||
|
||||
function providerHttpConfigRequest(): Record<string, unknown> {
|
||||
const [call] = resolveProviderHttpRequestConfigMock.mock.calls;
|
||||
if (!call) {
|
||||
throw new Error("expected provider HTTP config request");
|
||||
}
|
||||
const [request] = call;
|
||||
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
||||
throw new Error("expected provider HTTP config request");
|
||||
}
|
||||
return request as Record<string, unknown>;
|
||||
}
|
||||
|
||||
describe("openai video generation provider", () => {
|
||||
it("declares the openai-codex alias for default-model ordering", () => {
|
||||
const provider = buildOpenAIVideoGenerationProvider();
|
||||
@@ -179,10 +191,7 @@ describe("openai video generation provider", () => {
|
||||
},
|
||||
});
|
||||
|
||||
const configRequest = resolveProviderHttpRequestConfigMock.mock.calls[0]?.[0] as
|
||||
| Record<string, unknown>
|
||||
| undefined;
|
||||
expect(configRequest?.baseUrl).toBe("http://127.0.0.1:44080/v1");
|
||||
expect(providerHttpConfigRequest().baseUrl).toBe("http://127.0.0.1:44080/v1");
|
||||
const createRequest = postJsonRequest();
|
||||
expect(createRequest.url).toBe("http://127.0.0.1:44080/v1/videos");
|
||||
expect(createRequest.allowPrivateNetwork).toBe(false);
|
||||
|
||||
@@ -36,11 +36,39 @@ vi.mock("openclaw/plugin-sdk/provider-http", () => ({
|
||||
function requireOpenRouterPostBody(): {
|
||||
messages?: Array<{ content?: unknown }>;
|
||||
} {
|
||||
const request = postJsonRequestMock.mock.calls[0]?.[0];
|
||||
if (!request) {
|
||||
const request = requireOpenRouterPostRequest();
|
||||
return request.body as { messages?: Array<{ content?: unknown }> };
|
||||
}
|
||||
|
||||
function requireOpenRouterPostRequest(): Record<string, unknown> {
|
||||
const [call] = postJsonRequestMock.mock.calls;
|
||||
if (!call) {
|
||||
throw new Error("expected OpenRouter image generation request");
|
||||
}
|
||||
return request.body as { messages?: Array<{ content?: unknown }> };
|
||||
const [request] = call;
|
||||
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
||||
throw new Error("expected OpenRouter image generation request");
|
||||
}
|
||||
return request as Record<string, unknown>;
|
||||
}
|
||||
|
||||
function requireOpenRouterConfigRequest(): Record<string, unknown> {
|
||||
const [call] = resolveProviderHttpRequestConfigMock.mock.calls;
|
||||
if (!call) {
|
||||
throw new Error("expected OpenRouter image config request");
|
||||
}
|
||||
const [request] = call;
|
||||
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
||||
throw new Error("expected OpenRouter image config request");
|
||||
}
|
||||
return request;
|
||||
}
|
||||
|
||||
function requireHeaders(value: unknown): Headers {
|
||||
if (!(value instanceof Headers)) {
|
||||
throw new Error("expected OpenRouter image request headers");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function requireGeneratedImage(
|
||||
@@ -129,6 +157,7 @@ describe("openrouter image generation provider", () => {
|
||||
providers: {
|
||||
openrouter: {
|
||||
baseUrl: "https://custom.openrouter.test/api/v1",
|
||||
models: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -137,7 +166,7 @@ describe("openrouter image generation provider", () => {
|
||||
store: undefined,
|
||||
});
|
||||
expect(resolveProviderHttpRequestConfigMock).toHaveBeenCalledOnce();
|
||||
expect(resolveProviderHttpRequestConfigMock.mock.calls[0]?.[0]).toEqual({
|
||||
expect(requireOpenRouterConfigRequest()).toEqual({
|
||||
baseUrl: "https://custom.openrouter.test/api/v1",
|
||||
defaultBaseUrl: "https://openrouter.ai/api/v1",
|
||||
allowPrivateNetwork: false,
|
||||
@@ -151,19 +180,16 @@ describe("openrouter image generation provider", () => {
|
||||
transport: "http",
|
||||
});
|
||||
expect(postJsonRequestMock).toHaveBeenCalledOnce();
|
||||
const request = postJsonRequestMock.mock.calls[0]?.[0];
|
||||
if (!request) {
|
||||
throw new Error("expected OpenRouter image generation request");
|
||||
}
|
||||
expect(request.headers).toBeInstanceOf(Headers);
|
||||
expect(Object.fromEntries(request.headers.entries())).toEqual({
|
||||
const request = requireOpenRouterPostRequest();
|
||||
const headers = requireHeaders(request.headers);
|
||||
expect(Object.fromEntries(headers.entries())).toEqual({
|
||||
authorization: "Bearer openrouter-key",
|
||||
"http-referer": "https://openclaw.ai",
|
||||
"x-openrouter-title": "OpenClaw",
|
||||
});
|
||||
expect(request).toEqual({
|
||||
url: "https://custom.openrouter.test/api/v1/chat/completions",
|
||||
headers: request.headers,
|
||||
headers,
|
||||
body: {
|
||||
model: "google/gemini-3.1-flash-image-preview",
|
||||
messages: [
|
||||
|
||||
@@ -19,6 +19,37 @@ vi.mock("openclaw/plugin-sdk/provider-http", () => ({
|
||||
resolveProviderHttpRequestConfig: resolveProviderHttpRequestConfigMock,
|
||||
}));
|
||||
|
||||
function requireOpenRouterConfigRequest(): Record<string, unknown> {
|
||||
const [call] = resolveProviderHttpRequestConfigMock.mock.calls;
|
||||
if (!call) {
|
||||
throw new Error("expected OpenRouter speech config request");
|
||||
}
|
||||
const [request] = call;
|
||||
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
||||
throw new Error("expected OpenRouter speech config request");
|
||||
}
|
||||
return request;
|
||||
}
|
||||
|
||||
function requireOpenRouterPostRequest(): Record<string, unknown> {
|
||||
const [call] = postJsonRequestMock.mock.calls;
|
||||
if (!call) {
|
||||
throw new Error("expected OpenRouter speech request");
|
||||
}
|
||||
const [request] = call;
|
||||
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
||||
throw new Error("expected OpenRouter speech request");
|
||||
}
|
||||
return request as Record<string, unknown>;
|
||||
}
|
||||
|
||||
function requireHeaders(value: unknown): Headers {
|
||||
if (!(value instanceof Headers)) {
|
||||
throw new Error("expected OpenRouter speech request headers");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
describe("openrouter speech provider", () => {
|
||||
afterEach(() => {
|
||||
assertOkOrThrowHttpErrorMock.mockClear();
|
||||
@@ -100,7 +131,7 @@ describe("openrouter speech provider", () => {
|
||||
});
|
||||
|
||||
expect(resolveProviderHttpRequestConfigMock).toHaveBeenCalledOnce();
|
||||
expect(resolveProviderHttpRequestConfigMock.mock.calls[0]?.[0]).toEqual({
|
||||
expect(requireOpenRouterConfigRequest()).toEqual({
|
||||
baseUrl: "https://openrouter.ai/api/v1",
|
||||
defaultBaseUrl: "https://openrouter.ai/api/v1",
|
||||
allowPrivateNetwork: false,
|
||||
@@ -115,12 +146,9 @@ describe("openrouter speech provider", () => {
|
||||
transport: "http",
|
||||
});
|
||||
expect(postJsonRequestMock).toHaveBeenCalledOnce();
|
||||
const request = postJsonRequestMock.mock.calls[0]?.[0];
|
||||
if (!request) {
|
||||
throw new Error("expected OpenRouter speech request");
|
||||
}
|
||||
expect(request.headers).toBeInstanceOf(Headers);
|
||||
expect(Object.fromEntries(request.headers.entries())).toEqual({
|
||||
const request = requireOpenRouterPostRequest();
|
||||
const headers = requireHeaders(request.headers);
|
||||
expect(Object.fromEntries(headers.entries())).toEqual({
|
||||
authorization: "Bearer sk-openrouter",
|
||||
"content-type": "application/json",
|
||||
"http-referer": "https://openclaw.ai",
|
||||
@@ -128,7 +156,7 @@ describe("openrouter speech provider", () => {
|
||||
});
|
||||
expect(request).toEqual({
|
||||
url: "https://openrouter.ai/api/v1/audio/speech",
|
||||
headers: request.headers,
|
||||
headers,
|
||||
body: {
|
||||
model: "openai/gpt-4o-mini-tts-2025-12-15",
|
||||
input: "hello",
|
||||
|
||||
Reference in New Issue
Block a user