fix(openai): cancel oversized Codex image streams · openclaw/openclaw@13be16d
vincentkoc
·
2026-06-19
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -1001,6 +1001,42 @@ describe("openai image generation provider", () => {
|
1001 | 1001 | }); |
1002 | 1002 | }); |
1003 | 1003 | |
| 1004 | +it("cancels oversized Codex OAuth image response streams", async () => { |
| 1005 | +mockCodexAuthOnly(); |
| 1006 | +let canceled = false; |
| 1007 | +let chunkSent = false; |
| 1008 | +const release = vi.fn(async () => {}); |
| 1009 | +const stream = new ReadableStream<Uint8Array>({ |
| 1010 | +pull(controller) { |
| 1011 | +if (chunkSent) { |
| 1012 | +return; |
| 1013 | +} |
| 1014 | +chunkSent = true; |
| 1015 | +controller.enqueue(new Uint8Array(64 * 1024 * 1024 + 1)); |
| 1016 | +}, |
| 1017 | +cancel() { |
| 1018 | +canceled = true; |
| 1019 | +}, |
| 1020 | +}); |
| 1021 | +postJsonRequestMock.mockResolvedValue({ |
| 1022 | +response: new Response(stream), |
| 1023 | + release, |
| 1024 | +}); |
| 1025 | + |
| 1026 | +const provider = buildOpenAIImageGenerationProvider(); |
| 1027 | +await expect( |
| 1028 | +provider.generateImage({ |
| 1029 | +provider: "openai", |
| 1030 | +model: "gpt-image-2", |
| 1031 | +prompt: "Draw an oversized Codex lighthouse", |
| 1032 | +cfg: {}, |
| 1033 | +authStore: createCodexOAuthAuthStore(), |
| 1034 | +}), |
| 1035 | +).rejects.toThrow("OpenAI Codex image generation response exceeded size limit"); |
| 1036 | +expect(canceled).toBe(true); |
| 1037 | +expect(release).toHaveBeenCalledTimes(1); |
| 1038 | +}); |
| 1039 | + |
1004 | 1040 | it("does not treat Codex API key profiles as configured Codex OAuth image auth", async () => { |
1005 | 1041 | mockGeneratedPngResponse(); |
1006 | 1042 | resolveApiKeyForProviderMock.mockImplementation(async (params?: { provider?: string }) => { |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。