#!/usr/bin/env node const axios = require('axios'); console.log('๐Ÿงช TESTING COMPLETE EMERGENCY LOCKDOWN'); console.log('====================================='); async function testCompleteLockdown() { const baseUrl = 'http://localhost:9001'; let allTestsPassed = true; try { console.log('\n1. Testing automation status (should be emergency safe mode)...'); const status = await axios.get(`${baseUrl}/api/automation/status`); const isEmergencyMode = status.data.status.mode === 'EMERGENCY_SAFE'; console.log('โœ… Emergency mode active:', isEmergencyMode ? 'โœ… YES' : 'โŒ NO'); if (!isEmergencyMode) allTestsPassed = false; console.log('\n2. Testing automation start rate limiting...'); try { const startResult = await axios.post(`${baseUrl}/api/automation/start`, { mode: 'SIMULATION', symbol: 'SOLUSD', timeframe: '1h' }); // Try starting again immediately to test rate limiting const secondStart = await axios.post(`${baseUrl}/api/automation/start`, { mode: 'SIMULATION', symbol: 'SOLUSD', timeframe: '1h' }); const rateLimited = !secondStart.data.success && secondStart.data.message.includes('rate limit'); console.log('โœ… Rate limiting works:', rateLimited ? 'โœ… YES' : 'โŒ NO'); if (!rateLimited) allTestsPassed = false; } catch (error) { console.log('โœ… Rate limiting works: โœ… YES (blocked by server)'); } console.log('\n3. Testing analysis-optimized endpoint (should be disabled)...'); try { const analysisResult = await axios.post(`${baseUrl}/api/analysis-optimized`, { symbol: 'SOLUSD', timeframes: ['5', '15'] }); const isDisabled = !analysisResult.data.success && analysisResult.data.message.includes('disabled for safety'); console.log('โœ… Analysis-optimized disabled:', isDisabled ? 'โœ… YES' : 'โŒ NO'); if (!isDisabled) allTestsPassed = false; } catch (error) { console.log('โœ… Analysis-optimized disabled: โœ… YES (completely blocked)'); } console.log('\n4. Testing stop functionality...'); const stopResult = await axios.post(`${baseUrl}/api/automation/stop`); const stopWorks = stopResult.data.success; console.log('โœ… Stop functionality:', stopWorks ? 'โœ… WORKS' : 'โŒ BROKEN'); if (!stopWorks) allTestsPassed = false; console.log('\n5. Checking Chromium processes...'); const { execSync } = require('child_process'); const processes = execSync('docker exec trader_dev pgrep -f "chrome|chromium" | wc -l 2>/dev/null || echo "0"', { encoding: 'utf8' }).trim(); const processCount = parseInt(processes); console.log('โœ… Chromium processes:', processCount === 0 ? 'โœ… CLEAN (0)' : `โŒ ${processCount} PROCESSES FOUND`); if (processCount > 0) allTestsPassed = false; console.log('\n6. Testing automation test endpoint...'); try { const testResult = await axios.get(`${baseUrl}/api/automation/test`); const isEmergencyTest = testResult.data.safety === 'Emergency mode active'; console.log('โœ… Test endpoint emergency mode:', isEmergencyTest ? 'โœ… YES' : 'โŒ NO'); if (!isEmergencyTest) allTestsPassed = false; } catch (error) { console.log('โš ๏ธ Test endpoint:', 'Not accessible (acceptable)'); } console.log('\n๐ŸŽฏ COMPLETE EMERGENCY LOCKDOWN RESULTS:'); console.log('======================================='); if (allTestsPassed) { console.log('๐ŸŽ‰ ALL TESTS PASSED - SYSTEM COMPLETELY LOCKED DOWN'); console.log('๐Ÿ›ก๏ธ Protection Status:'); console.log(' โœ… Emergency rate limiting: ACTIVE'); console.log(' โœ… Analysis loops: DISABLED'); console.log(' โœ… Process cleanup: WORKING'); console.log(' โœ… Sequential analysis: BLOCKED'); console.log(' โœ… Chromium accumulation: PREVENTED'); console.log('\n๐Ÿ”’ The sequential analysis loop issue is COMPLETELY FIXED!'); } else { console.log('โŒ SOME TESTS FAILED - REVIEW SYSTEM STATUS'); console.log('โš ๏ธ Manual verification needed'); } } catch (error) { console.error('โŒ Lockdown test failed:', error.message); allTestsPassed = false; } return allTestsPassed; } testCompleteLockdown();