test-close-registration.js 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. const axios = require('axios');
  2. const BASE_URL = 'http://localhost:3000';
  3. // Configuration des headers avec un token d'authentification (à adapter selon votre système)
  4. const headers = {
  5. 'Content-Type': 'application/json',
  6. // 'Authorization': 'Bearer YOUR_TOKEN_HERE' // Décommentez et ajoutez votre token si nécessaire
  7. };
  8. async function testCloseRegistration() {
  9. try {
  10. console.log('🚀 Test de la fonctionnalité de fermeture d\'enregistrement\n');
  11. // 1. Récupérer la liste des trajets
  12. console.log('1. Récupération de la liste des trajets...');
  13. const trajetsResponse = await axios.get(`${BASE_URL}/trajets`, { headers });
  14. const trajets = trajetsResponse.data;
  15. if (trajets.length === 0) {
  16. console.log('❌ Aucun trajet trouvé. Créez d\'abord un trajet pour tester.');
  17. return;
  18. }
  19. const trajet = trajets[0];
  20. console.log(`✅ Trajet trouvé: ID ${trajet.id}, Enregistrement fermé: ${trajet.registrationClosed}`);
  21. // 2. Tenter de créer une réservation avant fermeture
  22. console.log('\n2. Test de création de réservation avant fermeture...');
  23. try {
  24. const reservationData = {
  25. trajetId: trajet.id,
  26. userId: 1, // À adapter selon vos données
  27. placeId: 1 // À adapter selon vos données
  28. };
  29. const reservationResponse = await axios.post(`${BASE_URL}/reservations`, reservationData, { headers });
  30. console.log('✅ Réservation créée avec succès avant fermeture');
  31. } catch (error) {
  32. console.log(`⚠️ Erreur lors de la création de réservation: ${error.response?.data?.message || error.message}`);
  33. }
  34. // 3. Fermer l'enregistrement du trajet
  35. console.log('\n3. Fermeture de l\'enregistrement du trajet...');
  36. try {
  37. const closeResponse = await axios.patch(`${BASE_URL}/trajets/${trajet.id}/close-registration`, {}, { headers });
  38. console.log('✅ Enregistrement fermé avec succès');
  39. console.log('Réponse:', closeResponse.data);
  40. } catch (error) {
  41. console.log(`❌ Erreur lors de la fermeture: ${error.response?.data?.message || error.message}`);
  42. return;
  43. }
  44. // 4. Vérifier que le trajet est marqué comme fermé
  45. console.log('\n4. Vérification du statut du trajet...');
  46. const updatedTrajetResponse = await axios.get(`${BASE_URL}/trajets/${trajet.id}`, { headers });
  47. const updatedTrajet = updatedTrajetResponse.data;
  48. console.log(`✅ Statut mis à jour: Enregistrement fermé: ${updatedTrajet.registrationClosed}`);
  49. // 5. Tenter de créer une réservation après fermeture
  50. console.log('\n5. Test de création de réservation après fermeture...');
  51. try {
  52. const reservationData = {
  53. trajetId: trajet.id,
  54. userId: 2, // Différent utilisateur
  55. placeId: 2 // Différente place
  56. };
  57. const reservationResponse = await axios.post(`${BASE_URL}/reservations`, reservationData, { headers });
  58. console.log('❌ ERREUR: La réservation ne devrait pas être possible après fermeture!');
  59. } catch (error) {
  60. if (error.response?.status === 400 && error.response?.data?.message?.includes('fermé')) {
  61. console.log('✅ Réservation correctement bloquée après fermeture');
  62. console.log(`Message d'erreur: ${error.response.data.message}`);
  63. } else {
  64. console.log(`⚠️ Erreur inattendue: ${error.response?.data?.message || error.message}`);
  65. }
  66. }
  67. console.log('\n🎉 Test terminé avec succès!');
  68. } catch (error) {
  69. console.error('❌ Erreur générale:', error.message);
  70. if (error.response) {
  71. console.error('Détails de l\'erreur:', error.response.data);
  72. }
  73. }
  74. }
  75. // Exécuter le test
  76. testCloseRegistration();