#!/bin/bash # Test script pour créer un CSV booking via API et vérifier l'envoi d'email # # Usage: ./test-csv-booking-api.sh echo "🧪 Test de création de CSV Booking avec envoi d'email" echo "======================================================" echo "" # Configuration API_URL="http://localhost:4000/api/v1" TEST_EMAIL="transporteur@test.com" # Couleurs GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${YELLOW}📋 Étape 1: Connexion et obtention du token JWT${NC}" echo "----------------------------------------------" # Login (utilisez vos credentials de test) LOGIN_RESPONSE=$(curl -s -X POST "${API_URL}/auth/login" \ -H "Content-Type: application/json" \ -d '{ "email": "admin@xpeditis.com", "password": "admin123" }') echo "Response: $LOGIN_RESPONSE" # Extraire le token TOKEN=$(echo $LOGIN_RESPONSE | grep -o '"accessToken":"[^"]*"' | cut -d'"' -f4) if [ -z "$TOKEN" ]; then echo -e "${RED}❌ Échec de connexion. Vérifiez vos credentials.${NC}" echo "Essayez avec d'autres credentials ou créez un utilisateur de test." exit 1 fi echo -e "${GREEN}✅ Token obtenu: ${TOKEN:0:20}...${NC}" echo "" echo -e "${YELLOW}📋 Étape 2: Création d'un fichier de test${NC}" echo "----------------------------------------------" # Créer un fichier PDF factice cat > /tmp/test-bol.txt << EOF BILL OF LADING - TEST ==================== Booking ID: TEST-$(date +%s) Origin: FRPAR Destination: USNYC Date: $(date) This is a test document. EOF echo -e "${GREEN}✅ Fichier de test créé: /tmp/test-bol.txt${NC}" echo "" echo -e "${YELLOW}📋 Étape 3: Création du CSV booking${NC}" echo "----------------------------------------------" echo "Email transporteur: $TEST_EMAIL" echo "" # Créer le booking avec curl multipart BOOKING_RESPONSE=$(curl -s -X POST "${API_URL}/csv-bookings" \ -H "Authorization: Bearer ${TOKEN}" \ -F "carrierName=Test Carrier Ltd" \ -F "carrierEmail=${TEST_EMAIL}" \ -F "origin=FRPAR" \ -F "destination=USNYC" \ -F "volumeCBM=12.5" \ -F "weightKG=850" \ -F "palletCount=4" \ -F "priceUSD=1800" \ -F "priceEUR=1650" \ -F "primaryCurrency=USD" \ -F "transitDays=16" \ -F "containerType=20FT" \ -F "notes=Test booking créé via script automatique" \ -F "files=@/tmp/test-bol.txt") echo "Response:" echo "$BOOKING_RESPONSE" | jq '.' 2>/dev/null || echo "$BOOKING_RESPONSE" echo "" # Vérifier si le booking a été créé BOOKING_ID=$(echo $BOOKING_RESPONSE | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) if [ -z "$BOOKING_ID" ]; then echo -e "${RED}❌ Échec de création du booking${NC}" echo "Vérifiez les logs du backend pour plus de détails." exit 1 fi echo -e "${GREEN}✅ Booking créé avec succès!${NC}" echo " Booking ID: $BOOKING_ID" echo "" echo -e "${YELLOW}📋 Étape 4: Vérification des logs backend${NC}" echo "----------------------------------------------" echo "Recherchez dans les logs backend:" echo " ✅ Email sent to carrier: ${TEST_EMAIL}" echo " ✅ CSV booking request sent to ${TEST_EMAIL}" echo "" echo "Si vous NE voyez PAS ces logs, l'email n'a PAS été envoyé." echo "" echo -e "${YELLOW}📋 Étape 5: Vérifier Mailtrap${NC}" echo "----------------------------------------------" echo "1. Ouvrez: https://mailtrap.io/inboxes" echo "2. Cherchez: 'Nouvelle demande de réservation - FRPAR → USNYC'" echo "3. Vérifiez: Le template HTML avec boutons Accepter/Refuser" echo "" echo -e "${GREEN}✅ Test terminé${NC}" echo "Si vous ne recevez pas l'email:" echo " 1. Vérifiez les logs backend (voir ci-dessus)" echo " 2. Exécutez: node debug-email-flow.js" echo " 3. Vérifiez que le backend a bien redémarré avec la correction" echo ""