#!/usr/bin/env node /** * Test HTTP Utility * * Tests the HTTP utility for compatibility in environments with/without curl */ const HttpUtil = require('./lib/http-util'); async function testHttpUtil() { console.log('šŸ”§ TESTING HTTP UTILITY'); console.log('='.repeat(50)); // Test curl availability const isCurlAvailable = await HttpUtil.checkCurlAvailability(); console.log(`šŸ“‹ curl available: ${isCurlAvailable ? 'āœ… YES' : 'āŒ NO'}`); if (isCurlAvailable) { console.log(' Will use curl for HTTP requests'); } else { console.log(' Will use built-in Node.js http module'); } console.log('\n🌐 Testing position monitor endpoint...'); try { const data = await HttpUtil.get('http://localhost:9001/api/automation/position-monitor'); console.log('āœ… HTTP request successful!'); console.log(`šŸ“Š Response: ${JSON.stringify(data, null, 2).substring(0, 200)}...`); if (data.success) { console.log('šŸŽÆ Position monitor API responding correctly'); if (data.monitor?.hasPosition) { console.log(`šŸ“ˆ Active position: ${data.monitor.position?.symbol || 'Unknown'}`); console.log(`šŸ’° P&L: $${data.monitor.position?.unrealizedPnl || 0}`); console.log(`āš ļø Distance to SL: ${data.monitor.stopLossProximity?.distancePercent || 'N/A'}%`); } else { console.log('šŸ“Š No active positions'); } } else { console.log('āš ļø API responded but with success: false'); } } catch (error) { console.log(`āŒ HTTP request failed: ${error.message}`); if (error.message.includes('ECONNREFUSED')) { console.log('šŸ’” Server not running on localhost:9001'); } else if (error.message.includes('timeout')) { console.log('šŸ’” Request timed out - server may be slow'); } else { console.log('šŸ’” Other error - check server status'); } } console.log('\nšŸ”§ HTTP Utility Test Complete'); console.log(`āœ… Fallback system ${isCurlAvailable ? 'not needed' : 'working'}`); } // Run the test if (require.main === module) { testHttpUtil().catch(console.error); } module.exports = { testHttpUtil };