/**
* Simple Async Backup Test
*/
console.log('๐งช Starting Async Backup System Test...\n');
async function runTest() {
try {
// Import modules
const { BackupJobManager, SalesforceBackupManager } = await import('./src/backup/manager.js');
const { handleSalesforceBackup, handleSalesforceBackupStatus } = await import('./src/tools/backup.js');
console.log('โ
All modules imported successfully');
// Mock client
const mockClient = {
baseUrl: 'https://test.salesforce.com',
accessToken: 'mock_token',
async request() {
return {
ok: true,
json: async () => ({ records: [] }),
arrayBuffer: async () => new ArrayBuffer(1024),
status: 200,
statusText: 'OK'
};
}
};
// Test 1: Direct BackupJobManager
console.log('\n๐ Test 1: BackupJobManager');
const jobManager = new BackupJobManager({ testMode: true });
const startTime = Date.now();
const result = await jobManager.startBackupJob(mockClient, {
outputDirectory: './test-simple',
backupType: 'incremental'
});
const responseTime = Date.now() - startTime;
console.log(`โก Response time: ${responseTime}ms`);
console.log(`๐ Job ID: ${result.jobId}`);
console.log(`โก Status: ${result.status}`);
if (responseTime < 100) {
console.log('โ
Fast response time');
} else {
console.log('โ Response time too slow');
}
// Test 2: MCP Tool Integration
console.log('\n๐ Test 2: MCP Tool Integration');
const mcpResult = await handleSalesforceBackup({
backup_type: 'files_only',
include_files: true
}, mockClient);
if (mcpResult && mcpResult.content && mcpResult.content[0]) {
const text = mcpResult.content[0].text;
if (text.includes('backup started') && text.includes('Job ID')) {
console.log('โ
MCP tool working correctly');
} else {
console.log('โ MCP tool response incorrect');
}
} else {
console.log('โ MCP tool response structure invalid');
}
// Test 3: Status Tool
console.log('\n๐ Test 3: Status Tool');
const statusResult = await handleSalesforceBackupStatus({}, mockClient);
if (statusResult && statusResult.content && statusResult.content[0]) {
console.log('โ
Status tool working correctly');
} else {
console.log('โ Status tool not working');
}
// Cleanup
const fs = await import('fs/promises');
await fs.rm('./test-simple', { recursive: true, force: true }).catch(() => {});
await fs.rm('./backups', { recursive: true, force: true }).catch(() => {});
console.log('\n๐ All tests completed successfully!');
console.log('โ
Async backup system is ready for production');
} catch (error) {
console.error('โ Test failed:', error.message);
console.error('Stack:', error.stack);
process.exit(1);
}
}
runTest().then(() => {
console.log('๐ Test completed - exiting...');
process.exit(0);
}).catch(error => {
console.error('๐ฅ Fatal error:', error);
process.exit(1);
});
// Force exit after 5 seconds
setTimeout(() => {
console.log('โฐ Test timeout - forcing exit');
process.exit(0);
}, 5000);