/** * Script de test pour l'intégration des services drivers * Ce script teste tous les endpoints drivers disponibles */ const API_URL = 'http://localhost:3001/api'; // Fonction pour simuler l'authentification async function getAuthToken() { try { const response = await fetch(`${API_URL}/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: 'admin@example.com', password: 'password123' }) }); if (response.ok) { const data = await response.json(); return data.token || data.access_token; } return null; } catch (error) { console.log('⚠️ Authentification non disponible, test sans token'); return null; } } // Fonction pour faire des requêtes authentifiées async function authenticatedFetch(url, options = {}) { const token = await getAuthToken(); const headers = { 'Content-Type': 'application/json', ...options.headers }; if (token) { headers['Authorization'] = `Bearer ${token}`; } return fetch(url, { ...options, headers }); } // Test 1: Récupérer tous les drivers async function testGetAllDrivers() { console.log('\n🧪 Test 1: Récupération de tous les drivers'); try { const response = await authenticatedFetch(`${API_URL}/drivers?page=1&limit=10`); const data = await response.json(); if (response.ok) { console.log('✅ Succès - Drivers récupérés:', data); return data; } else { console.log('❌ Erreur:', response.status, data); return null; } } catch (error) { console.log('❌ Erreur réseau:', error.message); return null; } } // Test 2: Récupérer un driver spécifique async function testGetDriverById(driverId) { console.log(`\n🧪 Test 2: Récupération du driver ID ${driverId}`); try { const response = await authenticatedFetch(`${API_URL}/drivers/${driverId}`); const data = await response.json(); if (response.ok) { console.log('✅ Succès - Driver récupéré:', data); return data; } else { console.log('❌ Erreur:', response.status, data); return null; } } catch (error) { console.log('❌ Erreur réseau:', error.message); return null; } } // Test 3: Récupérer les drivers d'une compagnie async function testGetDriversByCompany(companyId) { console.log(`\n🧪 Test 3: Récupération des drivers de la compagnie ID ${companyId}`); try { const response = await authenticatedFetch(`${API_URL}/companies/${companyId}/drivers?page=1&limit=10`); const data = await response.json(); if (response.ok) { console.log('✅ Succès - Drivers de la compagnie récupérés:', data); return data; } else { console.log('❌ Erreur:', response.status, data); return null; } } catch (error) { console.log('❌ Erreur réseau:', error.message); return null; } } // Test 4: Créer un nouveau driver async function testCreateDriver() { console.log('\n🧪 Test 4: Création d\'un nouveau driver'); const newDriver = { firstName: 'Test', lastName: 'Driver', phone: '+33 6 12 34 56 78', email: 'test.driver@example.com', companyId: 1, licenseNumber: 'TEST-12345', active: true }; try { const response = await authenticatedFetch(`${API_URL}/drivers`, { method: 'POST', body: JSON.stringify(newDriver) }); const data = await response.json(); if (response.ok) { console.log('✅ Succès - Driver créé:', data); return data; } else { console.log('❌ Erreur:', response.status, data); return null; } } catch (error) { console.log('❌ Erreur réseau:', error.message); return null; } } // Test 5: Mettre à jour un driver async function testUpdateDriver(driverId) { console.log(`\n🧪 Test 5: Mise à jour du driver ID ${driverId}`); const updateData = { firstName: 'Updated', lastName: 'Driver', phone: '+33 6 98 76 54 32' }; try { const response = await authenticatedFetch(`${API_URL}/drivers/${driverId}`, { method: 'PUT', body: JSON.stringify(updateData) }); const data = await response.json(); if (response.ok) { console.log('✅ Succès - Driver mis à jour:', data); return data; } else { console.log('❌ Erreur:', response.status, data); return null; } } catch (error) { console.log('❌ Erreur réseau:', error.message); return null; } } // Test 6: Supprimer un driver async function testDeleteDriver(driverId) { console.log(`\n🧪 Test 6: Suppression du driver ID ${driverId}`); try { const response = await authenticatedFetch(`${API_URL}/drivers/${driverId}`, { method: 'DELETE' }); if (response.ok) { console.log('✅ Succès - Driver supprimé'); return true; } else { const data = await response.json(); console.log('❌ Erreur:', response.status, data); return false; } } catch (error) { console.log('❌ Erreur réseau:', error.message); return false; } } // Fonction principale de test async function runIntegrationTests() { console.log('🚀 Début des tests d\'intégration des services drivers'); console.log('=' .repeat(60)); // Test de connectivité console.log('\n🔗 Test de connectivité avec le backend...'); try { const response = await fetch(`${API_URL}/health`); if (response.ok) { console.log('✅ Backend accessible'); } else { console.log('⚠️ Backend accessible mais endpoint /health non trouvé'); } } catch (error) { console.log('❌ Backend non accessible:', error.message); console.log('Assurez-vous que le serveur backend fonctionne sur le port 3001'); return; } // Exécution des tests const allDrivers = await testGetAllDrivers(); // Si on a des drivers, tester avec le premier if (allDrivers && allDrivers.data && allDrivers.data.data && allDrivers.data.data.length > 0) { const firstDriver = allDrivers.data.data[0]; await testGetDriverById(firstDriver.id); if (firstDriver.companyId) { await testGetDriversByCompany(firstDriver.companyId); } } // Test de création const createdDriver = await testCreateDriver(); // Si la création a réussi, tester la mise à jour et la suppression if (createdDriver && createdDriver.data) { const driverId = createdDriver.data.id; await testUpdateDriver(driverId); await testDeleteDriver(driverId); } console.log('\n' + '=' .repeat(60)); console.log('🏁 Tests d\'intégration terminés'); console.log('\n📋 Résumé:'); console.log('- Tous les endpoints drivers ont été testés'); console.log('- L\'authentification est gérée automatiquement'); console.log('- Les erreurs sont capturées et affichées'); console.log('\n💡 Pour utiliser dans le frontend:'); console.log('1. Importez useDriverStore dans vos composants'); console.log('2. Utilisez driverStore.fetchDrivers() pour charger les données'); console.log('3. Les méthodes CRUD sont disponibles via le store'); } // Exécution des tests runIntegrationTests().catch(console.error);