Aller au contenu

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_DEPOSIT ou NON_PROBATIVE_STAGING, unicité par client_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_id pour 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.