test-drivers-integration.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. /**
  2. * Script de test pour l'intégration des services drivers
  3. * Ce script teste tous les endpoints drivers disponibles
  4. */
  5. const API_URL = 'http://localhost:3001/api';
  6. // Fonction pour simuler l'authentification
  7. async function getAuthToken() {
  8. try {
  9. const response = await fetch(`${API_URL}/auth/login`, {
  10. method: 'POST',
  11. headers: {
  12. 'Content-Type': 'application/json'
  13. },
  14. body: JSON.stringify({
  15. email: 'admin@example.com',
  16. password: 'password123'
  17. })
  18. });
  19. if (response.ok) {
  20. const data = await response.json();
  21. return data.token || data.access_token;
  22. }
  23. return null;
  24. } catch (error) {
  25. console.log('⚠️ Authentification non disponible, test sans token');
  26. return null;
  27. }
  28. }
  29. // Fonction pour faire des requêtes authentifiées
  30. async function authenticatedFetch(url, options = {}) {
  31. const token = await getAuthToken();
  32. const headers = {
  33. 'Content-Type': 'application/json',
  34. ...options.headers
  35. };
  36. if (token) {
  37. headers['Authorization'] = `Bearer ${token}`;
  38. }
  39. return fetch(url, {
  40. ...options,
  41. headers
  42. });
  43. }
  44. // Test 1: Récupérer tous les drivers
  45. async function testGetAllDrivers() {
  46. console.log('\n🧪 Test 1: Récupération de tous les drivers');
  47. try {
  48. const response = await authenticatedFetch(`${API_URL}/drivers?page=1&limit=10`);
  49. const data = await response.json();
  50. if (response.ok) {
  51. console.log('✅ Succès - Drivers récupérés:', data);
  52. return data;
  53. } else {
  54. console.log('❌ Erreur:', response.status, data);
  55. return null;
  56. }
  57. } catch (error) {
  58. console.log('❌ Erreur réseau:', error.message);
  59. return null;
  60. }
  61. }
  62. // Test 2: Récupérer un driver spécifique
  63. async function testGetDriverById(driverId) {
  64. console.log(`\n🧪 Test 2: Récupération du driver ID ${driverId}`);
  65. try {
  66. const response = await authenticatedFetch(`${API_URL}/drivers/${driverId}`);
  67. const data = await response.json();
  68. if (response.ok) {
  69. console.log('✅ Succès - Driver récupéré:', data);
  70. return data;
  71. } else {
  72. console.log('❌ Erreur:', response.status, data);
  73. return null;
  74. }
  75. } catch (error) {
  76. console.log('❌ Erreur réseau:', error.message);
  77. return null;
  78. }
  79. }
  80. // Test 3: Récupérer les drivers d'une compagnie
  81. async function testGetDriversByCompany(companyId) {
  82. console.log(`\n🧪 Test 3: Récupération des drivers de la compagnie ID ${companyId}`);
  83. try {
  84. const response = await authenticatedFetch(`${API_URL}/companies/${companyId}/drivers?page=1&limit=10`);
  85. const data = await response.json();
  86. if (response.ok) {
  87. console.log('✅ Succès - Drivers de la compagnie récupérés:', data);
  88. return data;
  89. } else {
  90. console.log('❌ Erreur:', response.status, data);
  91. return null;
  92. }
  93. } catch (error) {
  94. console.log('❌ Erreur réseau:', error.message);
  95. return null;
  96. }
  97. }
  98. // Test 4: Créer un nouveau driver
  99. async function testCreateDriver() {
  100. console.log('\n🧪 Test 4: Création d\'un nouveau driver');
  101. const newDriver = {
  102. firstName: 'Test',
  103. lastName: 'Driver',
  104. phone: '+33 6 12 34 56 78',
  105. email: 'test.driver@example.com',
  106. companyId: 1,
  107. licenseNumber: 'TEST-12345',
  108. active: true
  109. };
  110. try {
  111. const response = await authenticatedFetch(`${API_URL}/drivers`, {
  112. method: 'POST',
  113. body: JSON.stringify(newDriver)
  114. });
  115. const data = await response.json();
  116. if (response.ok) {
  117. console.log('✅ Succès - Driver créé:', data);
  118. return data;
  119. } else {
  120. console.log('❌ Erreur:', response.status, data);
  121. return null;
  122. }
  123. } catch (error) {
  124. console.log('❌ Erreur réseau:', error.message);
  125. return null;
  126. }
  127. }
  128. // Test 5: Mettre à jour un driver
  129. async function testUpdateDriver(driverId) {
  130. console.log(`\n🧪 Test 5: Mise à jour du driver ID ${driverId}`);
  131. const updateData = {
  132. firstName: 'Updated',
  133. lastName: 'Driver',
  134. phone: '+33 6 98 76 54 32'
  135. };
  136. try {
  137. const response = await authenticatedFetch(`${API_URL}/drivers/${driverId}`, {
  138. method: 'PUT',
  139. body: JSON.stringify(updateData)
  140. });
  141. const data = await response.json();
  142. if (response.ok) {
  143. console.log('✅ Succès - Driver mis à jour:', data);
  144. return data;
  145. } else {
  146. console.log('❌ Erreur:', response.status, data);
  147. return null;
  148. }
  149. } catch (error) {
  150. console.log('❌ Erreur réseau:', error.message);
  151. return null;
  152. }
  153. }
  154. // Test 6: Supprimer un driver
  155. async function testDeleteDriver(driverId) {
  156. console.log(`\n🧪 Test 6: Suppression du driver ID ${driverId}`);
  157. try {
  158. const response = await authenticatedFetch(`${API_URL}/drivers/${driverId}`, {
  159. method: 'DELETE'
  160. });
  161. if (response.ok) {
  162. console.log('✅ Succès - Driver supprimé');
  163. return true;
  164. } else {
  165. const data = await response.json();
  166. console.log('❌ Erreur:', response.status, data);
  167. return false;
  168. }
  169. } catch (error) {
  170. console.log('❌ Erreur réseau:', error.message);
  171. return false;
  172. }
  173. }
  174. // Fonction principale de test
  175. async function runIntegrationTests() {
  176. console.log('🚀 Début des tests d\'intégration des services drivers');
  177. console.log('=' .repeat(60));
  178. // Test de connectivité
  179. console.log('\n🔗 Test de connectivité avec le backend...');
  180. try {
  181. const response = await fetch(`${API_URL}/health`);
  182. if (response.ok) {
  183. console.log('✅ Backend accessible');
  184. } else {
  185. console.log('⚠️ Backend accessible mais endpoint /health non trouvé');
  186. }
  187. } catch (error) {
  188. console.log('❌ Backend non accessible:', error.message);
  189. console.log('Assurez-vous que le serveur backend fonctionne sur le port 3001');
  190. return;
  191. }
  192. // Exécution des tests
  193. const allDrivers = await testGetAllDrivers();
  194. // Si on a des drivers, tester avec le premier
  195. if (allDrivers && allDrivers.data && allDrivers.data.data && allDrivers.data.data.length > 0) {
  196. const firstDriver = allDrivers.data.data[0];
  197. await testGetDriverById(firstDriver.id);
  198. if (firstDriver.companyId) {
  199. await testGetDriversByCompany(firstDriver.companyId);
  200. }
  201. }
  202. // Test de création
  203. const createdDriver = await testCreateDriver();
  204. // Si la création a réussi, tester la mise à jour et la suppression
  205. if (createdDriver && createdDriver.data) {
  206. const driverId = createdDriver.data.id;
  207. await testUpdateDriver(driverId);
  208. await testDeleteDriver(driverId);
  209. }
  210. console.log('\n' + '=' .repeat(60));
  211. console.log('🏁 Tests d\'intégration terminés');
  212. console.log('\n📋 Résumé:');
  213. console.log('- Tous les endpoints drivers ont été testés');
  214. console.log('- L\'authentification est gérée automatiquement');
  215. console.log('- Les erreurs sont capturées et affichées');
  216. console.log('\n💡 Pour utiliser dans le frontend:');
  217. console.log('1. Importez useDriverStore dans vos composants');
  218. console.log('2. Utilisez driverStore.fetchDrivers() pour charger les données');
  219. console.log('3. Les méthodes CRUD sont disponibles via le store');
  220. }
  221. // Exécution des tests
  222. runIntegrationTests().catch(console.error);