#!/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 '" echo "" echo " # Test ADMIN access:" echo " curl -X GET $BASE_URL/api/admin/statistics \\" echo " -H 'Authorization: Bearer '" 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"