fix: test keychain cleanup deletes real credentials (#846)

This commit is contained in:
jnjpng
2026-02-06 09:32:45 -08:00
committed by GitHub
parent 820fac4668
commit 008a00e777
2 changed files with 15 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ import {
deleteSecureTokens,
isKeychainAvailable,
keychainAvailablePrecompute,
setServiceName,
} from "../utils/secrets.js";
// Store original HOME to restore after tests
@@ -27,6 +28,9 @@ let testHomeDir: string;
let testProjectDir: string;
beforeEach(async () => {
// Use a test-specific keychain service name to avoid deleting real credentials
setServiceName("letta-code-test");
// Reset settings manager FIRST before changing HOME
await settingsManager.reset();
@@ -49,6 +53,9 @@ afterEach(async () => {
// Restore original HOME AFTER reset completes
process.env.HOME = originalHome;
// Restore the real service name
setServiceName("letta-code");
});
// ============================================================================

View File

@@ -14,10 +14,17 @@ try {
secretsAvailable = false;
}
const SERVICE_NAME = "letta-code";
let SERVICE_NAME = "letta-code";
const API_KEY_NAME = "letta-api-key";
const REFRESH_TOKEN_NAME = "letta-refresh-token";
/**
* Override the keychain service name (useful for tests to avoid touching real credentials)
*/
export function setServiceName(name: string): void {
SERVICE_NAME = name;
}
// Note: When secrets API is unavailable (Node.js), tokens will be managed
// by the settings manager which falls back to storing in the settings file
// This provides persistence across restarts