aethercall
Version:
A scalable WebRTC video calling API built with Node.js and OpenVidu
130 lines (114 loc) โข 4.82 kB
JavaScript
/**
* 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();
}