PD-79 — Tests & Validation¶
Metadata¶
| Champ | Valeur |
|---|---|
| Story ID | PD-79 |
| Version | 1.0 |
| Date | 2026-02-16 |
| Auteur | ChatGPT (gov-balanced) |
1) Matrice de traçabilite (CA-79-xx -> TC-79-xxx)¶
| Critere d'acceptation | Description | Cas de test relies |
|---|---|---|
| CA-79-01 | Category absent -> traitement DEFAULT | TC-79-UT-001, TC-79-IT-001, TC-79-NR-001, TC-79-BDD-001 |
| CA-79-02 | B2C accepte 7 MIME autorises | TC-79-UT-004, TC-79-IT-003, TC-79-IT-004, TC-79-IT-005, TC-79-BDD-002 |
| CA-79-03 | MIME hors whitelist -> 415 | TC-79-UT-005, TC-79-IT-006, TC-79-SEC-002, TC-79-BDD-003 |
| CA-79-04 | Taille > 100 Mo -> 413, stream interrompu | TC-79-UT-007, TC-79-IT-007, TC-79-SEC-005, TC-79-BDD-004 |
| CA-79-05 | Hash SHA-256 constant-time obligatoire | TC-79-UT-009, TC-79-SEC-004, TC-79-INV-001 |
| CA-79-06 | Audit append-only enrichi pour B2C | TC-79-UT-011, TC-79-IT-011, TC-79-INV-004, TC-79-BDD-006 |
| CA-79-07 | Scellement p95 <= 1s | TC-79-IT-015, TC-79-PERF-001, TC-79-PERF-002, TC-79-PERF-003 |
| CA-79-08 | Idempotence clientRequestId inchangee | TC-79-UT-012, TC-79-IT-014, TC-79-NR-004, TC-79-BDD-005 |
2) Jeux de donnees de test (fixtures)¶
Dataset requis¶
fixture_png_1kb.png: PNG valide, 1 Ko, magic bytes89 50 4E 47fixture_jpeg_500kb.jpg: JPEG valide, 500 Ko, magic bytesFF D8 FFfixture_mp4_50mb.mp4: MP4 valide, 50 Mo,ftypconformefixture_oversize_101mb.mp4: MP4 valide, 101 Mofixture_exe_renamed_png.png: executable renomme.png(MIME declareimage/png, magic bytes4D 5A)fixture_bad_magic_png.png: extension PNG, magic bytes invalides
Exemples de payloads API¶
{
"clientRequestId": "req-79-0001",
"category": "B2C_EVIDENCE_MINOR",
"declaredMimeType": "image/png",
"metadata": {
"minorCaseId": "MIN-12345",
"source": "mobile-app"
}
}
{
"clientRequestId": "req-79-0002",
"declaredMimeType": "image/jpeg",
"metadata": {
"source": "legacy-client-without-category"
}
}
{
"clientRequestId": "req-79-0003",
"category": "B2C_EVIDENCE_MINOR",
"declaredMimeType": "application/x-msdownload",
"metadata": {
"source": "malicious-client"
}
}
3) Tests unitaires (12)¶
TC-79-UT-001 : Defaut category sur absence¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-001 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-01 |
Preconditions : - CategoryConfigService initialise avec DEFAULT
Etapes : 1. Appeler resolveCategory(null) 2. Appeler resolveCategory(undefined)
Resultat attendu : - Retourne DEFAULT dans les deux cas - Aucune exception
Donnees de test :
TC-79-UT-002 : Category invalide -> ERR-79-001¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-002 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | ERR-79-001 |
Preconditions : - Liste categories autorisees chargee
Etapes : 1. Appeler validateCategory("B2C_MINOR")
Resultat attendu : - Exception metier avec code ERR-79-001 - Mapping HTTP prevu 400
Donnees de test :
TC-79-UT-003 : Config absente pour categorie -> ERR-79-002¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-003 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | ERR-79-002 |
Preconditions : - B2C_EVIDENCE_MINOR absent de la config runtime
Etapes : 1. Appeler getCategoryRules("B2C_EVIDENCE_MINOR")
Resultat attendu : - Retour erreur ERR-79-002 - Aucun fallback silencieux
Donnees de test :
TC-79-UT-004 : Whitelist B2C contient exactement 7 MIME¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-004 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-02, F-79-02 |
Preconditions : - Regles B2C chargees
Etapes : 1. Lire la whitelist MIME de B2C_EVIDENCE_MINOR
Resultat attendu : - Taille de liste = 7 - Valeurs strictement egales a la liste attendue
Donnees de test :
{"expectedCount": 7, "expectedMimes": ["image/png","image/jpeg","audio/mp4","audio/mpeg","audio/wav","video/mp4","video/quicktime"]}
TC-79-UT-005 : MIME non autorise rejete¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-005 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-03, ERR-79-003 |
Preconditions : - Regles B2C actives
Etapes : 1. Appeler validateMime("B2C_EVIDENCE_MINOR", "application/pdf")
Resultat attendu : - Erreur ERR-79-003 - Code HTTP cible 415
Donnees de test :
TC-79-UT-006 : MIME autorise accepte¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-006 |
| Type | Unitaire |
| Priorite | P1 (majeur) |
| Reference | CA-79-02 |
Preconditions : - Regles B2C actives
Etapes : 1. Valider image/png 2. Valider video/quicktime
Resultat attendu : - Validation OK pour les deux MIME - Aucune erreur levee
Donnees de test :
TC-79-UT-007 : Taille strictement superieure a 100 Mo rejetee¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-007 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-04, ERR-79-004 |
Preconditions : - Limite category B2C configuree a 104857600
Etapes : 1. Verifier size=104857601
Resultat attendu : - Erreur ERR-79-004 - Rejet immediat
Donnees de test :
TC-79-UT-008 : Taille limite exacte 100 Mo acceptee¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-008 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-04 |
Preconditions : - Limite B2C a 104857600
Etapes : 1. Verifier size=104857600
Resultat attendu : - Validation OK
Donnees de test :
TC-79-UT-009 : Comparaison SHA-256 constant-time¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-009 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-05 |
Preconditions : - Fonction constantTimeDigestCompare instrumentee
Etapes : 1. Comparer deux hash egaux 2. Comparer deux hash differents 3. Mesurer distribution de temps sur 10k iterations
Resultat attendu : - Resultats booleens corrects - Ecart de temps moyen entre succes/echec dans un seuil acceptable (ex. <5%)
Donnees de test :
TC-79-UT-010 : Fingerprint mismatch -> ERR-79-005¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-010 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | ERR-79-005 |
Preconditions : - Digest calcule disponible
Etapes : 1. Appeler validation fingerprint avec valeur fournie differente
Resultat attendu : - ERR-79-005 - Statut HTTP cible 422
Donnees de test :
TC-79-UT-011 : Audit enrichi B2C append-only¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-011 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-06, INV-79-03 |
Preconditions : - Writer audit append-only mocke
Etapes : 1. Logger un upload B2C 2. Tenter update d'une entree existante
Resultat attendu : - Entree inclut category, clientRequestId, hash, sealingLatencyMs - Update refuse (append-only)
Donnees de test :
{"category": "B2C_EVIDENCE_MINOR", "expectedFields": ["category","clientRequestId","digest","sealingLatencyMs"]}
TC-79-UT-012 : Regle d'idempotence inchangee¶
| Champ | Valeur |
|---|---|
| ID | TC-79-UT-012 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-08, ERR-79-006 |
Preconditions : - Store idempotence initialise
Etapes : 1. Ecrire premiere requete clientRequestId=req-1 avec digest A 2. Rejouer clientRequestId=req-1 avec digest A 3. Rejouer clientRequestId=req-1 avec digest B
Resultat attendu : - Etape 2 retourne resultat idempotent - Etape 3 retourne ERR-79-006 / 409
Donnees de test :
{"clientRequestId": "req-1", "digestA": "aaa", "digestB": "bbb", "expectedConflictError": "ERR-79-006"}
4) Tests d'integration API /documents/upload (16)¶
TC-79-IT-001 : Upload sans category -> DEFAULT¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-001 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-01 |
Preconditions : - API demarree - Config DEFAULT active
Etapes : 1. POST /documents/upload sans champ category 2. Fournir fixture_jpeg_500kb.jpg
Resultat attendu : - Reponse 2xx - Category effective tracee = DEFAULT
Donnees de test :
TC-79-IT-002 : Category invalide -> 400¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-002 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | ERR-79-001 |
Preconditions : - API demarree
Etapes : 1. POST avec category=B2C_MINOR
Resultat attendu : - HTTP 400 - Payload erreur code ERR-79-001
Donnees de test :
TC-79-IT-003 : PNG valide B2C accepte¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-003 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-02 |
Preconditions : - B2C active
Etapes : 1. POST fixture_png_1kb.png avec category B2C
Resultat attendu : - 2xx - Audit enrichi present
Donnees de test :
TC-79-IT-004 : JPEG valide B2C accepte¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-004 |
| Type | Integration |
| Priorite | P1 (majeur) |
| Reference | CA-79-02 |
Preconditions : - B2C active
Etapes : 1. POST fixture_jpeg_500kb.jpg
Resultat attendu : - 2xx
Donnees de test :
TC-79-IT-005 : MP4 50 Mo valide B2C accepte¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-005 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-02 |
Preconditions : - B2C active
Etapes : 1. POST fixture_mp4_50mb.mp4
Resultat attendu : - 2xx - Sealing latency capturee
Donnees de test :
TC-79-IT-006 : MIME non autorise -> 415¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-006 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-03, ERR-79-003 |
Preconditions : - B2C active
Etapes : 1. POST application/pdf en B2C
Resultat attendu : - HTTP 415 - Code ERR-79-003
Donnees de test :
TC-79-IT-007 : Fichier 101 Mo -> 413 et interruption stream¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-007 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-04, ERR-79-004, INV-79-02 |
Preconditions : - Limite B2C 100 Mo
Etapes : 1. POST fixture_oversize_101mb.mp4 2. Observer telemetry d'interruption stream
Resultat attendu : - HTTP 413 - Flux coupe avant persistance complete - Aucun artefact scelle/non scelle persistant
Donnees de test :
TC-79-IT-008 : Fichier a la limite 100 Mo accepte¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-008 |
| Type | Integration |
| Priorite | P1 (majeur) |
| Reference | CA-79-04 |
Preconditions : - Fixture 100 Mo exacte disponible
Etapes : 1. POST fixture 100 Mo en B2C
Resultat attendu : - 2xx
Donnees de test :
TC-79-IT-009 : Config categorie absente -> 422¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-009 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | ERR-79-002 |
Preconditions : - Feature flag B2C active mais config regles retiree
Etapes : 1. POST upload B2C valide
Resultat attendu : - HTTP 422 - ERR-79-002
Donnees de test :
TC-79-IT-010 : Fingerprint mismatch -> 422¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-010 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | ERR-79-005 |
Preconditions : - API attend fingerprint client
Etapes : 1. POST fichier valide avec fingerprint faux
Resultat attendu : - HTTP 422 - ERR-79-005
Donnees de test :
TC-79-IT-011 : Audit enrichi B2C present et immutable¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-011 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-06, INV-79-03, INV-79-04 |
Preconditions : - Audit store accessible en lecture
Etapes : 1. Realiser un upload B2C succes 2. Lire enregistrement audit 3. Tenter modification/suppression via API interne de maintenance
Resultat attendu : - Champs enrichis presents - Modification/suppression refusee et tracee
Donnees de test :
TC-79-IT-012 : Aucune persistance en clair¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-012 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | INV-79-01 |
Preconditions : - Backend execute en environnement de test avec acces stockage
Etapes : 1. Uploader un fichier B2C valide 2. Scanner stockage objet et temporaire
Resultat attendu : - Aucune copie en clair accessible - Uniquement objets chiffres/scelles referencables
Donnees de test :
TC-79-IT-013 : Aucun upload non scelle ne persiste¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-013 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | INV-79-02 |
Preconditions : - Possibilite d'injecter une panne entre reception et scellement
Etapes : 1. Injecter faute durant scellement 2. Envoyer upload valide
Resultat attendu : - Reponse erreur controlee (500 / ERR-79-007) - Nettoyage complet, pas d'objet non scelle residuel
Donnees de test :
TC-79-IT-014 : Idempotence clientRequestId conservee¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-014 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-08, ERR-79-006 |
Preconditions : - API idempotente active
Etapes : 1. Poster une requete clientRequestId=req-79-idem-1 2. Rejouer identique 3. Rejouer avec fichier different
Resultat attendu : - Rejeu identique: meme reponse / meme preuve - Rejeu divergent: 409 + ERR-79-006
Donnees de test :
TC-79-IT-015 : p95 scellement <= 1s sur trafic representatif¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-015 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-07, INV-79-06 |
Preconditions : - Environnement de perf integration stable
Etapes : 1. Envoyer 500 uploads repartis (PNG/JPEG/MP4) 2. Collecter latence de scellement
Resultat attendu : - p95 <= 1000 ms - p99 documente
Donnees de test :
TC-79-IT-016 : Erreur interne controlee -> ERR-79-007¶
| Champ | Valeur |
|---|---|
| ID | TC-79-IT-016 |
| Type | Integration |
| Priorite | P1 (majeur) |
| Reference | ERR-79-007 |
Preconditions : - Injecteur de fautes actif
Etapes : 1. Simuler indisponibilite service de scellement 2. Envoyer upload valide
Resultat attendu : - HTTP 500 - Code erreur ERR-79-007 - Audit d'echec trace
Donnees de test :
5) Tests de non-regression PD-60 (5)¶
TC-79-NR-001 : Client legacy sans category continue de fonctionner¶
| Champ | Valeur |
|---|---|
| ID | TC-79-NR-001 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-01 |
Preconditions : - Client PD-60 sans champ category
Etapes : 1. Executer scenario upload legacy complet
Resultat attendu : - Aucun changement de contrat API - Traitement DEFAULT
Donnees de test :
TC-79-NR-002 : MIME autorises historiques DEFAULT inchanges¶
| Champ | Valeur |
|---|---|
| ID | TC-79-NR-002 |
| Type | Integration |
| Priorite | P1 (majeur) |
| Reference | F-79-01 |
Preconditions : - Regles DEFAULT pre-PD-79 connues
Etapes : 1. Executer batterie MIME DEFAULT historique
Resultat attendu : - Meme comportement qu'avant PD-79
Donnees de test :
TC-79-NR-003 : Schema de reponse upload inchange pour DEFAULT¶
| Champ | Valeur |
|---|---|
| ID | TC-79-NR-003 |
| Type | Integration |
| Priorite | P1 (majeur) |
| Reference | F-79-01 |
Preconditions : - Snapshot schema OpenAPI PD-60 disponible
Etapes : 1. Comparer reponse upload DEFAULT a snapshot
Resultat attendu : - Aucune rupture backward-compatible
Donnees de test :
TC-79-NR-004 : Idempotence legacy non alteree¶
| Champ | Valeur |
|---|---|
| ID | TC-79-NR-004 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-08 |
Preconditions : - Cas idempotence PD-60 existants
Etapes : 1. Reexecuter suite idempotence pre-existante
Resultat attendu : - Resultats identiques
Donnees de test :
TC-79-NR-005 : Journalisation standard DEFAULT inchangee¶
| Champ | Valeur |
|---|---|
| ID | TC-79-NR-005 |
| Type | Integration |
| Priorite | P2 (mineur) |
| Reference | F-79-04 |
Preconditions : - Format logs PD-60 reference
Etapes : 1. Executer upload DEFAULT 2. Comparer champs de log standard
Resultat attendu : - Aucun champ supprime/renomme
Donnees de test :
6) Tests de securite (6)¶
TC-79-SEC-001 : Tentative injection metadata¶
| Champ | Valeur |
|---|---|
| ID | TC-79-SEC-001 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | INV-79-05 |
Preconditions : - WAF/validation input actives
Etapes : 1. Soumettre metadata contenant payload injection ("$ne":null, SQL-like)
Resultat attendu : - Rejet ou neutralisation stricte - Aucune corruption audit
Donnees de test :
{"metadata": {"minorCaseId": {"$ne": null}, "comment": "' OR 1=1 --"}, "expected": "rejected-or-sanitized"}
TC-79-SEC-002 : EXE deguise en PNG (bypass MIME)¶
| Champ | Valeur |
|---|---|
| ID | TC-79-SEC-002 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-03, ERR-79-003 |
Preconditions : - Detection magic bytes active
Etapes : 1. Uploader fixture_exe_renamed_png.png avec MIME declare image/png
Resultat attendu : - HTTP 415 - Rejet avant scellement
Donnees de test :
TC-79-SEC-003 : Magic bytes incorrects¶
| Champ | Valeur |
|---|---|
| ID | TC-79-SEC-003 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-03 |
Preconditions : - Verification contenu binaire active
Etapes : 1. Uploader fixture_bad_magic_png.png
Resultat attendu : - HTTP 415 - Trace d'anomalie de type contenu
Donnees de test :
TC-79-SEC-004 : Timing attacks sur comparaison hash¶
| Champ | Valeur |
|---|---|
| ID | TC-79-SEC-004 |
| Type | Unitaire |
| Priorite | P0 (bloquant) |
| Reference | CA-79-05 |
Preconditions : - Harness de benchmark dispo
Etapes : 1. Comparer series de hash avec prefixes communs differents 2. Evaluer corrélation temps / longueur prefixe
Resultat attendu : - Pas de correlation exploitable - Seuil d'alerte non depasse
Donnees de test :
TC-79-SEC-005 : DoS payload oversize stream¶
| Champ | Valeur |
|---|---|
| ID | TC-79-SEC-005 |
| Type | Integration |
| Priorite | P1 (majeur) |
| Reference | CA-79-04, INV-79-02 |
Preconditions : - Limiteur flux actif
Etapes : 1. Envoyer flux >100 Mo en chunk lent
Resultat attendu : - Connexion coupee proprement - Ressources liberees
Donnees de test :
TC-79-SEC-006 : Rejeu malveillant clientRequestId avec contenu different¶
| Champ | Valeur |
|---|---|
| ID | TC-79-SEC-006 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | CA-79-08, ERR-79-006 |
Preconditions : - Idempotence store actif
Etapes : 1. Envoyer requete A (id X) 2. Envoyer requete B (id X, contenu different)
Resultat attendu : - HTTP 409 - Tentative de conflit tracee en audit securite
Donnees de test :
7) Tests de performance (3)¶
TC-79-PERF-001 : SLA p95 scellement <= 1s (charge nominale)¶
| Champ | Valeur |
|---|---|
| ID | TC-79-PERF-001 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-07, INV-79-06 |
Preconditions : - Env de perf representatif
Etapes : 1. Simuler 50 RPS pendant 10 min (mix B2C) 2. Capturer latences scellement
Resultat attendu : - p95 <= 1000 ms
Donnees de test :
TC-79-PERF-002 : Robustesse en pic (burst)¶
| Champ | Valeur |
|---|---|
| ID | TC-79-PERF-002 |
| Type | E2E |
| Priorite | P1 (majeur) |
| Reference | CA-79-07 |
Preconditions : - Autoscaling/queueing configure
Etapes : 1. Generer burst 200 RPS sur 60s
Resultat attendu : - Aucun timeout critique - p95 <= 1s maintenu ou degradation documentee sous seuil d'alerte
Donnees de test :
TC-79-PERF-003 : Endurance 1h sans derive¶
| Champ | Valeur |
|---|---|
| ID | TC-79-PERF-003 |
| Type | E2E |
| Priorite | P1 (majeur) |
| Reference | CA-79-07 |
Preconditions : - Monitoring memoire/cpu/queue
Etapes : 1. Maintenir 20 RPS pendant 60 min 2. Mesurer p95 toutes les 5 min
Resultat attendu : - Pas de fuite memoire significative - p95 stable <= 1s
Donnees de test :
8) Tests d'invariants (INV-79-xx)¶
TC-79-INV-001 : INV-79-01 aucun fichier en clair cote serveur¶
| Champ | Valeur |
|---|---|
| ID | TC-79-INV-001 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | INV-79-01 |
Preconditions : - Acces lecture aux stockages techniques en environnement de test
Etapes : 1. Uploader 3 fichiers B2C 2. Scanner stockages temporaire/permanent
Resultat attendu : - Aucun contenu en clair trouvable
Donnees de test :
{"files": ["fixture_png_1kb.png", "fixture_jpeg_500kb.jpg", "fixture_mp4_50mb.mp4"], "expected": "encrypted-only"}
TC-79-INV-002 : INV-79-02 aucun upload non scelle persiste¶
| Champ | Valeur |
|---|---|
| ID | TC-79-INV-002 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | INV-79-02 |
Preconditions : - Fault injection active
Etapes : 1. Interrompre traitement avant scellement final
Resultat attendu : - Nettoyage complet des artefacts temporaires
Donnees de test :
TC-79-INV-003 : INV-79-03 aucune modification ulterieure¶
| Champ | Valeur |
|---|---|
| ID | TC-79-INV-003 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | INV-79-03 |
Preconditions : - Une preuve scellee existe
Etapes : 1. Tenter update metadonnees preuve
Resultat attendu : - Refus explicite - Trace d'action interdite
Donnees de test :
TC-79-INV-004 : INV-79-04 aucun effacement silencieux¶
| Champ | Valeur |
|---|---|
| ID | TC-79-INV-004 |
| Type | Integration |
| Priorite | P0 (bloquant) |
| Reference | INV-79-04 |
Preconditions : - Policy retention configuree
Etapes : 1. Tenter suppression via endpoint admin
Resultat attendu : - Operation soit interdite, soit journalisee explicitement - Jamais de suppression silencieuse
Donnees de test :
TC-79-INV-005 : INV-79-05 preuve tracable independamment¶
| Champ | Valeur |
|---|---|
| ID | TC-79-INV-005 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | INV-79-05 |
Preconditions : - Identifiant preuve disponible
Etapes : 1. Recuperer preuve et chainage audit sans contexte applicatif
Resultat attendu : - Verification independante possible (digest + horodatage + sealId)
Donnees de test :
TC-79-INV-006 : INV-79-06 scellement inferieur a 1s¶
| Champ | Valeur |
|---|---|
| ID | TC-79-INV-006 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | INV-79-06, CA-79-07 |
Preconditions : - Instrumentation latence active
Etapes : 1. Executer campagne de charge nominale
Resultat attendu : - p95 <= 1000 ms
Donnees de test :
9) Scenarios de validation fonctionnelle (BDD Given/When/Then)¶
TC-79-BDD-001 : Upload legacy sans category¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-001 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-01 |
Preconditions : - Client legacy PD-60
Etapes : 1. Soumettre un JPEG sans category
Resultat attendu : - Upload accepte sous DEFAULT
Donnees de test :
BDD : - Given un client legacy sans champ category - When il charge un fichier valide - Then le systeme applique la category DEFAULT sans rupture de contrat
TC-79-BDD-002 : Upload B2C nominal PNG¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-002 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-02, CA-79-06 |
Preconditions : - Category B2C active
Etapes : 1. Soumettre PNG 1 Ko avec category B2C
Resultat attendu : - Upload accepte, preuve scellee, audit enrichi
Donnees de test :
BDD : - Given une requete B2C valide - When le fichier PNG est envoye - Then la preuve est scellee et tracee en append-only
TC-79-BDD-003 : Rejet MIME hors whitelist¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-003 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-03 |
Preconditions : - Category B2C active
Etapes : 1. Envoyer application/pdf en B2C
Resultat attendu : - 415 immediat
Donnees de test :
BDD : - Given une requete B2C avec MIME non autorise - When le serveur valide les regles de category - Then la requete est rejetee avec 415
TC-79-BDD-004 : Rejet oversize¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-004 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-04 |
Preconditions : - Limite B2C a 100 Mo
Etapes : 1. Envoyer un fichier 101 Mo
Resultat attendu : - 413 et interruption de flux
Donnees de test :
BDD : - Given un upload B2C depassant la taille maximale - When le flux est recu - Then le serveur coupe le stream et renvoie 413
TC-79-BDD-005 : Idempotence stricte¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-005 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-08 |
Preconditions : - API idempotente
Etapes : 1. Soumettre requete avec clientRequestId fixe 2. Rejouer identique 3. Rejouer avec contenu different
Resultat attendu : - Rejeu identique idempotent - Rejeu divergent 409
Donnees de test :
BDD : - Given un identifiant client deja utilise - When la meme requete est rejouee - Then le systeme retourne le meme resultat - And une variation du contenu produit un conflit 409
TC-79-BDD-006 : Audit enrichi obligatoire¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-006 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-06, INV-79-05 |
Preconditions : - Audit consultable
Etapes : 1. Uploader preuve B2C 2. Lire entree audit associee
Resultat attendu : - Champs enrichis tous presents
Donnees de test :
BDD : - Given une preuve B2C nouvellement creee - When l'audit est consulte - Then l'entree est complete et exploitable pour verification independante
TC-79-BDD-007 : Hash mismatch¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-007 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | ERR-79-005 |
Preconditions : - Fingerprint client attendu
Etapes : 1. Envoyer fichier valide avec fingerprint incorrect
Resultat attendu : - HTTP 422
Donnees de test :
BDD : - Given un fichier intact et un fingerprint transmis incorrect - When le systeme compare les digest - Then il rejette la requete avec 422
TC-79-BDD-008 : SLA de scellement respecte¶
| Champ | Valeur |
|---|---|
| ID | TC-79-BDD-008 |
| Type | E2E |
| Priorite | P0 (bloquant) |
| Reference | CA-79-07, INV-79-06 |
Preconditions : - Monitoring de latence actif
Etapes : 1. Executer campagne nominale
Resultat attendu : - p95 <= 1s
Donnees de test :
BDD : - Given un trafic representatif de production - When les preuves B2C sont scellees - Then la latence p95 reste inferieure ou egale a 1 seconde
10) Couverture minimale atteinte¶
| Type | Minimum demande | Couverture planifiee |
|---|---|---|
| Tests unitaires | 10+ | 12 |
| Tests d'integration | 15+ | 16 |
| Tests de non-regression | 5+ | 5 |
| Tests de securite | 5+ | 6 |
| Tests de performance | 3+ | 3 |
11) Strategie d'execution et criteres de sortie¶
- Ordre recommande : Unitaire -> Integration -> Invariants -> Securite -> Non-regression -> Performance -> BDD
- Critere GO QA : 100% des P0 verts, 0 echec sur invariants, SLA p95 valide, 0 regression PD-60
- Critere NO-GO : tout echec P0, toute violation d'invariant, ou toute derive SLA non justifiee