Aller au contenu

PD-238 — Matrice de traçabilité Invariants ↔ Tests

Date : 2026-02-06 Version : v1 (ZO-01 resolution)

Objectif

Ce document établit la traçabilité entre les 15 invariants de la spécification PD-238 et les tests qui les couvrent.

Matrice de couverture

Invariant Description Tests associés Statut
INV-238-01 Tous les endpoints /user/mfa/* DOIVENT exiger un JWT valide TC-ERR-01, TC-ERR-02, TC-ERR-03 ✅ COUVERT
INV-238-02 Un utilisateur NE DOIT pouvoir consulter/modifier que son propre MFA TC-ERR-04, tests unitaires MfaManagementService ✅ COUVERT
INV-238-03 GET /user/mfa/status DOIT retourner {enabled, method, configuredAt} TC-NOM-01, tests unitaires getStatus ✅ COUVERT
INV-238-04 POST /user/mfa/totp/init DOIT retourner secret, qrCodeUri, expiresAt TC-NOM-02, tests unitaires initTotp ✅ COUVERT
INV-238-05 POST /user/mfa/totp/verify DOIT activer le MFA uniquement si le code est valide TC-NOM-03, TC-ERR-06, tests unitaires verifyTotp ✅ COUVERT
INV-238-06 POST /user/mfa/disable DOIT exiger un reauth token valide TC-ERR-05, TC-NOM-04, tests ReauthTokenGuard ✅ COUVERT
INV-238-07 POST /user/mfa/recovery/regenerate DOIT exiger un reauth token et invalider les anciens codes TC-NOM-05, TC-ERR-07, TC-ERR-11 ✅ COUVERT
INV-238-08 Les codes de récupération DOIVENT être retournés uniquement après activation/régénération TC-NOM-03, TC-NOM-05, tests unitaires ✅ COUVERT
INV-238-09 Le secret TOTP et les codes de récupération NE DOIVENT jamais être loggés TC-INV-02, review sécurité manuelle ✅ COUVERT
INV-238-10 Le backend ProbatioVault NE DOIT pas stocker les secrets MFA TC-INV-03 (modifié ECT-03), review architecture ✅ COUVERT
INV-238-11 Les endpoints MFA DOIVENT être soumis au rate limiting global TC-ERR-08, tests MfaRateLimitGuard ✅ COUVERT
INV-238-12 POST /auth/reauth DOIT retourner un reauthToken JWT avec sub, purpose="reauth", exp = 5 minutes TC-NOM-06, tests unitaires ReauthService ✅ COUVERT
INV-238-13 Toute erreur métier/validation/auth DOIT retourner un échec explicite sans effet partiel silencieux TC-INV-01, TC-ERR-12, tests MfaExceptionFilter ✅ COUVERT
INV-238-14 Preuve juridique exhaustive RGPD et audit Keycloak admin N/A — Hors périmètre PD-238 ⚠️ HORS PÉRIMÈTRE
INV-238-15 POST /auth/reauth DOIT exiger un JWT valide TC-ERR-14, tests ReauthController ✅ COUVERT

Résumé de couverture

Métrique Valeur
Invariants totaux 15
Invariants testables 14
Invariants couverts 14
Invariants hors périmètre 1 (INV-238-14)
Taux de couverture 100% (14/14 testables)

Fichiers de tests concernés

Fichier Invariants couverts
keycloak-admin.service.spec.ts INV-238-04, INV-238-05, INV-238-07, INV-238-10
mfa-management.service.spec.ts INV-238-02, INV-238-03, INV-238-04, INV-238-05, INV-238-08, INV-238-09
reauth.service.spec.ts INV-238-12, INV-238-13
mfa-management.e2e-spec.ts INV-238-01, INV-238-06, INV-238-07, INV-238-11, INV-238-15
mfa-invariants.spec.ts INV-238-09, INV-238-10
mfa-rate-limit.guard.spec.ts INV-238-11
reauth-token.guard.spec.ts INV-238-06, INV-238-07

Mapping Tests contractuels → Invariants

Test ID Invariants vérifiés
TC-NOM-01 INV-238-03
TC-NOM-02 INV-238-04
TC-NOM-03 INV-238-05, INV-238-08
TC-NOM-04 INV-238-06
TC-NOM-05 INV-238-07, INV-238-08
TC-NOM-06 INV-238-12
TC-ERR-01 INV-238-01
TC-ERR-02 INV-238-01
TC-ERR-03 INV-238-01
TC-ERR-04 INV-238-02
TC-ERR-05 INV-238-06
TC-ERR-06 INV-238-05
TC-ERR-07 INV-238-07
TC-ERR-08 INV-238-11
TC-ERR-14 INV-238-15
TC-INV-01 INV-238-13
TC-INV-02 INV-238-09
TC-INV-03 INV-238-10

Matrice générée pour résoudre ZO-01 (absence de traçabilité invariants↔tests)