



















@@ -6,14 +6,23 @@ import {
66loadMinimaxVideoGenerationProviderModule,
77} from "./provider-http.test-helpers.js";
889-const { postJsonRequestMock, fetchWithTimeoutMock } = getMinimaxProviderHttpMocks();
9+const {
10+ resolveApiKeyForProviderMock,
11+ postJsonRequestMock,
12+ fetchWithTimeoutMock,
13+ resolveProviderHttpRequestConfigMock,
14+} = getMinimaxProviderHttpMocks();
10151116let buildMinimaxVideoGenerationProvider: Awaited<
1217ReturnType<typeof loadMinimaxVideoGenerationProviderModule>
1318>["buildMinimaxVideoGenerationProvider"];
19+let buildMinimaxPortalVideoGenerationProvider: Awaited<
20+ReturnType<typeof loadMinimaxVideoGenerationProviderModule>
21+>["buildMinimaxPortalVideoGenerationProvider"];
14221523beforeAll(async () => {
16-({ buildMinimaxVideoGenerationProvider } = await loadMinimaxVideoGenerationProviderModule());
24+({ buildMinimaxVideoGenerationProvider, buildMinimaxPortalVideoGenerationProvider } =
25+await loadMinimaxVideoGenerationProviderModule());
1726});
18271928installMinimaxProviderHttpMockCleanup();
@@ -143,4 +152,78 @@ describe("minimax video generation provider", () => {
143152}),
144153);
145154});
155+156+it("routes portal video generation through minimax-portal auth and HTTP config", async () => {
157+postJsonRequestMock.mockResolvedValue({
158+response: {
159+json: async () => ({
160+task_id: "task-portal",
161+base_resp: { status_code: 0 },
162+}),
163+},
164+release: vi.fn(async () => {}),
165+});
166+fetchWithTimeoutMock
167+.mockResolvedValueOnce({
168+json: async () => ({
169+task_id: "task-portal",
170+status: "Success",
171+video_url: "https://example.com/portal.mp4",
172+base_resp: { status_code: 0 },
173+}),
174+})
175+.mockResolvedValueOnce({
176+headers: new Headers({ "content-type": "video/mp4" }),
177+arrayBuffer: async () => Buffer.from("mp4-bytes"),
178+});
179+180+const provider = buildMinimaxPortalVideoGenerationProvider();
181+await provider.generateVideo({
182+provider: "minimax-portal",
183+model: "MiniMax-Hailuo-2.3",
184+prompt: "A neon city street at night",
185+cfg: {
186+models: {
187+providers: {
188+minimax: {
189+baseUrl: "https://wrong.example/anthropic",
190+models: [],
191+},
192+"minimax-portal": {
193+baseUrl: "https://api.minimaxi.com/anthropic",
194+models: [],
195+},
196+},
197+},
198+},
199+});
200+201+expect(resolveApiKeyForProviderMock).toHaveBeenCalledWith(
202+expect.objectContaining({
203+provider: "minimax-portal",
204+}),
205+);
206+expect(resolveProviderHttpRequestConfigMock).toHaveBeenCalledWith(
207+expect.objectContaining({
208+baseUrl: "https://api.minimaxi.com",
209+provider: "minimax-portal",
210+capability: "video",
211+transport: "http",
212+}),
213+);
214+expect(postJsonRequestMock).toHaveBeenCalledWith(
215+expect.objectContaining({
216+url: "https://api.minimaxi.com/v1/video_generation",
217+}),
218+);
219+expect(fetchWithTimeoutMock).toHaveBeenNthCalledWith(
220+1,
221+"https://api.minimaxi.com/v1/query/video_generation?task_id=task-portal",
222+expect.objectContaining({
223+method: "GET",
224+}),
225+expect.any(Number),
226+expect.any(Function),
227+);
228+});
146229});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。