Aller au contenu

PD-237 — Matrice de couverture des tests

1. Couverture Tests Contractuels → Fichiers de test

Test-ID Description Fichier de test Méthode/Bloc
TC-NOM-01 Persistance payload complet merkle-tree.service.spec.ts persistTree > TC-NOM-01
merkle.e2e.spec.ts POST /api/v1/merkle/trees > TC-NOM-01
TC-NOM-02 Récupération preuve identique merkle-tree.service.spec.ts getProofByLeaf > TC-NOM-02
merkle.e2e.spec.ts GET /api/v1/merkle/proofs > TC-NOM-02
TC-NOM-03 Récupération arbre complet merkle-tree.service.spec.ts getTreeById > TC-NOM-03
merkle.e2e.spec.ts GET /api/v1/merkle/trees/:tree_id > TC-NOM-03
TC-NOM-04 Recherche par feuille multi-arbres merkle-tree.service.spec.ts getProofByLeaf > TC-NOM-04
merkle.e2e.spec.ts GET /api/v1/merkle/proofs > TC-NOM-04
TC-NOM-05 Inspection stockage (aucun clair) merkle-tree.service.spec.ts TC-INV-01: Data isolation
merkle.e2e.spec.ts TC-INV-01: Data isolation
TC-ERR-01 merkle_root absent merkle-tree.service.spec.ts persistTree > TC-ERR-01
merkle.e2e.spec.ts POST > TC-ERR-01
TC-ERR-02 hash non conforme merkle-proof-verifier.spec.ts isValidHashFormat > TC-ERR-02
merkle-tree.service.spec.ts persistTree > TC-ERR-02
merkle.e2e.spec.ts POST > TC-ERR-02
TC-ERR-03 batch_metadata incomplet merkle-tree.service.spec.ts persistTree > TC-ERR-03
merkle.e2e.spec.ts POST > TC-ERR-03
TC-ERR-04 cardinalité ou proof invalide merkle-proof-verifier.spec.ts verifyAllProofs > TC-ERR-04
merkle-tree.service.spec.ts persistTree > TC-ERR-04
merkle.e2e.spec.ts POST > TC-ERR-04
TC-ERR-05 tree_id inexistant merkle-tree.service.spec.ts getTreeById > TC-ERR-05
merkle-tree.service.spec.ts getProofByLeaf > TC-ERR-05
merkle.e2e.spec.ts GET /trees/:id > TC-ERR-05
merkle.e2e.spec.ts GET /proofs > TC-ERR-05
TC-ERR-06 Feuille non trouvée merkle-tree.service.spec.ts getProofByLeaf > TC-ERR-06
merkle.e2e.spec.ts GET /proofs > TC-ERR-06
TC-ERR-07 tree_id fourni par appelant merkle-tree.service.spec.ts persistTree > TC-ERR-07
merkle.e2e.spec.ts POST > TC-ERR-07
merkle-adversarial.e2e.spec.ts TC-NEG-01
TC-ERR-08 hash uppercase merkle-proof-verifier.spec.ts isValidHashFormat > TC-ERR-08
merkle-proof-verifier.spec.ts hasUppercaseHex > TC-ERR-08
merkle-proof-verifier.spec.ts verifyProof > TC-ERR-08
merkle-tree.service.spec.ts persistTree > TC-ERR-08
merkle.e2e.spec.ts POST > TC-ERR-08
TC-INV-01 Aucun événement en clair merkle-tree.service.spec.ts TC-INV-01: Data isolation
merkle.e2e.spec.ts TC-INV-01: Data isolation
TC-INV-02 Preuve identique byte-to-byte merkle-proof-verifier.spec.ts verifyProof > TC-INV-02
merkle-tree.service.spec.ts getProofByLeaf > TC-NOM-02
merkle.e2e.spec.ts TC-INV-02: Proof integrity
TC-INV-03 Métadonnées immuables merkle-adversarial.e2e.spec.ts TC-INV-03: Metadata immutability
TC-INV-04 Rejet mismatch métadonnées merkle-tree.service.spec.ts persistTree > TC-INV-04
merkle-adversarial.e2e.spec.ts TC-INV-04: Metadata mismatch rejection
TC-INV-05 Append-only merkle-adversarial.e2e.spec.ts TC-INV-05: Append-only enforcement
TC-NR-01 Ajout arbre n'altère pas existants merkle.e2e.spec.ts TC-NR-01: Non-regression on add
TC-NR-02 Recherche par feuille stable merkle.e2e.spec.ts TC-NR-02: Leaf search stability
TC-NEG-01 Rejeu avec tree_id merkle-adversarial.e2e.spec.ts TC-NEG-01: Replay attack
TC-NEG-02 Modification des preuves merkle-adversarial.e2e.spec.ts TC-NEG-02: Proof modification attack

2. Couverture Invariants → Mécanismes → Tests

Invariant Mécanisme technique Tests couvrants
INV-BE-01 DTO n'accepte que hashes (VARCHAR 64) TC-INV-01, TC-NOM-05
INV-BE-02 Stockage JSONB sans transformation TC-INV-02, TC-NOM-02
INV-BE-03 Trigger SQL BEFORE UPDATE → RAISE EXCEPTION TC-INV-03
INV-BE-04 Validation DTO + vérification avant persistance TC-INV-04
INV-BE-05 Trigger SQL BEFORE DELETE + BEFORE UPDATE TC-INV-05, TC-NR-01

3. Couverture Critères → Tests

Critère Tests couvrants
CA-01 TC-NOM-01, TC-ERR-01..04
CA-02 TC-NOM-02, TC-INV-02
CA-03 TC-NOM-05, TC-INV-01
CA-04 TC-INV-04, TC-ERR-*
CA-05 TC-INV-05, TC-NEG-*
CA-06 TC-NOM-04, TC-NR-02

4. Fichiers de test créés

Fichier Type Description
test/unit/merkle/merkle-proof-verifier.spec.ts Unitaire Tests du service de vérification crypto
test/unit/merkle/merkle-tree.service.spec.ts Unitaire Tests du service métier
test/integration/merkle/merkle.e2e.spec.ts E2E Tests d'intégration API REST
test/integration/merkle/merkle-adversarial.e2e.spec.ts E2E Tests de sécurité adversariaux

5. Tests additionnels (NON-CONTRACTUAL)

Ces tests assurent la qualité et la robustesse mais n'étendent pas la spec :

Fichier Bloc Description
merkle-proof-verifier.spec.ts NON-CONTRACTUAL: Edge cases Preuves vides, longues
merkle-tree.service.spec.ts NON-CONTRACTUAL: Edge cases Max leaves, empty proof
merkle-adversarial.e2e.spec.ts NON-CONTRACTUAL: Additional SQL injection, oversized payload, concurrency

6. Résumé de couverture

  • Tests contractuels: 20/20 (100%)
  • Invariants couverts: 5/5 (100%)
  • Critères d'acceptation: 6/6 (100%)
  • Codes d'erreur testés: 8/8 (100%)
  • Tests de non-régression: 2/2 (100%)
  • Tests adversariaux: 2/2 (100%)