From d3ac73c55ad01185e7c0e53b2fca94f7ce07568f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 9 May 2026 09:12:30 +0100 Subject: [PATCH] test: tighten deepinfra speech request assertions --- extensions/deepinfra/speech-provider.test.ts | 57 +++++++++++++------- 1 file changed, 38 insertions(+), 19 deletions(-) diff --git a/extensions/deepinfra/speech-provider.test.ts b/extensions/deepinfra/speech-provider.test.ts index 441c3b5c14c..c79b681556f 100644 --- a/extensions/deepinfra/speech-provider.test.ts +++ b/extensions/deepinfra/speech-provider.test.ts @@ -91,26 +91,45 @@ describe("deepinfra speech provider", () => { timeoutMs: 12_345, }); - expect(resolveProviderHttpRequestConfigMock).toHaveBeenCalledWith( - expect.objectContaining({ - provider: "deepinfra", - capability: "audio", - baseUrl: "https://api.deepinfra.com/v1/openai", - }), - ); - expect(postJsonRequestMock).toHaveBeenCalledWith( - expect.objectContaining({ - url: "https://api.deepinfra.com/v1/openai/audio/speech", - timeoutMs: 12_345, - body: { - model: "hexgrad/Kokoro-82M", - input: "hello", - voice: "af_alloy", - response_format: "mp3", - speed: 1.2, + expect(resolveProviderHttpRequestConfigMock.mock.calls).toEqual([ + [ + { + baseUrl: "https://api.deepinfra.com/v1/openai", + defaultBaseUrl: "https://api.deepinfra.com/v1/openai", + allowPrivateNetwork: false, + defaultHeaders: { + Authorization: "Bearer sk-deepinfra", + "Content-Type": "application/json", + }, + provider: "deepinfra", + capability: "audio", + transport: "http", }, - }), - ); + ], + ]); + expect(postJsonRequestMock).toHaveBeenCalledOnce(); + const [postRequest] = postJsonRequestMock.mock.calls[0] ?? []; + const postRequestHeaders = Reflect.get(postRequest ?? {}, "headers"); + expect(postRequestHeaders).toBeInstanceOf(Headers); + expect(Object.fromEntries((postRequestHeaders as Headers).entries())).toEqual({ + authorization: "Bearer sk-deepinfra", + "content-type": "application/json", + }); + expect(postRequest).toEqual({ + url: "https://api.deepinfra.com/v1/openai/audio/speech", + headers: postRequestHeaders, + timeoutMs: 12_345, + body: { + model: "hexgrad/Kokoro-82M", + input: "hello", + voice: "af_alloy", + response_format: "mp3", + speed: 1.2, + }, + fetchFn: fetch, + allowPrivateNetwork: false, + dispatcherPolicy: undefined, + }); expect(result.audioBuffer).toEqual(Buffer.from([1, 2, 3])); expect(result.outputFormat).toBe("mp3"); expect(result.fileExtension).toBe(".mp3");