Aller au contenu

PD-239 — Scénarios de tests contractuels

1. Références

Spécification : PD-239-specification.md Epic : PD-182 AUTH JIRA : PD-239

2. Matrice de couverture

ID Invariant ID Critère ID Test Couverture Commentaire INV-239-01 CA-239-01 T-239-ERR-01 Oui Refus sans JWT. INV-239-02 CA-239-02 T-239-ERR-02 Oui Refus sans reauth token. INV-239-03 CA-239-03 T-239-ERR-03 Oui Ancien mot de passe invalide. INV-239-04 CA-239-04 T-239-ERR-04 Oui Nouveau mot de passe non conforme. INV-239-05 CA-239-05 T-239-NOM-01 Oui Sessions invalidées après succès. INV-239-06 CA-239-06 T-239-ERR-05 Oui Format d'erreur {error,message}. INV-239-07 CA-239-07 T-239-ERR-03 Oui Motif exploitable (ancien mdp invalide). INV-239-07 CA-239-07 T-239-ERR-04 Oui Motif exploitable (politique). INV-239-08 - T-239-INV-01 Oui Délégation Keycloak observée. INV-239-09 CA-239-08 T-239-INV-02 NON TESTABLE Hors périmètre. INV-239-10 CA-239-09 T-239-INV-01 Oui Log keycloak_password_change. INV-239-06 CA-239-06 T-239-ERR-08 Oui Normalisation erreurs Keycloak.

3. Scénarios de test

T-239-NOM-01 — Changement de mot de passe nominal Exigences : INV-239-05, CA-239-05, F-239-01

GIVEN

Utilisateur U1 authentifié avec JWT valide. Reauth token valide (PD-238) transmis. Ancien mot de passe correct et nouveau mot de passe conforme à la politique Keycloak. WHEN Appel POST /user/password/change. THEN La réponse indique un succès explicite. AND Toute session/token précédent de U1 est invalidé (refus d'un token antérieur).

T-239-ERR-01 — Rejet sans JWT Exigences : INV-239-01, CA-239-01, ERR-239-UNAUTHENTICATED

GIVEN

Aucun JWT valide. WHEN Appel POST /user/password/change. THEN Refus explicite avec ERR-239-UNAUTHENTICATED.

T-239-ERR-02 — Rejet sans reauth token Exigences : INV-239-02, CA-239-02, ERR-239-UNAUTHORIZED-REAUTH

GIVEN

JWT valide. Reauth token absent ou invalide. WHEN Appel POST /user/password/change. THEN Refus explicite avec ERR-239-UNAUTHORIZED-REAUTH.

T-239-ERR-03 — Ancien mot de passe invalide Exigences : INV-239-03, INV-239-07, CA-239-03, CA-239-07, ERR-239-PWD-INVALID

GIVEN

JWT valide. Reauth token valide. WHEN Appel POST /user/password/change avec ancien mot de passe invalide. THEN Refus explicite avec ERR-239-PWD-INVALID. AND Motif exploitable présent dans message. AND Aucun changement de mot de passe effectué.

T-239-ERR-04 — Nouveau mot de passe non conforme Exigences : INV-239-04, INV-239-07, CA-239-04, CA-239-07, ERR-239-PWD-POLICY

GIVEN

JWT valide. Reauth token valide. WHEN Appel POST /user/password/change avec nouveau mot de passe non conforme. THEN Refus explicite avec ERR-239-PWD-POLICY. AND Motif exploitable présent dans message. AND Le message est générique et ne détaille pas la règle de complexité. AND Aucun changement de mot de passe effectué.

T-239-ERR-05 — Format d'erreur contractuel Exigences : INV-239-06, CA-239-06

GIVEN

Une condition d'erreur (ex. ERR-239-PWD-INVALID). WHEN L'API retourne l'erreur. THEN Le format est strictement {error: "ERR-239-*", message: "..."}.

T-239-ERR-06 — Invalidation des sessions échoue Exigences : ERR-239-SESSION-INVALIDATION-FAILED

GIVEN

Changement de mot de passe réussi côté Keycloak. Invalidation des sessions échoue (erreur déterministe). WHEN L'API tente d'invalider les sessions. THEN Réponse ERR-239-SESSION-INVALIDATION-FAILED. AND Le changement n'est pas annulé.

T-239-ERR-07 — Erreur interne Exigences : ERR-239-INTERNAL, INV-239-06

GIVEN

Erreur interne déterministe injectée. WHEN Appel POST /user/password/change. THEN Refus explicite avec ERR-239-INTERNAL. AND Le format {error, message} est respecté.

T-239-ERR-08 — Normalisation des erreurs Keycloak Exigences : INV-239-06

GIVEN

Une erreur Keycloak déterministe est injectée (400, 401/403, 404, 5xx). WHEN Appel POST /user/password/change. THEN Les erreurs sont normalisées en ERR-239-* selon le mapping contractuel. AND Le format {error, message} est respecté.

T-239-INV-01 — Délégation Keycloak Exigences : INV-239-08, INV-239-10, CA-239-09

GIVEN

JWT valide. Reauth token valide. WHEN Appel POST /user/password/change. THEN Une trace de log structurée contient event=keycloak_password_change et userId=<sub>.

T-239-INV-02 — Preuve RGPD hors périmètre Exigences : INV-239-09, CA-239-08

GIVEN

Périmètre limité à PD-239. WHEN L'auditeur demande la preuve RGPD exhaustive. THEN NON TESTABLE dans ce périmètre.

4. Tests non automatisables

Règle Raison Impact INV-239-09 / CA-239-08 Hors périmètre PD‑239 ; dépend d'artefacts conformité externes Bloquant pour conformité RGPD globale si artefacts absents

5. Verdict QA

✅ Tous les invariants et critères d'acceptation sont couverts par au moins un test.

Invariants couverts : 10/10 références, dont 1 NON TESTABLE (INV-239-09) Critères couverts : 9/9 références, dont 1 NON TESTABLE (CA-239-08) Verdict : ⚠️ Testable partiellement (RGPD hors périmètre)