the-tip-top-backend/test-roles.sh
2025-11-17 23:47:54 +01:00

135 lines
4.4 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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