#!/usr/bin/env node
/**
* Test script for the new file-based token storage system
*/
import { FileStorageManager } from './src/auth/file-storage.js';
import { TokenManager } from './src/auth/token-manager.js';
async function testFileStorage() {
console.log('๐งช Testing File Storage System\n');
const storage = new FileStorageManager();
// Test 1: Check if tokens exist
console.log('1. Checking for existing tokens...');
const hasTokens = await storage.hasTokens();
console.log(` Has tokens: ${hasTokens}`);
if (hasTokens) {
// Test 2: Get token file info
console.log('\n2. Getting token file info...');
const fileInfo = await storage.getTokenFileInfo();
console.log(' File info:', JSON.stringify(fileInfo, null, 2));
// Test 2b: Check token security
console.log('\n2b. Checking token security...');
const securityStatus = await storage.ensureTokenSecurity();
console.log(' Security status:', JSON.stringify(securityStatus, null, 2));
// Test 3: Load tokens
console.log('\n3. Loading tokens...');
try {
const tokens = await storage.getTokens();
if (tokens) {
console.log(' โ
Tokens loaded successfully');
console.log(' Instance URL:', tokens.instance_url);
console.log(' Stored at:', tokens.stored_at);
console.log(' Has access token:', !!tokens.access_token);
console.log(' Has refresh token:', !!tokens.refresh_token);
} else {
console.log(' โ No tokens found');
}
} catch (error) {
console.log(' โ Error loading tokens:', error.message);
}
}
return hasTokens;
}
async function testTokenManager() {
console.log('\n๐ง Testing Token Manager\n');
// Get credentials from config file
const fileStorage = new FileStorageManager();
const credentials = await fileStorage.getCredentials();
if (!credentials) {
console.log('โ No credentials found in ~/.mcp-salesforce.json');
console.log('Please run the salesforce_setup tool first');
return;
}
const tokenManager = new TokenManager(
credentials.clientId,
credentials.clientSecret,
credentials.instanceUrl
);
// Test initialization
console.log('1. Initializing Token Manager...');
try {
const initialized = await tokenManager.initialize();
console.log(` Initialized: ${initialized}`);
if (initialized) {
console.log('\n2. Getting token info...');
const tokenInfo = tokenManager.getTokenInfo();
console.log(' Token info:', JSON.stringify(tokenInfo, null, 2));
console.log('\n3. Testing token validity...');
const testResult = await tokenManager.testTokens();
console.log(' Test result:', JSON.stringify(testResult, null, 2));
} else {
console.log(' โ ๏ธ Token Manager not initialized - no tokens found');
console.log(' ๐ก Run authentication first to create tokens');
}
} catch (error) {
console.log(' โ Error:', error.message);
}
}
async function main() {
console.log('๐ MCP Salesforce Token Storage Test\n');
console.log('='.repeat(50));
try {
const hasTokens = await testFileStorage();
await testTokenManager();
console.log('\n' + '='.repeat(50));
if (hasTokens) {
console.log('โ
File-based token storage is working!');
console.log('๐ก The system has been successfully migrated from Keychain to file storage.');
} else {
console.log('โน๏ธ No tokens found - run authentication to create tokens.');
console.log('๐ก New tokens will be stored in cache/salesforce-tokens.json');
}
} catch (error) {
console.log('โ Test failed:', error.message);
process.exit(1);
}
}
main().catch(console.error);