Aller au contenu

PD-251 — Revue des Tests

Résumé

Critère Statut
Couverture TC-* 16/22
Qualité assertions ⚠️
Isolation
Edge cases ⚠️

Verdict : ⚠️ RÉSERVES

Matrice de couverture

TC-ID Implémenté Fichier Commentaire
TC-251-01 src/modules/integrity/processors/periodic-run.processor.spec.ts, src/modules/integrity/services/integrity-run-orchestrator.service.spec.ts, src/modules/integrity/controllers/integrity.controller.spec.ts Run nominal couvert, mais pas de preuve de rotation sur 2 fenêtres successives ni de 2 rapports distincts consécutifs.
TC-251-02 src/modules/integrity/services/archive-chain-verifier.service.spec.ts, src/modules/integrity/processors/archive-verify.processor.spec.ts Les 4 maillons sont explicitement assertés avec statuts explicites.
TC-251-03 src/modules/integrity/services/double-verification.service.spec.ts, src/modules/integrity/processors/archive-verify.processor.spec.ts Faux positif transitoire correctement testé (pas de transition SUSPECT).
TC-251-04 src/modules/integrity/services/double-verification.service.spec.ts, src/modules/integrity/processors/archive-verify.processor.spec.ts, src/modules/integrity/services/archive-state-machine.service.spec.ts Confirmation corruption + transition SUSPECT testées.
TC-251-05 src/modules/integrity/config/integrity.config.spec.ts, src/modules/integrity/services/integrity-config-validator.service.spec.ts Couverture partielle: bornes verificationAttemptsMax non testées exhaustivement (½/¾) et bornes attemptTimeout non prouvées.
TC-251-06 src/modules/integrity/services/integrity-journal.service.spec.ts Append-only signé couvert, y compris indisponibilité HSM (déjà corrigée SEC-07).
TC-251-07 src/modules/integrity/guards/archive-access.guard.spec.ts Blocage lecture/export et whitelist investigation couverts (SEC-01/SEC-02).
TC-251-08 src/modules/integrity/services/forensic-snapshot.service.spec.ts, src/modules/integrity/services/archive-state-machine.service.spec.ts, src/modules/integrity/processors/archive-restore.processor.spec.ts Précondition snapshot signé bien testée (accept/reject).
TC-251-09 src/modules/integrity/services/restoration.service.spec.ts, src/modules/integrity/processors/archive-restore.processor.spec.ts Succès restauration + création de lien de version testés.
TC-251-10 src/modules/integrity/services/restoration.service.spec.ts, src/modules/integrity/processors/archive-restore.processor.spec.ts Échec restauration vers CORRUPTED_CONFIRMED et non-suppression couverts.
TC-251-11 src/modules/integrity/services/archive-state-machine.service.spec.ts États terminaux fermés correctement vérifiés.
TC-251-12 src/modules/integrity/services/integrity-notifier.service.spec.ts Notification propriétaire conditionnelle couverte.
TC-251-13 src/modules/integrity/services/incident-report.service.spec.ts, src/modules/integrity/processors/incident-report.processor.spec.ts Génération JSON/PDF et signature HSM testées.
TC-251-14 src/modules/integrity/services/integrity-run-orchestrator.service.spec.ts, src/modules/integrity/services/sla-boundary.service.spec.ts Tests de durée présents, mais pas de preuve contractuelle 1h/24h par criticité via logique métier orchestrateur; beaucoup de tests "arithmétiques" hors comportement réel.
TC-251-15 src/modules/integrity/services/restoration.service.spec.ts Retries testés, mais pas d’assertion explicite sur expiration restoreSla, escalade ops, ni notification owner au dépassement SLA.
TC-251-16 src/modules/integrity/processors/reconciliation.processor.spec.ts Atomicité crash pré/post-commit non prouvée de bout en bout (rollback DB + rattrapage async). Couverture partielle reconciliation seulement.
TC-251-17 src/modules/integrity/services/archive-chain-verifier.service.spec.ts Dépendances indisponibles -> INDETERMINATE explicite bien couvert.
TC-251-18 src/modules/integrity/services/priority-scorer.service.spec.ts, src/modules/integrity/processors/periodic-run.processor.spec.ts Priorisation couverte, mais rate limiting des opérations sensibles non testé contractuellement (throttling/refus + trace).
TC-251-19 src/modules/integrity/config/integrity.config.spec.ts, src/modules/integrity/services/integrity-config-validator.service.spec.ts Bornes batch/parallel/window bien couvertes globalement.
TC-251-20 src/modules/integrity/services/archive-state-machine.service.spec.ts Matrice transitions interdites exhaustive dans le test.
TC-251-21 src/modules/integrity/services/archive-state-machine.service.spec.ts, src/modules/integrity/guards/archive-access.guard.spec.ts, src/modules/integrity/services/restoration.service.spec.ts Refus de suppression archive corrompue correctement couvert.
TC-251-22 src/modules/integrity/services/integrity-metrics.service.spec.ts, src/modules/integrity/controllers/integrity.controller.spec.ts 4 familles de métriques couvertes côté service; endpoint contrôleur testé.

Points à améliorer

ID Description Gravité
T-01 Ajouter des tests e2e HTTP pour les endpoints protégés avec preuve contractuelle d’accès refusé: status=403, body={}, audit ACCESS_DENIED appelé. MAJEUR
T-02 Renforcer TC-251-01 avec 2 runs successifs et vérification explicite de la rotation de périmètre et de la présence de 2 rapports de run distincts. MAJEUR
T-03 Renforcer TC-251-14: tester la logique métier réelle 1h/24h (HIGH/LOW) au lieu de tests purement arithmétiques. MAJEUR
T-04 Renforcer TC-251-15: couvrir restoreSla expiré + escalade ops + notification propriétaire conditionnelle. MAJEUR
T-05 Ajouter un test d’atomicité TC-251-16 avec injection crash pré-commit et post-commit sur transaction réelle (intégration DB). MAJEUR
T-06 Remplacer les assertions faibles (toBeDefined, assertions sans action) par assertions de contrat (payload exact, appels exacts, side effects absents). MINEUR
T-07 Corriger le test NR-251-01 de periodic-run.processor.spec.ts qui n’exécute pas le process et ne valide pas réellement le lock concurrent. MINEUR

Tests manquants

  • TC-251-01: scénario de rotation multi-fenêtres avec deux déclenchements scheduler consécutifs et preuve de 2 rapports.
  • TC-251-05: matrice bornes complète verificationAttemptsMax (1,2,3,4) + cas hors bornes attemptTimeout.
  • TC-251-14: scénario contractuel complet 1h/24h par criticité métier (pas uniquement durée globale de run).
  • TC-251-15: dépassement restoreSla avec assertions ops alert + owner notification.
  • TC-251-16: crash pré/post-commit validé en test d’intégration transactionnel (rollback/consistance/réconciliation).
  • TC-251-18: rate limiting opérations sensibles (POST /integrity/runs, restore, reconciliation) avec refus/throttle et trace d’audit.
  • Preuve contractuelle guards @Roles() (REX PD-250 DIV-02): tests e2e avec triplet obligatoire 403 + body vide + audit ACCESS_DENIED.