@@ -7,12 +7,14 @@ import { beforeAll, describe, expect, it, vi } from "vitest";
|
7 | 7 | vi.unmock("../secrets/provider-env-vars.js"); |
8 | 8 | |
9 | 9 | let collectProviderApiKeys: typeof import("./live-auth-keys.js").collectProviderApiKeys; |
| 10 | +let collectAnthropicApiKeys: typeof import("./live-auth-keys.js").collectAnthropicApiKeys; |
10 | 11 | let isAnthropicBillingError: typeof import("./live-auth-keys.js").isAnthropicBillingError; |
11 | 12 | |
12 | 13 | async function loadModulesForTest(): Promise<void> { |
13 | 14 | vi.resetModules(); |
14 | 15 | vi.doUnmock("../secrets/provider-env-vars.js"); |
15 | | -({ collectProviderApiKeys, isAnthropicBillingError } = await import("./live-auth-keys.js")); |
| 16 | +({ collectAnthropicApiKeys, collectProviderApiKeys, isAnthropicBillingError } = |
| 17 | +await import("./live-auth-keys.js")); |
16 | 18 | } |
17 | 19 | |
18 | 20 | beforeAll(async () => { |
@@ -43,6 +45,31 @@ describe("collectProviderApiKeys", () => {
|
43 | 45 | }); |
44 | 46 | }); |
45 | 47 | |
| 48 | +describe("collectAnthropicApiKeys", () => { |
| 49 | +it("does not rotate API keys over Anthropic OAuth", () => { |
| 50 | +expect( |
| 51 | +collectAnthropicApiKeys({ |
| 52 | +env: { |
| 53 | +ANTHROPIC_API_KEY: "primary-key", |
| 54 | +ANTHROPIC_API_KEY_OLD: "old-key", |
| 55 | +ANTHROPIC_OAUTH_TOKEN: "oauth-token", |
| 56 | +}, |
| 57 | +}), |
| 58 | +).toEqual([]); |
| 59 | +}); |
| 60 | + |
| 61 | +it("keeps API-key rotation when Anthropic OAuth is unavailable", () => { |
| 62 | +expect( |
| 63 | +collectAnthropicApiKeys({ |
| 64 | +env: { |
| 65 | +ANTHROPIC_API_KEY: "primary-key", |
| 66 | +ANTHROPIC_API_KEY_OLD: "old-key", |
| 67 | +}, |
| 68 | +}), |
| 69 | +).toEqual(["primary-key", "old-key"]); |
| 70 | +}); |
| 71 | +}); |
| 72 | + |
46 | 73 | describe("isAnthropicBillingError", () => { |
47 | 74 | it("does not false-positive on plain 'a 402' prose", () => { |
48 | 75 | const samples = [ |
|