Aller au contenu

PD-245 — Cahier de tests

Story : PD-245 — Format de preuve multi-chain Epic : BLOCKCHAIN (PD-187) Généré par : ChatGPT (gpt-5.3-codex) Date : 2026-02-19


1. Matrice de couverture

INV/CA Test ID Description courte Type
INV-245-01 TC-245-01 Une preuve post-PD-245 contient blockchain non nul Unit
INV-245-01 TC-245-02 Le contrat de type impose blockchain obligatoire Type check
INV-245-02 TC-245-03 blockchain: 'ethereum_l2' est accepté Unit
INV-245-02 TC-245-04 Valeur inconnue (bitcoin) rejetée en PROOF_001 Unit
INV-245-03 TC-245-05 Absence de blockchain => rétrocompat ethereum_l2 acceptée Unit
INV-245-04 TC-245-01 Le module TSA renseigne blockchain: 'ethereum_l2' à l'émission Unit
INV-245-05 TC-245-06 tezos rejeté si inactif (PROOF_002) Unit
INV-245-05 TC-245-07 tezos accepté si actif Unit
INV-245-06 TC-245-08 blockchain: null rejeté en PROOF_001 Unit
INV-245-06 TC-245-09 blockchain: "" rejeté en PROOF_001 Unit
INV-245-06 TC-245-10 blockchain: "ETHEREUM_L2" rejeté en PROOF_001 Unit
INV-245-06 TC-245-13 blockchain: 123 (number) rejeté en PROOF_001 Unit
INV-245-06 TC-245-14 blockchain: true (boolean) rejeté en PROOF_001 Unit
CA-245-01 TC-245-01 Preuve émise contient blockchain: 'ethereum_l2' Unit
CA-245-02 TC-245-03 Vérificateur accepte ethereum_l2 Unit
CA-245-03 TC-245-04 Vérificateur rejette bitcoin (PROOF_001) Unit
CA-245-04 TC-245-05 Vérificateur accepte absence de champ (rétrocompat) Unit
CA-245-05 TC-245-06 Vérificateur rejette tezos inactif (PROOF_002) Unit
CA-245-06 TC-245-08 Vérificateur rejette null (PROOF_001) Unit
CA-245-07 TC-245-09 Vérificateur rejette chaîne vide (PROOF_001) Unit
CA-245-08 TC-245-02 InclusionProof expose blockchain obligatoire Type check
Format erreur §5.1 TC-245-11 Structure de payload d'erreur contractuelle Integration
Rétrocompat globale TC-245-12 Preuve historique PD-39 reste vérifiable sans migration Non-régression

2. Tests unitaires

TC-245-01 — Émission de preuve post-PD-245 avec blockchain explicite

  • Couvre : INV-245-01, INV-245-04, CA-245-01
  • Prérequis : Exécution en contexte "post-PD-245"; module d'émission de preuve disponible; horodatage TSA valide
  • Given : Une demande d'émission de preuve valide pour un document ancré sur la chaîne primaire
  • When : La preuve individuelle est produite
  • Then : La preuve contient le champ blockchain et sa valeur est exactement 'ethereum_l2' (non nulle)
  • Données de test : Fixture preuve valide avec champs obligatoires (log_id, tree_size, leaf_index, inclusion_path, leaf_hash, root_hash)

TC-245-02 — Contrat de type InclusionProof (champ obligatoire)

  • Couvre : INV-245-01, CA-245-08
  • Prérequis : Vérification de type activée
  • Given : Une déclaration de type InclusionProof sans propriété blockchain
  • When : La vérification de type est exécutée
  • Then : La déclaration est refusée (échec type-check) car blockchain est obligatoire
  • Données de test : Cas compilable attendu KO sans blockchain, attendu OK avec blockchain: 'ethereum_l2'

TC-245-03 — Acceptation d'un identifiant blockchain valide

  • Couvre : INV-245-02, CA-245-02
  • Prérequis : Vérificateur de preuve disponible
  • Given : Une preuve valide avec blockchain: 'ethereum_l2'
  • When : La vérification est exécutée
  • Then : La preuve est acceptée
  • Données de test : Fixture preuve canonique valide + blockchain: 'ethereum_l2'

TC-245-04 — Rejet d'un identifiant blockchain inconnu

  • Couvre : INV-245-02, INV-245-06, CA-245-03
  • Prérequis : Vérificateur de preuve disponible
  • Given : Une preuve valide sauf blockchain: 'bitcoin'
  • When : La vérification est exécutée
  • Then : La preuve est rejetée avec code erreur PROOF_001
  • Données de test : Fixture preuve valide + blockchain: 'bitcoin'

TC-245-05 — Rétrocompatibilité si champ blockchain absent

  • Couvre : INV-245-03, CA-245-04
  • Prérequis : Vérificateur de preuve disponible; règle de rétrocompat activée
  • Given : Une preuve historique valide sans propriété blockchain
  • When : La vérification est exécutée
  • Then : La preuve est acceptée et interprétée comme ethereum_l2 par convention
  • Données de test : Fixture historique PD-39 sans champ blockchain

TC-245-06 — Rejet de tezos tant que non actif

  • Couvre : INV-245-05, CA-245-05
  • Prérequis : isBlockchainActive('tezos') = false
  • Given : Une preuve valide avec blockchain: 'tezos'
  • When : La vérification est exécutée
  • Then : La preuve est rejetée avec code erreur PROOF_002
  • Données de test : Fixture preuve valide + blockchain: 'tezos' + contexte activation Tezos à false

TC-245-07 — Acceptation de tezos lorsqu'actif

  • Couvre : INV-245-05, CA-245-09
  • Prérequis : isBlockchainActive('tezos') = true
  • Given : Une preuve valide avec blockchain: 'tezos'
  • When : La vérification est exécutée
  • Then : La preuve est acceptée
  • Données de test : Fixture preuve valide + blockchain: 'tezos' + contexte activation Tezos à true

TC-245-08 — Rejet de la valeur null

  • Couvre : INV-245-06, CA-245-06
  • Prérequis : Vérificateur de preuve disponible
  • Given : Une preuve avec blockchain: null
  • When : La vérification est exécutée
  • Then : La preuve est rejetée avec code erreur PROOF_001
  • Données de test : Fixture preuve valide + blockchain: null

TC-245-09 — Rejet de la chaîne vide

  • Couvre : INV-245-06, CA-245-07
  • Prérequis : Vérificateur de preuve disponible
  • Given : Une preuve avec blockchain: ""
  • When : La vérification est exécutée
  • Then : La preuve est rejetée avec code erreur PROOF_001
  • Données de test : Fixture preuve valide + blockchain: ""

TC-245-10 — Rejet d'une casse incorrecte

  • Couvre : INV-245-06
  • Prérequis : Vérificateur de preuve disponible
  • Given : Une preuve avec blockchain: "ETHEREUM_L2"
  • When : La vérification est exécutée
  • Then : La preuve est rejetée avec code erreur PROOF_001
  • Données de test : Fixture preuve valide + blockchain: "ETHEREUM_L2"

TC-245-13 — Rejet d'un type number

  • Couvre : INV-245-06
  • Prérequis : Vérificateur de preuve disponible
  • Given : Une preuve avec blockchain: 123
  • When : La vérification est exécutée
  • Then : La preuve est rejetée avec code erreur PROOF_001
  • Données de test : Fixture preuve valide + blockchain: 123

TC-245-14 — Rejet d'un type boolean

  • Couvre : INV-245-06
  • Prérequis : Vérificateur de preuve disponible
  • Given : Une preuve avec blockchain: true
  • When : La vérification est exécutée
  • Then : La preuve est rejetée avec code erreur PROOF_001
  • Données de test : Fixture preuve valide + blockchain: true

3. Tests d'intégration

TC-245-11 — Contrat de réponse d'erreur API (format section 5.1)

  • Couvre : CA-245-03, CA-245-05, CA-245-06, CA-245-07 (aspect contractuel)
  • Prérequis : Endpoint de vérification exposé; sérialisation d'erreur activée
  • Given : Une requête de vérification avec blockchain invalide (ex: bitcoin)
  • When : L'API de vérification est appelée
  • Then : Réponse HTTP 400 contenant statusCode, error, message, code, details.field, details.value, details.allowed
  • Données de test : Payload preuve invalide avec blockchain: 'bitcoin'

4. Tests de non-régression

TC-245-12 — Compatibilité des preuves historiques PD-39

  • Couvre : INV-245-03, CA-245-04
  • Prérequis : Jeu de preuves historiques antérieures à PD-245 (sans blockchain)
  • Given : Un lot de preuves historiques valides sans champ blockchain
  • When : Le lot est vérifié après déploiement PD-245
  • Then : 100% des preuves valides restent acceptées sans migration
  • Données de test : Corpus historique représentatif (au moins 3 variantes de tree_size, leaf_index, profondeur de inclusion_path)

5. Cas limites identifiés

Cas limite Comportement attendu Statut
blockchain de type non string (nombre, booléen) PROOF_001 Couvert (TC-245-13, TC-245-14)
blockchain avec espaces (" ethereum_l2 ") Comportement non précisé (trim implicite non spécifié) À préciser
blockchain absent et autres champs invalides Ordre de validation non contractuel À préciser

6. Verdict de testabilité

Aspect Évaluation
Testabilité globale ÉLEVÉE
Couverture INV 100% (INV-245-01 à INV-245-06)
Couverture CA 100% (CA-245-01 à CA-245-08)
Tests automatisables 12/12

Points NON TESTABLES / ambigus

Point Justification
Définition de "preuve émise après PD-245" (INV-245-01) Non ancré à un marqueur explicite; testable via contexte de déploiement
Normalisation exacte du texte message d'erreur Seul le code est normatif
Politique de trimming des entrées string Non définie (ex: " ethereum_l2 ")

7. Synthèse

Métrique Valeur
Total tests 14
Tests unitaires 12
Tests d'intégration 1
Tests de non-régression 1
Cas limites identifiés 3
Couverture INV 6/6 (100%)
Couverture CA 9/9 (100%)

Fin du cahier de tests PD-245.