UNPKG

aethercall

Version:

A scalable WebRTC video calling API built with Node.js and OpenVidu

130 lines (114 loc) โ€ข 4.82 kB
/** * Simple API test script to debug the connections endpoint issue */ const axios = require('axios'); const API_BASE_URL = 'http://localhost:3000'; async function testAPI() { try { console.log('๐Ÿงช Testing AetherCall API...\n'); // Test 1: Health check console.log('1. Testing health endpoint...'); const healthResponse = await axios.get(`${API_BASE_URL}/health`); console.log('โœ… Health check successful:', healthResponse.data); // Test 2: Root endpoint to see available routes console.log('\n2. Testing root endpoint...'); const rootResponse = await axios.get(`${API_BASE_URL}/`); console.log('โœ… Root endpoint successful:', rootResponse.data); // Test 3: Get API token console.log('\n3. Testing token generation...'); const tokenResponse = await axios.post(`${API_BASE_URL}/api/auth/token`, { clientId: 'test-client' }); console.log('โœ… Token generation successful'); const token = tokenResponse.data.data.accessToken; // Test 4: Test connections endpoint with token console.log('\n4. Testing connections endpoint...'); try { const connectionsResponse = await axios.get(`${API_BASE_URL}/api/connections`, { headers: { Authorization: `Bearer ${token}` } }); console.log('โœ… Connections endpoint successful:', connectionsResponse.data); } catch (error) { console.log('โŒ Connections endpoint failed:', error.response?.data || error.message); } // Test 5: Test join-room endpoint specifically console.log('\n5. Testing join-room endpoint...'); try { const joinRoomResponse = await axios.post(`${API_BASE_URL}/api/connections/join-room`, { roomCode: 'TEST123', userId: 'test-user', displayName: 'Test User', role: 'PUBLISHER' }); console.log('โœ… Join room successful:', joinRoomResponse.data); } catch (error) { console.log('โŒ Join room failed:', error.response?.data || error.message); console.log('Error details:', { status: error.response?.status, statusText: error.response?.statusText, url: error.config?.url }); } // Test 6: Create a room first, then try to join console.log('\n6. Creating a room first, then joining...'); try { const roomResponse = await axios.post(`${API_BASE_URL}/api/auth/room`, { roomName: 'Test Room', maxParticipants: 10 }, { headers: { Authorization: `Bearer ${token}` } }); console.log('โœ… Room created:', roomResponse.data); const roomCode = roomResponse.data.data.roomCode; // Now try to join this room const joinResponse = await axios.post(`${API_BASE_URL}/api/connections/join-room`, { roomCode: roomCode, userId: 'test-user', displayName: 'Test User', role: 'PUBLISHER' }); console.log('โœ… Successfully joined room:', joinResponse.data); } catch (error) { console.log('โŒ Room creation/join failed:', error.response?.data || error.message); } } catch (error) { console.error('โŒ API test failed:', error.message); if (error.response) { console.error('Response data:', error.response.data); console.error('Response status:', error.response.status); } } } // Add axios dependency check async function checkDependencies() { try { require('axios'); console.log('โœ… axios is available'); } catch (error) { console.log('โŒ axios not found, installing...'); const { exec } = require('child_process'); return new Promise((resolve, reject) => { exec('npm install axios', (error, stdout, stderr) => { if (error) { console.error('Failed to install axios:', error); reject(error); } else { console.log('โœ… axios installed successfully'); resolve(); } }); }); } } async function main() { try { await checkDependencies(); await testAPI(); } catch (error) { console.error('Test failed:', error.message); process.exit(1); } } if (require.main === module) { main(); }