import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; import { resolveAuthStorePath } from "./auth-profiles/paths.js"; import { saveAuthProfileStore } from "./auth-profiles/store.js"; import type { AuthProfileStore } from "./auth-profiles/types.js"; describe("saveAuthProfileStore", () => { it("strips plaintext when keyRef/tokenRef are present", async () => { const agentDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-auth-save-")); try { const store: AuthProfileStore = { version: 1, profiles: { "openai:default": { type: "api_key", provider: "openai", key: "sk-runtime-value", keyRef: { source: "env", provider: "default", id: "OPENAI_API_KEY" }, }, "github-copilot:default": { type: "token", provider: "github-copilot", token: "gh-runtime-token", tokenRef: { source: "env", provider: "default", id: "GITHUB_TOKEN" }, }, "anthropic:default": { type: "api_key", provider: "anthropic", key: "sk-anthropic-plain", }, }, }; saveAuthProfileStore(store, agentDir); const parsed = JSON.parse(await fs.readFile(resolveAuthStorePath(agentDir), "utf8")) as { profiles: Record< string, { key?: string; keyRef?: unknown; token?: string; tokenRef?: unknown } >; }; expect(parsed.profiles["openai:default"]?.key).toBeUndefined(); expect(parsed.profiles["openai:default"]?.keyRef).toEqual({ source: "env", provider: "default", id: "OPENAI_API_KEY", }); expect(parsed.profiles["github-copilot:default"]?.token).toBeUndefined(); expect(parsed.profiles["github-copilot:default"]?.tokenRef).toEqual({ source: "env", provider: "default", id: "GITHUB_TOKEN", }); expect(parsed.profiles["anthropic:default"]?.key).toBe("sk-anthropic-plain"); } finally { await fs.rm(agentDir, { recursive: true, force: true }); } }); });