Files
openclaw/src/agents/cli-credentials.test.ts
2026-01-10 16:25:40 +01:00

55 lines
1.3 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from "vitest";
const execSyncMock = vi.hoisted(() => vi.fn());
vi.mock("node:child_process", () => ({
execSync: execSyncMock,
}));
describe("cli credentials", () => {
afterEach(() => {
execSyncMock.mockReset();
});
it("updates the Claude Code keychain item in place", async () => {
const commands: string[] = [];
execSyncMock.mockImplementation((command: unknown) => {
const cmd = String(command);
commands.push(cmd);
if (cmd.includes("find-generic-password")) {
return JSON.stringify({
claudeAiOauth: {
accessToken: "old-access",
refreshToken: "old-refresh",
expiresAt: Date.now() + 60_000,
},
});
}
return "";
});
const { writeClaudeCliKeychainCredentials } = await import(
"./cli-credentials.js"
);
const ok = writeClaudeCliKeychainCredentials({
access: "new-access",
refresh: "new-refresh",
expires: Date.now() + 60_000,
});
expect(ok).toBe(true);
expect(
commands.some((cmd) => cmd.includes("delete-generic-password")),
).toBe(false);
const updateCommand = commands.find((cmd) =>
cmd.includes("add-generic-password"),
);
expect(updateCommand).toContain("-U");
});
});