




















@@ -36,11 +36,39 @@ vi.mock("openclaw/plugin-sdk/provider-http", () => ({
3636function requireOpenRouterPostBody(): {
3737messages?: Array<{ content?: unknown }>;
3838} {
39-const request = postJsonRequestMock.mock.calls[0]?.[0];
40-if (!request) {
39+const request = requireOpenRouterPostRequest();
40+return request.body as { messages?: Array<{ content?: unknown }> };
41+}
42+43+function requireOpenRouterPostRequest(): Record<string, unknown> {
44+const [call] = postJsonRequestMock.mock.calls;
45+if (!call) {
4146throw new Error("expected OpenRouter image generation request");
4247}
43-return request.body as { messages?: Array<{ content?: unknown }> };
48+const [request] = call;
49+if (!request || typeof request !== "object" || Array.isArray(request)) {
50+throw new Error("expected OpenRouter image generation request");
51+}
52+return request as Record<string, unknown>;
53+}
54+55+function requireOpenRouterConfigRequest(): Record<string, unknown> {
56+const [call] = resolveProviderHttpRequestConfigMock.mock.calls;
57+if (!call) {
58+throw new Error("expected OpenRouter image config request");
59+}
60+const [request] = call;
61+if (!request || typeof request !== "object" || Array.isArray(request)) {
62+throw new Error("expected OpenRouter image config request");
63+}
64+return request;
65+}
66+67+function requireHeaders(value: unknown): Headers {
68+if (!(value instanceof Headers)) {
69+throw new Error("expected OpenRouter image request headers");
70+}
71+return value;
4472}
45734674function requireGeneratedImage(
@@ -129,6 +157,7 @@ describe("openrouter image generation provider", () => {
129157providers: {
130158openrouter: {
131159baseUrl: "https://custom.openrouter.test/api/v1",
160+models: [],
132161},
133162},
134163},
@@ -137,7 +166,7 @@ describe("openrouter image generation provider", () => {
137166store: undefined,
138167});
139168expect(resolveProviderHttpRequestConfigMock).toHaveBeenCalledOnce();
140-expect(resolveProviderHttpRequestConfigMock.mock.calls[0]?.[0]).toEqual({
169+expect(requireOpenRouterConfigRequest()).toEqual({
141170baseUrl: "https://custom.openrouter.test/api/v1",
142171defaultBaseUrl: "https://openrouter.ai/api/v1",
143172allowPrivateNetwork: false,
@@ -151,19 +180,16 @@ describe("openrouter image generation provider", () => {
151180transport: "http",
152181});
153182expect(postJsonRequestMock).toHaveBeenCalledOnce();
154-const request = postJsonRequestMock.mock.calls[0]?.[0];
155-if (!request) {
156-throw new Error("expected OpenRouter image generation request");
157-}
158-expect(request.headers).toBeInstanceOf(Headers);
159-expect(Object.fromEntries(request.headers.entries())).toEqual({
183+const request = requireOpenRouterPostRequest();
184+const headers = requireHeaders(request.headers);
185+expect(Object.fromEntries(headers.entries())).toEqual({
160186authorization: "Bearer openrouter-key",
161187"http-referer": "https://openclaw.ai",
162188"x-openrouter-title": "OpenClaw",
163189});
164190expect(request).toEqual({
165191url: "https://custom.openrouter.test/api/v1/chat/completions",
166-headers: request.headers,
192+ headers,
167193body: {
168194model: "google/gemini-3.1-flash-image-preview",
169195messages: [
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。