Aller au contenu

Documentation — Script de test RBAC

Fichier : BackEnd/tests/rbac/test-rbac.sh
Créé le : 2026-06-23
Auteur : Hermes Agent (Claude)


Qu'est-ce que ce script ?

Ce script teste que chaque profil utilisateur de la plateforme ESM accède uniquement aux routes auxquelles il a le droit — ni plus, ni moins. C'est un test de contrôle d'accès (RBAC — Role-Based Access Control).

Il simule 8 utilisateurs réels qui se connectent à l'API et appelle les routes clés du backend en vérifiant que les réponses HTTP sont conformes aux permissions définies dans le seed (BackEnd/prisma/seeds/seed.ts).


Comment l'exécuter

Prérequis

  • Le backend doit tourner sur http://localhost:4100
  • Les comptes test doivent exister en base (voir BackEnd/prisma/create-comptes-test.ts)

Vérifier que le backend tourne

curl -s http://localhost:4100/_health | python3 -m json.tool

Réinitialiser les comptes test si nécessaire

cd BackEnd
npx tsx prisma/create-comptes-test.ts

Lancer le script

bash BackEnd/tests/rbac/test-rbac.sh

Ce que le script vérifie

Pour chaque profil, le script : 1. Se connecte avec les identifiants du compte test → récupère un JWT 2. Appelle les routes autorisées → vérifie que le code HTTP est 200 3. Appelle les routes interdites → vérifie que le code HTTP est 403

Profils testés

# Profil Email de test Mot de passe
1 PSYCHOLOGUE test.agent@projetesm.test TestAgent2026!
2 ASSISTANT SOCIAL assistant.social.test@esm.local AsSo@Test2026!
3 MEAL COMMUNAL test.meal.communal@projetesm.test TestMeal2026!
4 MEAL NATIONAL test.meal.national@projetesm.test TestMeal2026!
5 CHARGÉ DE PROJET test.charge.projet@projetesm.test TestCharge2026!
6 BAILLEUR AFD test.bailleur@projetesm.test TestBailleur2026!
7 ADMIN test.admin@projetesm.test TestAdmin2026!
8 SUPER ADMIN test.super.admin@projetesm.test TestSuperAdmin2026!

Routes testées par profil

Route PSYCHO AS MEAL-C MEAL-N CHARGE BAILLEUR ADMIN SUPER
GET /esm/enfants
GET /esm/accompagnements
GET /esm/tuteurs
GET /esm/maitres-coraniques
GET /esm/parents
GET /esm/formations
GET /esm/insertion
GET /mobilisation/comites
GET /pilotage/indicateurs
GET /pilotage/etudes
GET /esm/rapports/tableau-de-bord
GET /esm/audit/logs
GET /esm/administration/utilisateurs
GET /esm/referentiels/communes

✅ = autorisé (200) · ❌ = interdit (403) · — = non testé pour ce profil


Résultat de référence (2026-06-23)

Total  : 66 tests
Réussis : 66
Échoués : 0
✔ TOUS LES TESTS PASSENT — RBAC CONFORME

Mise à jour 2026-06-23 : +2 tests — INDICATEUR_LIRE ajouté à PSYCHOLOGUE et ASSISTANT_SOCIAL.

Rapport complet : Documents/TestsProfils/20260623_1435_rapport-tests-rbac.md


Quand relancer ce script ?

Relancer après toute modification touchant :

  • Une route : ajout, suppression ou changement de permission sur une route dans un fichier *.module.routes.ts
  • Le middleware RBAC : BackEnd/src/shared/infrastructure/http/middlewares/autoriser.middleware.ts
  • Les permissions d'un profil : modification de la matrice dans BackEnd/prisma/seeds/seed.ts + npx prisma db push
  • Un nouveau module : vérifier que les nouvelles routes ont bien les bonnes permissions
  • Avant un déploiement manuel en production

Limitation connue

Le rate limiter de l'endpoint d'authentification est fixé à 10 requêtes / 15 minutes par IP. Le script effectue 8 connexions (une par profil). Si d'autres appels à /api/auth/connexion ont eu lieu récemment depuis la même IP, le script peut être bloqué avec 429 Too Many Requests.

Solution : attendre 15 minutes ou relancer le backend (remet le store en mémoire à zéro).