const axios = require('axios'); const BASE_URL = 'http://localhost:3000'; // Configuration des headers avec un token d'authentification (à adapter selon votre système) const headers = { 'Content-Type': 'application/json', // 'Authorization': 'Bearer YOUR_TOKEN_HERE' // Décommentez et ajoutez votre token si nécessaire }; async function testCloseRegistration() { try { console.log('🚀 Test de la fonctionnalité de fermeture d\'enregistrement\n'); // 1. Récupérer la liste des trajets console.log('1. Récupération de la liste des trajets...'); const trajetsResponse = await axios.get(`${BASE_URL}/trajets`, { headers }); const trajets = trajetsResponse.data; if (trajets.length === 0) { console.log('❌ Aucun trajet trouvé. Créez d\'abord un trajet pour tester.'); return; } const trajet = trajets[0]; console.log(`✅ Trajet trouvé: ID ${trajet.id}, Enregistrement fermé: ${trajet.registrationClosed}`); // 2. Tenter de créer une réservation avant fermeture console.log('\n2. Test de création de réservation avant fermeture...'); try { const reservationData = { trajetId: trajet.id, userId: 1, // À adapter selon vos données placeId: 1 // À adapter selon vos données }; const reservationResponse = await axios.post(`${BASE_URL}/reservations`, reservationData, { headers }); console.log('✅ Réservation créée avec succès avant fermeture'); } catch (error) { console.log(`⚠️ Erreur lors de la création de réservation: ${error.response?.data?.message || error.message}`); } // 3. Fermer l'enregistrement du trajet console.log('\n3. Fermeture de l\'enregistrement du trajet...'); try { const closeResponse = await axios.patch(`${BASE_URL}/trajets/${trajet.id}/close-registration`, {}, { headers }); console.log('✅ Enregistrement fermé avec succès'); console.log('Réponse:', closeResponse.data); } catch (error) { console.log(`❌ Erreur lors de la fermeture: ${error.response?.data?.message || error.message}`); return; } // 4. Vérifier que le trajet est marqué comme fermé console.log('\n4. Vérification du statut du trajet...'); const updatedTrajetResponse = await axios.get(`${BASE_URL}/trajets/${trajet.id}`, { headers }); const updatedTrajet = updatedTrajetResponse.data; console.log(`✅ Statut mis à jour: Enregistrement fermé: ${updatedTrajet.registrationClosed}`); // 5. Tenter de créer une réservation après fermeture console.log('\n5. Test de création de réservation après fermeture...'); try { const reservationData = { trajetId: trajet.id, userId: 2, // Différent utilisateur placeId: 2 // Différente place }; const reservationResponse = await axios.post(`${BASE_URL}/reservations`, reservationData, { headers }); console.log('❌ ERREUR: La réservation ne devrait pas être possible après fermeture!'); } catch (error) { if (error.response?.status === 400 && error.response?.data?.message?.includes('fermé')) { console.log('✅ Réservation correctement bloquée après fermeture'); console.log(`Message d'erreur: ${error.response.data.message}`); } else { console.log(`⚠️ Erreur inattendue: ${error.response?.data?.message || error.message}`); } } console.log('\n🎉 Test terminé avec succès!'); } catch (error) { console.error('❌ Erreur générale:', error.message); if (error.response) { console.error('Détails de l\'erreur:', error.response.data); } } } // Exécuter le test testCloseRegistration();