xpeditis2.0/apps/backend/test-csv-booking-api.sh
2025-12-05 13:55:40 +01:00

126 lines
3.8 KiB
Bash

#!/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 ""