Aller au contenu

PD-241 — Scénarios de tests contractuels

1. Références

  • Spécification : PD-241-specification.md
  • Epic : PD-182 AUTH

2. Matrice de couverture

ID Invariant ID Critère ID Test Couverture Commentaire
INV-241-01 CA-241-01 TC-ERR-01 Oui Rejet sans JWT.
INV-241-02 CA-241-02 TC-NOM-01 Oui Invalidation session Keycloak.
INV-241-03 CA-241-03 TC-NOM-02 Oui Invalidation refresh token si présent.
INV-241-04 CA-241-05 TC-ERR-03 Oui Format d'erreur {error,message}.
INV-241-05 CA-241-04 TC-ERR-02 Oui Erreur explicite en cas d'échec Keycloak.
INV-241-06 CA-241-06 TC-INV-01 NON TESTABLE Effacement local PD-106.

3. Scénarios de test – Flux nominaux

TEST-ID: TC-NOM-01
Référence spec: INV-241-02, CA-241-02, F-241-01

GIVEN
  - Un utilisateur U1 authentifié avec JWT valide.
  - Une session Keycloak active associée au JWT.
WHEN
  - U1 appelle `POST /auth/logout` avec le JWT valide.
THEN
  - La réponse indique un succès explicite.
AND
  - Toute tentative de réutilisation du JWT est refusée côté serveur.
TEST-ID: TC-NOM-02
Référence spec: INV-241-03, CA-241-03, F-241-01

GIVEN
  - Un utilisateur U1 authentifié avec JWT valide.
  - Un refresh token valide associé à la session.
WHEN
  - U1 appelle `POST /auth/logout` avec le JWT valide et le refresh token (si présent selon contrat).
THEN
  - La réponse indique un succès explicite.
AND
  - Toute tentative de réutilisation du refresh token est refusée côté serveur.

4. Scénarios de test – Cas d'erreur

TEST-ID: TC-ERR-01
Référence spec: ERR-241-UNAUTHENTICATED, CA-241-01, INV-241-01

GIVEN
  - Aucun JWT valide.
WHEN
  - Appel `POST /auth/logout`.
THEN
  - Refus explicite `ERR-241-UNAUTHENTICATED`.
AND
  - Aucune invalidation de session n'est effectuée.
TEST-ID: TC-ERR-02
Référence spec: ERR-241-LOGOUT-FAILED, CA-241-04, INV-241-05

GIVEN
  - Un utilisateur U1 authentifié avec JWT valide.
  - Une erreur déterministe injectée sur l'invalidation Keycloak.
WHEN
  - U1 appelle `POST /auth/logout`.
THEN
  - Refus explicite `ERR-241-LOGOUT-FAILED`.
AND
  - La session Keycloak reste active.
TEST-ID: TC-ERR-03
Référence spec: INV-241-04, CA-241-05

GIVEN
  - Une condition d'erreur (ex. ERR-241-UNAUTHENTICATED ou ERR-241-LOGOUT-FAILED).
WHEN
  - L'API retourne l'erreur.
THEN
  - Le format est strictement `{error: "ERR-241-*", message: "..."}`.

5. Tests d'invariants (non négociables)

Invariant Test(s) dédiés Observable Commentaire
INV-241-01 TC-ERR-01 401 + ERR-241-UNAUTHENTICATED JWT requis
INV-241-02 TC-NOM-01 Rejet de réutilisation JWT Session Keycloak invalidée
INV-241-03 TC-NOM-02 Rejet de réutilisation refresh token Refresh invalidé
INV-241-04 TC-ERR-03 Format Conformité PD-106
INV-241-05 TC-ERR-02 ERR-241-LOGOUT-FAILED Erreur explicite
INV-241-06 TC-INV-01 N/A Hors périmètre

6. Tests de non-régression

Test ID Objet Observable Commentaire
TC-NR-01 JWT requis 401 sans JWT Réutilise TC-ERR-01
TC-NR-02 Invalidation JWT Réutilisation refusée Réutilise TC-NOM-01
TC-NR-03 Invalidation refresh token Réutilisation refusée Réutilise TC-NOM-02
TC-NR-04 Erreur explicite Keycloak ERR-241-LOGOUT-FAILED Réutilise TC-ERR-02

7. Tests négatifs et adversariaux

Test ID Entrée invalide / abus Résultat attendu Observable
TC-NEG-01 JWT expiré ERR-241-UNAUTHENTICATED Réponse erreur
TC-NEG-02 Refresh token déjà révoqué Refus de réutilisation Réponse auth/invalid_token
TC-NEG-03 Rafales d'appels logout Réponses cohérentes (idempotence) Statut HTTP + erreurs

8. Observabilité requise pour les tests

  • État système : session Keycloak invalide après logout (réutilisation refusée).
  • Réponse API : format {error, message} pour erreurs.
  • Journal d'audit : traces d'invalidation de session (si disponibles).
  • Événement signé / horodaté : journal d'invalidation (si disponible).
  • Export probatoire : N/A pour PD-241.

9. Règles non testables

Règle Raison Impact
INV-241-06 / CA-241-06 Effacement local de session côté client (PD-106) Bloquant pour conformité globale si artefact PD-106 absent

10. Verdict QA

  • ⚠️ Testable partiellement (avec réserves listées)