


























@@ -33,6 +33,14 @@ vi.mock("openclaw/plugin-sdk/provider-http", () => ({
3333resolveProviderHttpRequestConfig: resolveProviderHttpRequestConfigMock,
3434}));
353536+function firstPostJsonRequest(): { body?: unknown; headers?: Headers } {
37+const [request] = postJsonRequestMock.mock.calls[0] ?? [];
38+if (!request || typeof request !== "object") {
39+throw new Error("expected first OpenRouter JSON request");
40+}
41+return request as { body?: unknown; headers?: Headers };
42+}
43+3644describe("openrouter media understanding provider", () => {
3745afterEach(() => {
3846assertOkOrThrowHttpErrorMock.mockClear();
@@ -109,7 +117,10 @@ describe("openrouter media understanding provider", () => {
109117dispatcherPolicy: undefined,
110118auditContext: "openrouter stt",
111119});
112-const headers = postJsonRequestMock.mock.calls.at(0)?.[0]?.headers as Headers;
120+const headers = firstPostJsonRequest().headers;
121+if (!headers) {
122+throw new Error("expected OpenRouter request headers");
123+}
113124expect(headers.get("authorization")).toBe("Bearer sk-openrouter");
114125expect(headers.get("http-referer")).toBe("https://openclaw.ai");
115126expect(headers.get("x-openrouter-title")).toBe("OpenClaw");
@@ -132,7 +143,7 @@ describe("openrouter media understanding provider", () => {
132143fetchFn: fetch,
133144});
134145135-expect(postJsonRequestMock.mock.calls.at(0)?.[0]?.body).toEqual({
146+expect(firstPostJsonRequest().body).toEqual({
136147model: "openai/whisper-large-v3-turbo",
137148input_audio: {
138149data: Buffer.from("audio").toString("base64"),
@@ -157,7 +168,7 @@ describe("openrouter media understanding provider", () => {
157168fetchFn: fetch,
158169});
159170160-expect(postJsonRequestMock.mock.calls.at(0)?.[0]?.body).toEqual({
171+expect(firstPostJsonRequest().body).toEqual({
161172model: "openai/whisper-large-v3-turbo",
162173input_audio: {
163174data: Buffer.from("audio").toString("base64"),
@@ -181,7 +192,7 @@ describe("openrouter media understanding provider", () => {
181192fetchFn: fetch,
182193});
183194184-expect(postJsonRequestMock.mock.calls.at(0)?.[0]?.body).toEqual({
195+expect(firstPostJsonRequest().body).toEqual({
185196model: "openai/whisper-large-v3-turbo",
186197input_audio: {
187198data: Buffer.from("audio").toString("base64"),
@@ -206,7 +217,7 @@ describe("openrouter media understanding provider", () => {
206217fetchFn: fetch,
207218});
208219209-expect(postJsonRequestMock.mock.calls.at(0)?.[0]?.body).toEqual({
220+expect(firstPostJsonRequest().body).toEqual({
210221model: "openai/whisper-large-v3-turbo",
211222input_audio: {
212223data: Buffer.from("audio").toString("base64"),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。