Aller au contenu

PD-238 — Livrable Agent QA : Tests

Tâche 5 du manifest de décomposition Date : 2026-02-06 Agent : agent-qa-unit-integration (Claude)

Périmètre

  • src/modules/auth/mfa/services/__tests__/keycloak-admin.service.spec.ts
  • src/modules/auth/mfa/services/__tests__/mfa-management.service.spec.ts
  • src/modules/auth/services/__tests__/reauth.service.spec.ts
  • test/mfa-management.e2e-spec.ts

Fichiers livrés

Fichier Lignes Description
keycloak-admin.service.spec.ts 636 Tests unitaires KeycloakAdminService
mfa-management.service.spec.ts 543 Tests unitaires MfaManagementService
reauth.service.spec.ts 369 Tests unitaires ReauthService
mfa-management.e2e-spec.ts 641 Tests e2e des 6 endpoints

Total : 2189 lignes de tests

Tests contractuels implémentés

Flux nominaux (TC-NOM-*)

ID Description Fichier
TC-NOM-01 GET /user/mfa/status retourne e2e-spec.ts
TC-NOM-02 POST /user/mfa/totp/init retourne e2e-spec.ts
TC-NOM-03 POST /user/mfa/totp/verify active MFA + recoveryCodes e2e-spec.ts
TC-NOM-04 POST /user/mfa/disable désactive MFA avec reauth e2e-spec.ts
TC-NOM-05 POST /user/mfa/recovery/regenerate régénère codes e2e-spec.ts
TC-NOM-06 POST /auth/reauth retourne reauthToken e2e-spec.ts

Cas d'erreur (TC-ERR-*)

ID Description Fichier
TC-ERR-01 GET /user/mfa/status sans JWT → 401 e2e-spec.ts
TC-ERR-02 POST /user/mfa/totp/init sans JWT → 401 e2e-spec.ts
TC-ERR-03 POST /user/mfa/totp/verify sans JWT → 401 e2e-spec.ts
TC-ERR-04 Accès croisé MFA refusé e2e-spec.ts
TC-ERR-05 POST /user/mfa/disable sans reauth → 401 e2e-spec.ts
TC-ERR-06 POST /user/mfa/totp/verify code invalide → 400 e2e-spec.ts
TC-ERR-07 POST /user/mfa/recovery/regenerate sans reauth → 401 e2e-spec.ts
TC-ERR-08 Rate limit MFA → 429 e2e-spec.ts
TC-ERR-13 POST /auth/reauth password invalide → 401 e2e-spec.ts
TC-ERR-14 POST /auth/reauth sans JWT → 401 e2e-spec.ts

Invariants (TC-INV-*)

ID Description Fichier
TC-INV-01 Erreurs explicites sans effet partiel mfa-management.service.spec.ts
TC-INV-02 Secrets jamais dans logs mfa-management.service.spec.ts
TC-INV-03 Pas de stockage local secrets mfa-management.service.spec.ts

Approach de test

  • Mock KeycloakAdminService pour les tests unitaires (pas d'appels réels)
  • Mock Redis pour cache sessionId TOTP
  • Tests e2e avec Supertest et TestingModule NestJS
  • Couverture cible : 80% lignes et branches

Fichiers hors périmètre identifiés

Aucun.