diff --git a/src/infra/env.test.ts b/src/infra/env.test.ts index c035103717..ce968a6e47 100644 --- a/src/infra/env.test.ts +++ b/src/infra/env.test.ts @@ -2,48 +2,54 @@ import { describe, expect, it } from "vitest"; import { isTruthyEnvValue, normalizeZaiEnv } from "./env.js"; describe("normalizeZaiEnv", () => { - it("copies Z_AI_API_KEY to ZAI_API_KEY when missing", () => { + function withZaiEnv(env: { zaiApiKey?: string; legacyZaiApiKey?: string }, run: () => void) { const prevZai = process.env.ZAI_API_KEY; - const prevZAi = process.env.Z_AI_API_KEY; - process.env.ZAI_API_KEY = ""; - process.env.Z_AI_API_KEY = "zai-legacy"; - - normalizeZaiEnv(); - - expect(process.env.ZAI_API_KEY).toBe("zai-legacy"); - - if (prevZai === undefined) { + const prevLegacy = process.env.Z_AI_API_KEY; + if (env.zaiApiKey === undefined) { delete process.env.ZAI_API_KEY; } else { - process.env.ZAI_API_KEY = prevZai; + process.env.ZAI_API_KEY = env.zaiApiKey; } - if (prevZAi === undefined) { + if (env.legacyZaiApiKey === undefined) { delete process.env.Z_AI_API_KEY; } else { - process.env.Z_AI_API_KEY = prevZAi; + process.env.Z_AI_API_KEY = env.legacyZaiApiKey; } + try { + run(); + } finally { + if (prevZai === undefined) { + delete process.env.ZAI_API_KEY; + } else { + process.env.ZAI_API_KEY = prevZai; + } + if (prevLegacy === undefined) { + delete process.env.Z_AI_API_KEY; + } else { + process.env.Z_AI_API_KEY = prevLegacy; + } + } + } + + it("copies Z_AI_API_KEY to ZAI_API_KEY when missing", () => { + withZaiEnv({ zaiApiKey: "", legacyZaiApiKey: "zai-legacy" }, () => { + normalizeZaiEnv(); + expect(process.env.ZAI_API_KEY).toBe("zai-legacy"); + }); }); it("does not override existing ZAI_API_KEY", () => { - const prevZai = process.env.ZAI_API_KEY; - const prevZAi = process.env.Z_AI_API_KEY; - process.env.ZAI_API_KEY = "zai-current"; - process.env.Z_AI_API_KEY = "zai-legacy"; + withZaiEnv({ zaiApiKey: "zai-current", legacyZaiApiKey: "zai-legacy" }, () => { + normalizeZaiEnv(); + expect(process.env.ZAI_API_KEY).toBe("zai-current"); + }); + }); - normalizeZaiEnv(); - - expect(process.env.ZAI_API_KEY).toBe("zai-current"); - - if (prevZai === undefined) { - delete process.env.ZAI_API_KEY; - } else { - process.env.ZAI_API_KEY = prevZai; - } - if (prevZAi === undefined) { - delete process.env.Z_AI_API_KEY; - } else { - process.env.Z_AI_API_KEY = prevZAi; - } + it("ignores blank legacy Z_AI_API_KEY values", () => { + withZaiEnv({ zaiApiKey: "", legacyZaiApiKey: " " }, () => { + normalizeZaiEnv(); + expect(process.env.ZAI_API_KEY).toBe(""); + }); }); });