From f778c685f50f0c6af20f7b1b94abfca7b1b775a7 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Thu, 23 Apr 2026 12:45:16 -0400 Subject: [PATCH] test: add additional test cases --- packages/opencode/test/session/retry.test.ts | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/opencode/test/session/retry.test.ts b/packages/opencode/test/session/retry.test.ts index ade2647869..0c8abd7f25 100644 --- a/packages/opencode/test/session/retry.test.ts +++ b/packages/opencode/test/session/retry.test.ts @@ -230,6 +230,30 @@ describe("session.retry.retryable", () => { expect(retryable).toBeDefined() expect(retryable).toBe("Response decompression failed") }) + + test("returns upsell message for FreeUsageLimitError in response body", () => { + const error = new MessageV2.APIError({ + message: "Usage limit exceeded", + isRetryable: true, + responseBody: '{"error":{"type":"FreeUsageLimitError"}}', + }).toObject() as MessageV2.APIError + + expect(SessionRetry.retryable(error)).toBe(SessionRetry.GO_UPSELL_MESSAGE) + }) + + test("returns overloaded message when APIError message includes Overloaded", () => { + const error = new MessageV2.APIError({ + message: "Server is Overloaded, try again later", + isRetryable: true, + }).toObject() as MessageV2.APIError + + expect(SessionRetry.retryable(error)).toBe("Provider is overloaded") + }) + + test("maps rate_limit error code in nested json", () => { + const error = wrap(JSON.stringify({ type: "error", error: { code: "rate_limit_exceeded" } })) + expect(SessionRetry.retryable(error)).toBe("Rate Limited") + }) }) describe("session.message-v2.fromError", () => {