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
- 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.