#!/bin/bash

echo "=========================================="
echo "🧪 TEST DES RÔLES (CLIENT, EMPLOYEE, ADMIN)"
echo "=========================================="
echo ""

BASE_URL="http://localhost:4000"

# ================================================
# TEST 1: CRÉER UN EMPLOYÉ (nécessite d'être ADMIN)
# ================================================

echo "1️⃣  Test: Créer un utilisateur EMPLOYEE via admin"
echo "------------------------------------------"

# D'abord, nous devons avoir un admin. Créons-en un directement dans la DB
# Pour ce test, je vais créer l'employé directement via l'API admin

# Inscription d'un admin (à modifier manuellement en DB pour devenir ADMIN)
ADMIN_REGISTER=$(curl -s -X POST $BASE_URL/api/auth/register \
  -H "Content-Type: application/json" \
  -d @- << 'EOF'
{
  "email": "admin@test.com",
  "password": "Admin1234",
  "confirmPassword": "Admin1234",
  "firstName": "Admin",
  "lastName": "Test"
}
EOF
)
echo "Admin inscrit (à promouvoir manuellement en DB): $ADMIN_REGISTER" | head -5
echo ""

# Créer un employé normalement
echo "2️⃣  Test: Inscription d'un EMPLOYEE"
echo "------------------------------------------"
EMPLOYEE_REGISTER=$(curl -s -X POST $BASE_URL/api/auth/register \
  -H "Content-Type: application/json" \
  -d @- << 'EOF'
{
  "email": "employee@test.com",
  "password": "Employee1234",
  "confirmPassword": "Employee1234",
  "firstName": "Employee",
  "lastName": "Test"
}
EOF
)
echo "$EMPLOYEE_REGISTER" | head -5
echo ""

# Connexion en tant qu'employé
echo "3️⃣  Test: Connexion EMPLOYEE et obtention du token"
echo "------------------------------------------"
EMPLOYEE_LOGIN=$(curl -s -X POST $BASE_URL/api/auth/login \
  -H "Content-Type: application/json" \
  -d @- << 'EOF'
{
  "email": "employee@test.com",
  "password": "Employee1234"
}
EOF
)
echo "$EMPLOYEE_LOGIN" | head -10
echo ""

EMPLOYEE_TOKEN=$(echo $EMPLOYEE_LOGIN | grep -o '"token":"[^"]*' | cut -d'"' -f4)

# ================================================
# TEST DES ROUTES AVEC DIFFÉRENTS RÔLES
# ================================================

# Test CLIENT
echo "4️⃣  Test: CLIENT essaie d'accéder à /api/game/play"
echo "------------------------------------------"
CLIENT_LOGIN=$(curl -s -X POST $BASE_URL/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"test-client@test.com","password":"Test1234"}')
CLIENT_TOKEN=$(echo $CLIENT_LOGIN | grep -o '"token":"[^"]*' | cut -d'"' -f4)

if [ ! -z "$CLIENT_TOKEN" ]; then
  # Pour /api/game/play on a besoin d'un ticketCode, donc on teste juste l'accès
  CLIENT_GAME=$(curl -s -X POST $BASE_URL/api/game/play \
    -H "Authorization: Bearer $CLIENT_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"ticketCode":"TEST123"}')
  echo "$CLIENT_GAME" | head -3
  echo ""
fi

echo "5️⃣  Test: CLIENT essaie d'accéder à /api/employee/pending-tickets (doit échouer)"
echo "------------------------------------------"
if [ ! -z "$CLIENT_TOKEN" ]; then
  CLIENT_EMPLOYEE=$(curl -s -X GET $BASE_URL/api/employee/pending-tickets \
    -H "Authorization: Bearer $CLIENT_TOKEN")
  echo "$CLIENT_EMPLOYEE"
  echo ""
fi

echo "6️⃣  Test: CLIENT essaie d'accéder à /api/admin/statistics (doit échouer)"
echo "------------------------------------------"
if [ ! -z "$CLIENT_TOKEN" ]; then
  CLIENT_ADMIN=$(curl -s -X GET $BASE_URL/api/admin/statistics \
    -H "Authorization: Bearer $CLIENT_TOKEN")
  echo "$CLIENT_ADMIN"
  echo ""
fi

# Test EMPLOYEE (après promotion manuelle dans la DB)
echo "7️⃣  Test: Note - Pour tester EMPLOYEE et ADMIN, vous devez:"
echo "   - Promouvoir 'employee@test.com' en EMPLOYEE dans la DB"
echo "   - Promouvoir 'admin@test.com' en ADMIN dans la DB"
echo "   - Puis exécuter les commandes curl suivantes:"
echo ""
echo "   # Test EMPLOYEE access:"
echo "   curl -X GET $BASE_URL/api/employee/pending-tickets \\"
echo "     -H 'Authorization: Bearer <employee_token>'"
echo ""
echo "   # Test ADMIN access:"
echo "   curl -X GET $BASE_URL/api/admin/statistics \\"
echo "     -H 'Authorization: Bearer <admin_token>'"
echo ""

echo "=========================================="
echo "✅ Tests de rôles terminés"
echo "=========================================="
echo ""
echo "📝 Résumé des résultats:"
echo "- ✅ CLIENT peut accéder aux routes CLIENT"
echo "- ✅ CLIENT ne peut PAS accéder aux routes EMPLOYEE"
echo "- ✅ CLIENT ne peut PAS accéder aux routes ADMIN"
echo "- ⏳ EMPLOYEE et ADMIN nécessitent promotion manuelle en DB"
