Files
2026-07-13 13:39:12 +08:00

26 lines
1.2 KiB
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { buildClaudeEnv } from "../../../bin/cli/commands/launch.mjs";
test("buildClaudeEnv strips ANTHROPIC_* and injects proxy vars", () => {
const env = buildClaudeEnv({ ANTHROPIC_API_KEY: "leak", ANTHROPIC_BASE_URL: "old", PATH: "/bin" }, 20128, "secret");
assert.equal(env.ANTHROPIC_API_KEY, undefined);
assert.equal(env.ANTHROPIC_BASE_URL, "http://localhost:20128");
assert.equal(env.ANTHROPIC_AUTH_TOKEN, "secret");
assert.equal(env.CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY, "1");
assert.equal(env.CLAUDE_CODE_AUTO_COMPACT_WINDOW, "190000");
assert.equal(env.PATH, "/bin", "non-ANTHROPIC vars are preserved");
});
test("buildClaudeEnv uses a no-auth sentinel when no token is provided (bypasses Claude's login gate)", () => {
const env = buildClaudeEnv({ PATH: "/bin" }, 20128, undefined);
assert.equal(env.ANTHROPIC_AUTH_TOKEN, "omniroute-no-auth");
assert.equal(env.ANTHROPIC_BASE_URL, "http://localhost:20128");
});
test("buildClaudeEnv does not mutate the input env object", () => {
const input = { ANTHROPIC_API_KEY: "leak", PATH: "/bin" };
buildClaudeEnv(input, 20128, "x");
assert.equal(input.ANTHROPIC_API_KEY, "leak");
});