PD-60 — Scénarios de tests contractuels¶
1. Références¶
- Spécification : PD-60-specification.md
- Epic : PD-192 — API Documents & preuves probatoires
2. Matrice de couverture¶
| ID Invariant | ID Critère | ID Test | Couverture | Commentaire |
|---|---|---|---|---|
| INV-60-01 | CA-60-01 | TC-ERR-01 | Oui | Rejet sans authentification. |
| INV-60-01 | CA-60-02 | TC-ERR-02 | Oui | Rejet sans autorisation de dépôt. |
| INV-60-02 | CA-60-05 | TC-ERR-06 | Oui | Échec technique avant confirmation = aucun acte probatoire. |
| INV-60-03 | CA-60-03 | TC-NOM-01 | Oui | Unicité deposit_id + présence existence_timestamp_utc. |
| INV-60-04 | CA-60-08 | TC-NOM-06 | Oui | Absence de fuite de contenu intelligible. |
| INV-60-05 | CA-60-10 | TC-NOM-05 | Oui | Vérification tiers renforcée réussie hors API. |
| INV-60-05 | CA-60-18 | TC-ERR-10 | Oui | Incohérence reçu/audit détectée. |
| INV-60-06 | CA-60-09 | TC-INV-06 | Partielle | Journalisation testable; non-altérabilité absolue partiellement testable. |
| INV-60-07 | CA-60-12 | TC-NOM-07 | Oui | Lien compte déposant + scope dans reçu et audit. |
| INV-60-08 | CA-60-11 | TC-NOM-08 | Oui | Altération document détectée. |
| INV-60-09 | CA-60-15 | TC-NOM-03 | Oui | Statut explicite NON_PROBATIVE_STAGING. |
| INV-60-09 | CA-60-03 | TC-NOM-01 | Oui | Statut explicite PROBATIVE_DEPOSIT. |
| INV-60-10 | CA-60-14 | TC-NOM-09 | Oui | Existence juridique seulement avec double condition. |
| INV-60-11 | CA-60-15 | TC-NOM-03 | Oui | Staging possible en contexte dégradé sans effet probatoire. |
| INV-60-12 | CA-60-13 | TC-ERR-07 | Oui | Refus sans probative_notice_ack=true. |
| INV-60-12 | CA-60-16 | TC-INV-12 | Oui | Valeur exacte de notice contrôlée. |
| INV-60-13 | CA-60-17 | TC-INV-13 | Partielle | Présence testable; cohérence juridique complète non testable API seule. |
| INV-60-14 | — | TC-INV-14 | Partielle | Limitation juridique des obligations irréversibles partiellement testable. |
| — | CA-60-04 | TC-NOM-01 | Oui | Champs contractuels obligatoires du reçu. |
| — | CA-60-06 | TC-NOM-02 | Oui | Rejeu même intention = même acte. |
| — | CA-60-07 | TC-ERR-05 | Oui | client_request_id réutilisé avec autre document refusé. |
| — | CA-60-09 | TC-NOM-03 | Oui | Tentative en staging également auditée. |
| — | CA-60-10 | TC-NOM-05 | Oui | Vérification tiers sans API applicative. |
| — | CA-60-14 | TC-ERR-06 | Oui | Sans reçu émis, statut juridique non établi. |
| — | CA-60-17 | TC-NOM-10 | Partielle | Déclaration des responsabilités contrôlée sur présence/cohérence syntaxique. |
3. Scénarios de test – Flux nominaux¶
TEST-ID: TC-NOM-01
Référence spec: FN-60-01, INV-60-02/03/09/10, CA-60-03/04/05/14
GIVEN - Un compte ProbatioVault authentifié et autorisé au dépôt. - Une requête complète avec document opaque, empreinte valide, client_request_id inédit, probative_notice_ack=true. WHEN - La requête POST /documents/upload est soumise. THEN - La réponse est un succès probatoire avec les champs contractuels obligatoires. - act_type=PROBATIVE_DEPOSIT et legal_existence_status=ESTABLISHED. AND - Une trace d'audit corrélée au client_request_id est présente.
TEST-ID: TC-NOM-02
Référence spec: FN-60-02, INV-60-03, CA-60-06
GIVEN - Un dépôt probatoire déjà accepté pour client_request_id = CR-1. WHEN - La même requête est rejouée strictement à l'identique. THEN - Le même deposit_id est retourné. AND - Aucun nouvel acte probatoire n'est créé.
TEST-ID: TC-NOM-03
Référence spec: FN-60-03, INV-60-09/11, CA-60-15
GIVEN - Un contexte dégradé contrôlé empêchant la confirmation probatoire. - Une requête de dépôt valide. WHEN - La requête est soumise. THEN - La réponse retourne act_type=NON_PROBATIVE_STAGING et legal_existence_status=NOT_ESTABLISHED. AND - deposit_id, proof_receipt, existence_timestamp_utc sont absents.
TEST-ID: TC-NOM-04
Référence spec: FN-60-04, INV-60-02/10/11, CA-60-05/14/15
GIVEN - Un NON_PROBATIVE_STAGING existe pour client_request_id = CR-2. - Les conditions nominales sont rétablies. WHEN - La requête est rejouée avec CR-2. THEN - Un acte probatoire unique est créé avec legal_existence_status=ESTABLISHED. AND - Aucun doublon probatoire n'existe pour CR-2.
TEST-ID: TC-NOM-05
Référence spec: FN-60-05, INV-60-05, CA-60-10
GIVEN - Un document original, son reçu probatoire et sa référence d'audit cohérente. WHEN - Un tiers effectue la vérification hors plateforme, sans accès API ProbatioVault. THEN - La vérification est valide (intégrité, date, deposit_id, imputabilité de compte, scope, cohérence audit). AND - Le résultat de vérification est traçable (rapport horodaté).
TEST-ID: TC-NOM-06
Référence spec: INV-60-04, CA-60-08
GIVEN - Un document contenant un marqueur de confidentialité unique. WHEN - Un dépôt est exécuté (succès probatoire puis staging dans un second run). THEN - Le marqueur n'apparaît ni dans la réponse API ni dans les logs/traces applicatives observables. AND - Seules des valeurs de référence non intelligibles sont exposées.
TEST-ID: TC-NOM-07
Référence spec: INV-60-07, CA-60-12
GIVEN - Un compte déposant connu et un responsibility_scope_ref déterminé. WHEN - Un dépôt probatoire est accepté. THEN - depositor_identity_ref et responsibility_scope_ref sont présents dans la réponse/reçu. AND - Les mêmes valeurs sont présentes dans la trace d'audit corrélée.
TEST-ID: TC-NOM-08
Référence spec: INV-60-08, CA-60-11
GIVEN - Un document déposé avec succès et son reçu probatoire. WHEN - Le document est modifié puis soumis à vérification tiers avec le reçu initial. THEN - La vérification échoue. AND - Le motif d'échec indique une incohérence d'intégrité.
TEST-ID: TC-NOM-09
Référence spec: INV-60-10, CA-60-14
GIVEN - Trois cas de contrôle: (A) audit + reçu présents, (B) audit seul, (C) reçu seul. WHEN - Le statut juridique est évalué pour chaque cas. THEN - Seul le cas (A) est legal_existence_status=ESTABLISHED. AND - Les cas (B) et (C) restent non établis.
TEST-ID: TC-NOM-10
Référence spec: INV-60-13, CA-60-17
GIVEN - Un dépôt probatoire accepté. WHEN - Le reçu probatoire et l'acte sont inspectés. THEN - Une déclaration contractuelle de responsabilités est présente. AND - La déclaration contient explicitement les trois rôles: déposant, organisation, ProbatioVault.
4. Scénarios de test – Cas d'erreur¶
TEST-ID: TC-ERR-01
Référence spec: ERR-60-01, INV-60-01, CA-60-01
GIVEN - Une requête sans authentification valide. WHEN - L'appel de dépôt est soumis. THEN - Rejet explicite. - Aucun acte probatoire créé. AND - La tentative est auditée.
TEST-ID: TC-ERR-02
Référence spec: ERR-60-02, INV-60-01, CA-60-02
GIVEN - Un compte authentifié sans droit de dépôt. WHEN - L'appel de dépôt est soumis. THEN - Rejet explicite. - Aucun acte probatoire créé. AND - La tentative est auditée.
TEST-ID: TC-ERR-03
Référence spec: ERR-60-03
GIVEN - Une requête incomplète (champ contractuel obligatoire absent). WHEN - L'appel de dépôt est soumis. THEN - Rejet explicite. - Aucun acte probatoire créé. AND - La tentative est auditée.
TEST-ID: TC-ERR-04
Référence spec: ERR-60-04
GIVEN - Une empreinte documentaire invalide/incohérente. WHEN - L'appel de dépôt est soumis. THEN - Rejet explicite. - Aucun acte probatoire créé. AND - La tentative est auditée.
TEST-ID: TC-ERR-05
Référence spec: ERR-60-05, CA-60-07
GIVEN - client_request_id déjà associé au document A. WHEN - Le même client_request_id est soumis avec document B. THEN - Refus de conflit explicite. - Aucun nouvel acte probatoire créé. AND - Le dépôt initial reste inchangé.
TEST-ID: TC-ERR-06
Référence spec: ERR-60-06, INV-60-02, CA-60-05
GIVEN - Une tentative avec faute technique injectée avant confirmation probatoire. WHEN - L'appel de dépôt est soumis. THEN - Erreur technique explicite. - Aucun acte probatoire créé. AND - Aucun état probatoire partiel n'est observable.
TEST-ID: TC-ERR-07
Référence spec: ERR-60-07, INV-60-12, CA-60-13/16
GIVEN - Une requête sans probative_notice_ack=true. WHEN - L'appel de dépôt est soumis. THEN - Refus explicite. - Aucun acte probatoire créé. AND - La tentative est auditée.
TEST-ID: TC-ERR-08
Référence spec: ERR-60-08, CA-60-06
GIVEN - Un dépôt probatoire déjà accepté. WHEN - La même requête est rejouée. THEN - Réponse de succès cohérente avec l'acte initial. - Aucun acte supplémentaire. AND - Le rejeu est traçable en audit.
TEST-ID: TC-ERR-09
Référence spec: ERR-60-09, INV-60-11
GIVEN - Un objet NON_PROBATIVE_STAGING non confirmé. WHEN - Une demande de preuve probatoire est effectuée. THEN - Refus explicite. - L'état reste non probatoire. AND - La tentative est auditée.
TEST-ID: TC-ERR-10
Référence spec: ERR-60-10, INV-60-05, CA-60-18
GIVEN - Un reçu probatoire et une référence d'audit incohérente. WHEN - La vérification tiers est exécutée. THEN - Échec de vérification explicite. - La preuve est invalidée. AND - Le rapport de vérification mentionne l'incohérence reçu/audit.
5. Tests d'invariants (non négociables)¶
| Invariant | Test(s) dédiés | Observable | Commentaire |
|---|---|---|---|
| INV-60-01 | TC-ERR-01, TC-ERR-02 | Rejets explicites + absence d'acte | Couvert intégralement. |
| INV-60-02 | TC-NOM-01, TC-ERR-06 | Succès complet ou échec complet uniquement | Couvert intégralement. |
| INV-60-03 | TC-NOM-01 | deposit_id unique + existence_timestamp_utc | Couvert intégralement. |
| INV-60-04 | TC-NOM-06 | Absence de marqueur en réponses/logs/traces | Couvert intégralement. |
| INV-60-05 | TC-NOM-05, TC-ERR-10 | Vérification tiers OK / KO selon cohérence audit | Couvert intégralement. |
| INV-60-06 | TC-INV-06 | Trace d'audit présente sur succès/refus/staging | Couverture partielle (immutabilité absolue). |
| INV-60-07 | TC-NOM-07 | depositor_identity_ref + responsibility_scope_ref cohérents | Couvert intégralement. |
| INV-60-08 | TC-NOM-08 | Échec de vérification après altération | Couvert intégralement. |
| INV-60-09 | TC-NOM-01, TC-NOM-03 | act_type explicite selon statut | Couvert intégralement. |
| INV-60-10 | TC-NOM-09 | Double condition obligatoire pour ESTABLISHED | Couvert intégralement. |
| INV-60-11 | TC-NOM-03, TC-ERR-09 | NON_PROBATIVE_STAGING sans effet probatoire | Couvert intégralement. |
| INV-60-12 | TC-ERR-07, TC-INV-12 | Refus sans ack + contrôle de la notice exacte | Couvert intégralement. |
| INV-60-13 | TC-NOM-10, TC-INV-13 | Déclaration des responsabilités présente | Couverture partielle (cohérence juridique complète). |
| INV-60-14 | TC-INV-14 | Limitation explicite des obligations irréversibles | Couverture partielle (portée juridique complète). |
6. Tests de non-régression¶
| Test ID | Objet | Observable | Commentaire |
|---|---|---|---|
| TC-NR-01 | Contrat de succès probatoire | Même ensemble de champs contractuels obligatoires | Vérifie stabilité FN-60-01. |
| TC-NR-02 | Idempotence client_request_id | Même deposit_id, aucun doublon | Prévention des duplications. |
| TC-NR-03 | Confidentialité zéro fuite | Aucune exposition de marqueur en réponses/logs/traces | Protège INV-60-04. |
| TC-NR-04 | Double condition juridique | ESTABLISHED seulement si audit+reçu | Protège INV-60-10. |
| TC-NR-05 | Vérification tiers renforcée | Pass/fail cohérent selon intégrité et audit ref | Protège INV-60-05/08/18. |
| TC-NR-06 | Sémantique staging | NON_PROBATIVE_STAGING sans reçu ni deposit_id | Protège INV-60-11/CA-60-15. |
7. Tests négatifs et adversariaux¶
| Test ID | Entrée invalide / abus | Résultat attendu | Observable |
|---|---|---|---|
| TC-NEG-01 | Rejeu concurrent de client_request_id identique avec documents différents | Conflit explicite pour la tentative incohérente, aucun nouvel acte | Unicité d'acte conservée |
| TC-NEG-02 | Altération intentionnelle de audit_trace_ref dans un reçu | Vérification tiers échoue | Rapport d'incohérence reçu/audit |
| TC-NEG-03 | probative_notice_ack=true avec notice différente de la valeur contractuelle | Rejet explicite | Aucune création d'acte |
| TC-NEG-04 | Demande de preuve sur objet NON_PROBATIVE_STAGING en boucle | Refus constant, aucun basculement probatoire | État NOT_ESTABLISHED inchangé |
| TC-NEG-05 | Tentative de fuite via document contenant marqueurs sensibles multiples | Aucune occurrence en sorties/logs/traces | Journal de recherche des marqueurs |
8. Observabilité requise pour les tests¶
- État système : existence/non-existence d'acte probatoire, statut
PROBATIVE_DEPOSITouNON_PROBATIVE_STAGING, unicité parclient_request_id. - Réponse API : présence/absence stricte des champs contractuels (
deposit_id,staging_id,proof_receipt,legal_existence_status,act_type). - Journal d'audit : trace corrélée à
client_request_idpour succès, refus et staging. - Événement signé / horodaté : horodatage UTC de l'acte (
existence_timestamp_utc) et référence d'audit cohérente. - Export probatoire : reçu exploitable hors plateforme, résultat de vérification tiers traçable.
9. Règles non testables¶
| Règle | Raison | Impact |
|---|---|---|
| INV-60-06 (non-altérable a posteriori, au sens absolu) | La non-altérabilité absolue ne peut pas être prouvée définitivement par un jeu fini de tests fonctionnels; seuls des tests de résistance/tentative de falsification sont possibles. | MAJEUR |
| INV-60-13 / CA-60-17 (cohérence juridique complète des responsabilités) | Présence d'une déclaration testable; qualification de "cohérence juridique" dépend d'un référentiel juridique externe non défini dans la spec. | MAJEUR |
| INV-60-14 (limitation juridique des obligations irréversibles) | Vérifiable partiellement sur la formulation exposée; opposabilité juridique complète dépend de documents contractuels hors API. | MAJEUR |
| Hors périmètre explicitement déclaré en spec (qualification juridictionnelle finale) | Règle explicitement exclue de l'US. | MINEUR |
10. Verdict QA¶
- ✅ Testable intégralement
- ⚠️ Testable partiellement (avec réserves listées)
- ❌ Non testable (refus contractuel)
Verdict : ⚠️ Testable partiellement (réserves section 9).
Annexes de tests d'invariants (référencées ci-dessus)¶
TEST-ID: TC-INV-06
Référence spec: INV-60-06, CA-60-09
GIVEN - Trois tentatives contrôlées: succès, refus, staging. WHEN - Les tentatives sont exécutées. THEN - Chacune possède une trace d'audit corrélée. AND - Toute tentative de modification directe de la trace via interfaces de test autorisées échoue ou est détectée.
TEST-ID: TC-INV-12
Référence spec: INV-60-12, CA-60-16
GIVEN - Une requête avec probative_notice_ack=true. WHEN - La notice fournie est comparée à la valeur contractuelle exacte. THEN - La notice exacte "Vous réalisez un acte probatoire daté." est acceptée. AND - Toute variation textuelle est rejetée.
TEST-ID: TC-INV-13
Référence spec: INV-60-13, CA-60-17
GIVEN - Un dépôt probatoire accepté. WHEN - Le reçu et l'acte sont analysés. THEN - La déclaration des responsabilités inclut les trois volets (déposant, organisation, ProbatioVault). AND - Le test est marqué partiel pour la qualification juridique externe.
TEST-ID: TC-INV-14
Référence spec: INV-60-14
GIVEN - Un dépôt probatoire accepté. WHEN - Le reçu et la notice contractuelle sont inspectés. THEN - Aucune obligation irréversible additionnelle n'est explicitement déclarée dans ces artefacts au-delà de la reconnaissance existence/date. AND - Le test est marqué partiel pour l'opposabilité juridique complète hors API.