PD-31 — Tests & Validation¶
1. Matrice de traçabilité¶
| Référence | Test cases |
|---|---|
| CA-31-001 | TC-31-001 |
| CA-31-002 | TC-31-002 |
| CA-31-003 | TC-31-003 |
| CA-31-004 | TC-31-004 |
| CA-31-005 | TC-31-017 |
| CA-31-006 | TC-31-006 |
| CA-31-007 | TC-31-007 |
| CA-31-008 | TC-31-045 |
| CA-31-009 | TC-31-018 |
| CA-31-010 | TC-31-019 |
| CA-31-011 | TC-31-020 |
| CA-31-012 | TC-31-021 |
| CA-31-013 | TC-31-008 |
| CA-31-014 | TC-31-009 |
| CA-31-015 | TC-31-046 |
| CA-31-016 | TC-31-010 |
| CA-31-017 | TC-31-022 |
| CA-31-018 | TC-31-023 |
| CA-31-019 | TC-31-024 |
| CA-31-020 | TC-31-025 |
| CA-31-021 | TC-31-047 |
| CA-31-022 | TC-31-026 |
| CA-31-023 | TC-31-027 |
| CA-31-024 | TC-31-028 |
| CA-31-025 | TC-31-029 |
| CA-31-026 | TC-31-030 |
| CA-31-027 | TC-31-031 |
| CA-31-028 | TC-31-048 |
| CA-31-029 | TC-31-032 |
| CA-31-030 | TC-31-033 |
| CA-31-031 | TC-31-034 |
| CA-31-032 | TC-31-035 |
| INV-31-01 | TC-31-017, TC-31-063 |
| INV-31-02 | TC-31-006, TC-31-007, TC-31-064 |
| INV-31-03 | TC-31-005, TC-31-065 |
| INV-31-04 | TC-31-053, TC-31-066 |
| INV-31-05 | TC-31-027, TC-31-032, TC-31-067 |
| INV-31-06 | TC-31-011, TC-31-029, TC-31-068 |
| INV-31-07 | TC-31-026, TC-31-069 |
| INV-31-08 | TC-31-036, TC-31-049, TC-31-070 |
2. Tests unitaires¶
TC-31-001 : Couverture des 8 types d'événements auth¶
- Critère : CA-31-001
- Préconditions : Catalogue des types chargé dans
auth_event_types.yml - Données de test :
["AUTH_LOGIN_SUCCESS","AUTH_LOGIN_FAILURE","AUTH_MFA_CHALLENGE","AUTH_MFA_FAILURE","AUTH_MFA_SUCCESS","AUTH_TOKEN_REFRESH","AUTH_TOKEN_INVALID","AUTH_LOGOUT"] - Actions : Exécuter
normalizeEvent()pour chaque type - Résultat attendu : 8/8 types acceptés, chacun produit un enregistrement normalisé persistant
- Priorité : P0
TC-31-002 : Validation du schéma minimal obligatoire¶
- Critère : CA-31-002
- Préconditions : Validateur JSON Schema actif
- Données de test : événement avec
event_id="evt-0001",event_type="AUTH_LOGIN_SUCCESS",timestamp="2026-02-15T10:00:00.123Z",channel="ios",ip_address="203.0.113.10",user_agent="ProbatioVault/1.4 (iOS 18.2)",geo_country="FR",success=true,correlation_id="corr-31-0001",risk_score=0.12 - Actions : Valider puis sérialiser l'événement
- Résultat attendu : validation OK, 10 champs présents et non nuls
- Priorité : P0
TC-31-003 : Persistance des identifiants inconnus¶
- Critère : CA-31-003
- Préconditions : Résolveur utilisateur connecté à une base vide
- Données de test : tentative login
username="ghost.user@pv.test",password_hash_client="sha256:abc123" - Actions : Ingestion via pipeline audit
- Résultat attendu : ligne créée avec
user_id=NULL,event_type="AUTH_LOGIN_FAILURE", aucune perte - Priorité : P0
TC-31-004 : Uniformité inter-canaux¶
- Critère : CA-31-004
- Préconditions : Connecteurs
ios,pwa,apiactifs - Données de test : 3 événements simultanés même contenu métier avec canaux différents
- Actions : Ingestion concurrente puis comparaison des colonnes persistées
- Résultat attendu : mêmes colonnes/types pour les 3 canaux, seule valeur
channeldiffère - Priorité : P0
TC-31-005 : Horodatage UTC millisecondes strict¶
- Critère : INV-31-03
- Préconditions : Normaliseur timestamp actif
- Données de test : entrées
2026-02-15 11:22:33+01:00,2026-02-15T10:22:33Z,1739614953123 - Actions : Convertir via
normalizeTimestamp() - Résultat attendu : sortie ISO-8601 UTC avec millisecondes, ex.
2026-02-15T10:22:33.123Z - Priorité : P0
TC-31-006 : Calcul event_hash SHA3-256¶
- Critère : CA-31-006 / INV-31-02
- Préconditions : Canonicaliseur JSON déterministe actif
- Données de test :
payload_canonique='{"event_id":"evt-31-06","event_type":"AUTH_LOGIN_SUCCESS","success":true}',previous_hash='9f3c8eac1b4b7b3f0f6f0d2d1af9b9d1e2f1c3b6e7a8d9c0b1a2c3d4e5f60718' - Actions : Exécuter
computeEventHash(payload, previous_hash) - Résultat attendu : hash 64 hex chars (
^[a-f0-9]{64}$), non nul - Priorité : P0
TC-31-007 : Chaînage previous_hash¶
- Critère : CA-31-007 / INV-31-02
- Préconditions : Table en mode append-only
- Données de test : séquence de 5 événements
evt-31-07-1..5 - Actions : Insérer séquentiellement puis lire
event_hashetprevious_hash - Résultat attendu : pour n=2..5,
previous_hash(n)==event_hash(n-1) - Priorité : P0
TC-31-008 : Bornage du risk_score¶
- Critère : CA-31-013
- Préconditions : Moteur scoring actif version
risk-rules-v5 - Données de test : cas A
ip_reputation=0.0, cas Bip_reputation=1.0, cas C extrêmecomputed=1.3 - Actions : Calculer le score pour A/B/C
- Résultat attendu : scores numériques dans
[0.0,1.0], cas C clampé à1.0 - Priorité : P0
TC-31-009 : Rechargement dynamique des règles de scoring¶
- Critère : CA-31-014
- Préconditions : Config store Redis accessible
- Données de test : règle initiale
weight_geo=0.20, règle modifiéeweight_geo=0.35 - Actions : Mettre à jour config via API, recalculer sans redéploiement
- Résultat attendu : nouvelle pondération appliquée en <5s, aucun restart service
- Priorité : P1
TC-31-010 : Traçage de version en fallback scoring¶
- Critère : CA-31-016
- Préconditions : Simuler indisponibilité config store
- Données de test : événement
evt-31-10 - Actions : Déclencher scoring en mode fallback
- Résultat attendu : log technique contient
rules_version=fallback-v1etfallback=true - Priorité : P1
TC-31-011 : Présence correlation_id sur événement¶
- Critère : INV-31-06
- Préconditions : Générateur correlation actif
- Données de test : requête sans
X-Correlation-ID - Actions : Ingestion auth event
- Résultat attendu :
correlation_idauto-généré format UUID v4 et persisté - Priorité : P0
TC-31-012 : Validation erreurs API ingestion POST /internal/v1/audit/auth-events¶
- Critère : CA-31-002
- Préconditions : Endpoint exposé
- Données de test :
400payload invalide,401token absent,403rôle interdit,409duplicateevent_id,422champ manquantevent_type,429200 req/s depuis même clé,503DB down - Actions : Exécuter 7 appels avec jeux dédiés
- Résultat attendu : codes retournés exactement
400/401/403/409/422/429/503 - Priorité : P0
TC-31-013 : Validation erreurs API consultation GET /v1/audit/auth-events¶
- Critère : CA-31-023
- Préconditions : Endpoint exposé
- Données de test :
400paramfrom>to,401sans JWT,403rôleUSER,416page out-of-rangeoffset=9999999,500panne SQL simulée - Actions : Exécuter 5 appels négatifs
- Résultat attendu : codes
400/401/403/416/500conformes - Priorité : P0
TC-31-014 : Validation erreurs API config alertes PUT /v1/audit/auth-alerts/config/{pattern_code}¶
- Critère : CA-31-014
- Préconditions : Endpoint exposé
- Données de test :
400body malformé,401sans JWT,403rôle non autorisé,404pattern_code=UNKNOWN_RULE,409conflit version,422seuil négatif-1 - Actions : Exécuter 6 appels négatifs
- Résultat attendu : codes
400/401/403/404/409/422conformes - Priorité : P1
TC-31-015 : Validation erreurs API export POST /v1/audit/auth-events/judicial-export¶
- Critère : CA-31-029
- Préconditions : Endpoint exposé
- Données de test :
400période invalide,401sans JWT,403rôleUSER,404batch inexistant,409export déjà en cours,422payload incomplet,503storage indisponible - Actions : Exécuter 7 appels négatifs
- Résultat attendu : codes
400/401/403/404/409/422/503conformes - Priorité : P0
TC-31-016 : Validation erreurs API alertes GET /v1/audit/auth-alerts¶
- Critère : CA-31-017
- Préconditions : Endpoint exposé
- Données de test :
400filtre invalideseverity=CRITICL,401sans JWT,403rôleUSER,500panne index alertes - Actions : Exécuter 4 appels négatifs
- Résultat attendu : codes
400/401/403/500conformes,200sur appel nominal - Priorité : P1
3. Tests d'intégration¶
TC-31-017 : Blocage SQL UPDATE/DELETE¶
- Critère : CA-31-005 / INV-31-01
- Préconditions : Trigger/Policy append-only en base
- Données de test : SQL
UPDATE auth_audit_log SET success=true WHERE event_id='evt-lock-1'; SQLDELETE FROM auth_audit_log WHERE event_id='evt-lock-1' - Actions : Exécuter les deux requêtes avec compte applicatif
- Résultat attendu : rejet DB (
ERROR: append-only violation), aucune ligne modifiée/supprimée - Priorité : P0
TC-31-018 : Attribution batch_id sous contrainte temps/volume¶
- Critère : CA-31-009
- Préconditions : Worker de batching actif
- Données de test : lot A
1000événements en 4 min; lot B350événements en 10 min - Actions : Ingestion lot A puis lot B, observer
batch_id - Résultat attendu : chaque événement rattaché à un
batch_idavant seuil atteint (1000 ou 10 min) - Priorité : P0
TC-31-019 : Métadonnées d'ancrage complètes¶
- Critère : CA-31-010
- Préconditions : Services Merkle/TSA/blockchain mockés en succès
- Données de test : 200 événements avec statut final
anchored - Actions : Lire en base les colonnes d'ancrage
- Résultat attendu : 200/200 avec
merkle_root,tsa_token_ref,blockchain_tx_refnon nuls - Priorité : P0
TC-31-020 : Vérification Merkle path¶
- Critère : CA-31-011
- Préconditions : Vérificateur inclusion disponible
- Données de test : échantillon aléatoire déterministe (seed
31) de 100 événements ancrés - Actions : Exécuter
verifyMerklePath(event_id, batch_id) - Résultat attendu : 100/100
true - Priorité : P0
TC-31-021 : Gestion échec TSA/blockchain + retry¶
- Critère : CA-31-012
- Préconditions : Simulateur pannes externes
- Données de test : panne TSA 2 min, panne blockchain 3 tentatives
- Actions : Lancer ancrage puis rétablir services
- Résultat attendu : états
TSA_FAILED/BLOCKCHAIN_FAILEDvisibles, retries automatiques, statut finalanchored - Priorité : P0
TC-31-022 : Détection bruteforce¶
- Critère : CA-31-017
- Préconditions : Fenêtre glissante 5 min active
- Données de test : 6 échecs login pour
user_id=usr-901entre10:00:00Zet10:04:59Z - Actions : Ingestion des 6 événements
- Résultat attendu : alerte
BRUTEFORCEémise au 6e événement - Priorité : P0
TC-31-023 : Détection credential stuffing¶
- Critère : CA-31-018
- Préconditions : Règle IP active
- Données de test : 11 échecs en 60s depuis
198.51.100.24sur 11user_iddistincts - Actions : Ingestion séquentielle en 45s
- Résultat attendu : alerte
CREDENTIAL_STUFFINGémise - Priorité : P0
TC-31-024 : Détection token spray¶
- Critère : CA-31-019
- Préconditions : Règle token invalid active
- Données de test : 21 événements
AUTH_TOKEN_INVALIDen 60s - Actions : Ingestion des 21 événements
- Résultat attendu : alerte
TOKEN_SPRAYémise - Priorité : P0
TC-31-025 : Détection geo-hopping¶
- Critère : CA-31-020
- Préconditions : Géolocalisation IP active
- Données de test :
user_id=usr-777succès FR à08:00:00Z, succès BR à09:20:00Z - Actions : Ingestion des 2 événements
- Résultat attendu : alerte
GEO_HOPPINGémise - Priorité : P0
TC-31-026 : Journalisation probatoire des alertes¶
- Critère : CA-31-022 / INV-31-07
- Préconditions : Générateur alertes actif
- Données de test : déclencher 4 types d'alertes (TC-31-022..025)
- Actions : Vérifier
auth_audit_loget statut d'ancrage des alertes - Résultat attendu : 4 alertes journalisées comme événements append-only avec chaînage et ancrage
- Priorité : P0
TC-31-027 : Contrôle d'accès lecture audit¶
- Critère : CA-31-023 / INV-31-05
- Préconditions : JWT pour rôles
ADMIN,AUDITOR,USER,SUPPORT - Données de test : requête
GET /v1/audit/auth-events?from=2026-02-01T00:00:00.000Z&to=2026-02-15T23:59:59.999Z - Actions : Appeler endpoint avec 4 rôles
- Résultat attendu :
200pourADMIN/AUDITOR,403systématique pourUSER/SUPPORT - Priorité : P0
TC-31-028 : Trace de consultation systématique¶
- Critère : CA-31-024
- Préconditions : Audit de consultation activé
- Données de test : 20 consultations réussies (10 ADMIN, 10 AUDITOR)
- Actions : Exécuter consultations puis requêter table
audit_access_log - Résultat attendu : 20 traces créées, ratio 100%
- Priorité : P0
TC-31-029 : Contenu des traces de consultation¶
- Critère : CA-31-025 / INV-31-06
- Préconditions : Consultation audit autorisée
- Données de test :
actor_id=adm-01,query_scope='user_id=usr-901;from=2026-02-14T00:00:00.000Z;to=2026-02-15T00:00:00.000Z',correlation_id='corr-31-029' - Actions : Faire 1 consultation puis lire trace générée
- Résultat attendu : trace contient exactement
actor_id,timestamp,query_scope,correlation_id - Priorité : P0
TC-31-030 : Composition des 6 artefacts export judiciaire¶
- Critère : CA-31-026
- Préconditions : Données ancrées disponibles
- Données de test : export période
2026-02-01..2026-02-07, artefacts attendusevents.jsonl,manifest.json,merkle-proof.json,tsa-token.tsr,blockchain-proof.json,verification-report.json - Actions : Générer export puis lister contenu archive
- Résultat attendu : 6/6 artefacts présents, non vides, checksums listés dans
manifest.json - Priorité : P0
TC-31-031 : Vérification bout-en-bout d'un export¶
- Critère : CA-31-027
- Préconditions : Vérificateur offline disponible
- Données de test : 30 exports complets (seed
31027) couvrant 3 canaux - Actions : Exécuter vérification inclusion Merkle + TSA + blockchain sur chaque export
- Résultat attendu : 30/30 succès
- Priorité : P0
TC-31-032 : Contrôle d'accès export judiciaire¶
- Critère : CA-31-029 / INV-31-05
- Préconditions : JWT multi-rôles disponibles
- Données de test : requête export identique avec rôles
ADMIN,AUDITOR,USER - Actions : Appeler
POST /v1/audit/auth-events/judicial-export - Résultat attendu :
202/200pour rôles autorisés,403pourUSER - Priorité : P0
TC-31-033 : Migration hot->cold à 3 ans¶
- Critère : CA-31-030
- Préconditions : Job de rétention quotidien actif
- Données de test : 10 000 événements datés
<=2023-02-15T00:00:00.000Z - Actions : Lancer job de migration et attendre 24h max
- Résultat attendu : 100% migrés en cold storage, index hot purgé selon policy
- Priorité : P1
TC-31-034 : Vérification checksum des archives cold¶
- Critère : CA-31-031
- Préconditions : Objets cold migrés
- Données de test : 500 objets archivés avec SHA3 checksum attendu
- Actions : Exécuter
verifyArchiveChecksums(batch=500) - Résultat attendu : 500/500 checksums valides
- Priorité : P1
TC-31-035 : Policy de conservation 10 ans versionnée¶
- Critère : CA-31-032
- Préconditions : Registre policy activé
- Données de test :
retention_policy_v3.yamlavecmin_retention_years: 10 - Actions : Charger policy et valider timeline de suppression
- Résultat attendu : aucune suppression avant 10 ans, version policy tracée
- Priorité : P1
TC-31-036 : Non-blocage du flux auth si audit indisponible¶
- Critère : INV-31-08
- Préconditions : Service audit volontairement indisponible
- Données de test : 1000 requêtes auth valides
POST /v1/auth/login - Actions : Exécuter login en charge pendant indisponibilité audit
- Résultat attendu : réponses auth maintenues, erreurs audit capturées en queue de retry, pas de blocage synchrone
- Priorité : P0
4. Tests end-to-end¶
TC-31-037 : Parcours nominal multi-canaux jusqu'à ancrage¶
- Critère : CA-31-001 / CA-31-004 / CA-31-010
- Préconditions : Environnement complet (ingestion, batching, TSA, blockchain)
- Données de test : 300 événements (100 ios, 100 pwa, 100 api) sur 8 types
- Actions : Produire événements, attendre ancrage, vérifier métadonnées
- Résultat attendu : 300 événements complets, aucun écart de schéma, ancrage rempli
- Priorité : P0
TC-31-038 : Chaîne complète alerte bruteforce probatoire¶
- Critère : CA-31-017 / CA-31-022 / INV-31-07
- Préconditions : Règles alerting actives
- Données de test : 6 échecs login
user_id=usr-e2e-01 - Actions : Déclencher motif, lire alerte, vérifier event probatoire et ancrage
- Résultat attendu : alerte visible, journalisée append-only, incluse dans batch ancré
- Priorité : P0
TC-31-039 : Consultation audit autorisée + trace corrélée¶
- Critère : CA-31-024 / CA-31-025 / INV-31-06
- Préconditions : Compte
AUDITORactif - Données de test :
correlation_id='corr-e2e-039', filtreuser_id=usr-901 - Actions : Consulter logs puis vérifier trace de consultation
- Résultat attendu : consultation réussie et trace contenant champs obligatoires + même
correlation_id - Priorité : P0
TC-31-040 : Export judiciaire et vérification externe¶
- Critère : CA-31-026 / CA-31-027
- Préconditions : Données ancrées sur 7 jours
- Données de test : export de 12 000 événements
- Actions : Générer export, transférer en sandbox forensique, lancer vérification indépendante
- Résultat attendu : 6 artefacts présents, vérification inclusion/TSA/blockchain
PASS - Priorité : P0
TC-31-041 : Pipeline de retry après panne TSA¶
- Critère : CA-31-012
- Préconditions : Injection de panne TSA contrôlée
- Données de test : 2 batches de 1000 événements
- Actions : Panne TSA sur batch1, rétablissement, observer retry et statut final
- Résultat attendu : batch1 passe de
TSA_FAILEDàanchored, batch2 nominal - Priorité : P1
TC-31-042 : Identifiant inconnu sans perte + alerte stuffing¶
- Critère : CA-31-003 / CA-31-018
- Préconditions : Détection stuffing active
- Données de test : 11 logins échoués sur 11 identifiants inexistants depuis
198.51.100.200 - Actions : Ingestion séquentielle en 50s
- Résultat attendu : 11 lignes avec
user_id=NULLpersistées, alerte stuffing émise - Priorité : P0
TC-31-043 : Contrôle d'accès global lecture/export¶
- Critère : CA-31-023 / CA-31-029 / INV-31-05
- Préconditions : comptes
ADMIN,AUDITOR,USER,OPS - Données de test : appels lecture + export par chaque rôle
- Actions : Exécuter scénario complet d'accès
- Résultat attendu : seuls
ADMIN/AUDITORaccèdent; autres403systématiques - Priorité : P0
TC-31-044 : Rétention 10 ans avec objet >3 ans¶
- Critère : CA-31-030 / CA-31-032
- Préconditions : environnement avec horloge contrôlée
- Données de test : événements datés
2016-01-01,2022-01-01,2026-01-01 - Actions : Exécuter cycle migration/rétention
- Résultat attendu : anciens migrés cold, aucun supprimé avant 10 ans
- Priorité : P1
5. Tests de performance¶
TC-31-045 : Perte nulle sur charge 1M événements¶
- Critère : CA-31-008
- Préconditions : Cluster nominal, monitoring activé
- Données de test : 1 000 000 événements (répartition 40% api, 35% pwa, 25% ios), débit cible 1 500 evt/s
- Actions : Injecter charge, comparer
events_sentvsevents_persisted - Résultat attendu :
loss_rate=0.0000%, aucun trou de séquenceevent_id - Priorité : P0
TC-31-046 : Overhead P99 du scoring¶
- Critère : CA-31-015
- Préconditions : Benchmark asynchrone isolé
- Données de test : 5 000 000 calculs score, distributions IP/geo réalistes
- Actions : Mesurer latence pipeline avec et sans scoring
- Résultat attendu : delta P99
<=0.5 ms - Priorité : P0
TC-31-047 : Latence détection + émission alerte¶
- Critère : CA-31-021
- Préconditions : Horodatage monotonic activé
- Données de test : 20 000 séquences déclenchantes multi-règles
- Actions : Mesurer
t(alert_emitted)-t(trigger_event_ingested) - Résultat attendu : P95
<1.0 s - Priorité : P0
TC-31-048 : Temps export judiciaire 100k¶
- Critère : CA-31-028
- Préconditions : Données 100k ancrées et indexées
- Données de test : 30 runs export de 100 000 événements
- Actions : Lancer exports en série, capturer durée
- Résultat attendu : P95
<60 s - Priorité : P0
TC-31-049 : Overhead auth synchrone sous panne audit¶
- Critère : INV-31-08
- Préconditions : mode dégradé audit activé
- Données de test : 200 000 logins valides
- Actions : Mesurer latence auth P99
- Résultat attendu : overhead sync
<1 ms P99 - Priorité : P0
TC-31-050 : Latence insertion journal¶
- Critère : CA-31-006
- Préconditions : base scale-out nominale
- Données de test : 2 000 000 insertions continues
- Actions : Mesurer latence
INSERT auth_audit_log - Résultat attendu :
<5 ms P99 - Priorité : P0
TC-31-051 : Throughput global¶
- Critère : CA-31-004
- Préconditions : 3 canaux actifs
- Données de test : montée progressive 500 -> 2000 evt/s
- Actions : Exécuter palier 10 min chacun
- Résultat attendu : throughput soutenu
>1000 evt/ssans perte - Priorité : P0
TC-31-052 : Stabilité long run 24h¶
- Critère : CA-31-008 / INV-31-08
- Préconditions : monitoring mémoire/queue
- Données de test : charge constante 1200 evt/s pendant 24h
- Actions : Exécuter soak test
- Résultat attendu : pas de dérive mémoire critique, pas de backlog bloquant, perte 0
- Priorité : P1
6. Tests de sécurité¶
TC-31-053 : Zero-Knowledge sur champs sensibles¶
- Critère : INV-31-04
- Préconditions : Scrubber sensible activé
- Données de test : payload contient
password="P@ssw0rd!",mfa_secret="JBSWY3DPEHPK3PXP",private_key="-----BEGIN PRIVATE KEY-----" - Actions : Ingestion événement puis lecture persistance
- Résultat attendu : champs interdits absents/redactés, aucune fuite en base/logs
- Priorité : P0
TC-31-054 : Injection SQL sur endpoint consultation¶
- Critère : CA-31-023
- Préconditions : WAF et requêtes paramétrées actifs
- Données de test :
query_scope="user_id=1' OR '1'='1" - Actions : Appeler
GET /v1/audit/auth-eventsavec filtre malveillant - Résultat attendu : requête rejetée
400ou neutralisée, aucune extraction élargie - Priorité : P0
TC-31-055 : Forge de correlation_id¶
- Critère : INV-31-06
- Préconditions : Validation format UUID v4 active
- Données de test : header
X-Correlation-ID="corr<script>alert(1)</script>" - Actions : Ingestion puis consultation de traces
- Résultat attendu : valeur rejetée/normalisée, pas d'injection,
correlation_idvalide persisté - Priorité : P1
TC-31-056 : Escalade de privilège lecture audit¶
- Critère : INV-31-05 / CA-31-023
- Préconditions : JWT signé rôle
USER - Données de test : token modifié localement avec claim
role=ADMINsans resignature - Actions : Appeler endpoint lecture/export
- Résultat attendu : signature invalide ->
401; aucun accès obtenu - Priorité : P0
TC-31-057 : Replay d'événement ingéré (event_id dupliqué)¶
- Critère : CA-31-002
- Préconditions : contrainte d'unicité
event_id - Données de test : même payload
event_id="evt-replay-31-57"envoyé 2 fois - Actions : Exécuter 2 POST ingestion
- Résultat attendu : 1er
202/201, 2e409, pas de double insertion - Priorité : P0
TC-31-058 : Intégrité export signé¶
- Critère : CA-31-027
- Préconditions : export généré avec
manifest.json+ checksum - Données de test : altération d'un byte dans
events.jsonl - Actions : Relancer vérification end-to-end
- Résultat attendu : vérification échoue immédiatement (checksum/inclusion invalide)
- Priorité : P0
TC-31-059 : Résilience DoS sur ingestion¶
- Critère : CA-31-008 / INV-31-08
- Préconditions : rate-limiter actif
- Données de test : rafale 50 000 req/min depuis même clé
- Actions : Exécuter attaque simulée + trafic légitime parallèle
- Résultat attendu : réponses
429pour source abusive, trafic légitime maintenu - Priorité : P1
TC-31-060 : Sécurité config alertes (conflit de version)¶
- Critère : CA-31-014
- Préconditions : contrôle optimistic locking actif
- Données de test : client A version 7, client B version 7, A écrit version 8 puis B écrit ancienne version
- Actions : Exécuter 2 PUT concurrents
- Résultat attendu : écriture B rejetée
409, cohérence règles conservée - Priorité : P1
TC-31-061 : Confidentialité en logs techniques¶
- Critère : INV-31-04
- Préconditions : niveau de log
INFO - Données de test : tentative auth avec email
alice.dupont@pv.testet TOTP faux123456 - Actions : Exécuter tentative puis inspecter logs applicatifs
- Résultat attendu : pas d'email complet ni secret MFA en clair; données minimisées/pseudonymisées
- Priorité : P1
TC-31-062 : Robustesse codes erreur sans fuite interne¶
- Critère : CA-31-012 / CA-31-015
- Préconditions : gestion d'erreurs standard active
- Données de test : provoquer
500/503sur endpoints audit - Actions : Capturer réponses HTTP
- Résultat attendu : aucun stack trace/secret/SQL brut dans body d'erreur
- Priorité : P1
7. Tests de non-régression¶
TC-31-063 : Non-régression immutabilité append-only¶
- Critère : INV-31-01
- Préconditions : dataset de référence
rg-31-063chargé - Données de test : 1000 lignes historiques
- Actions : Rejouer tentatives
UPDATE/DELETEautomatisées nightly - Résultat attendu : 100% bloquées, checksum table inchangé
- Priorité : P0
TC-31-064 : Non-régression formule hash chaîné¶
- Critère : INV-31-02
- Préconditions : vecteurs de test figés version
hash-suite-v1 - Données de test : 50 paires
(payload, previous_hash, expected_hash) - Actions : Exécuter suite de comparaison
- Résultat attendu : 50/50 égalité exacte
- Priorité : P0
TC-31-065 : Non-régression format timestamp UTC ms¶
- Critère : INV-31-03
- Préconditions : normaliseur versionné
- Données de test : 200 timestamps multi-timezones
- Actions : Rejouer normalisation et comparer snapshots
- Résultat attendu : sortie toujours ISO UTC ms, aucun drift format
- Priorité : P0
TC-31-066 : Non-régression minimisation données¶
- Critère : INV-31-04
- Préconditions : règle DLP active
- Données de test : 500 payloads incluant secrets connus
- Actions : Rejouer ingestion et scanner persistance
- Résultat attendu : 0 occurrence de champs interdits
- Priorité : P0
TC-31-067 : Non-régression contrôle d'accès audit¶
- Critère : INV-31-05
- Préconditions : matrice RBAC version courante
- Données de test : rôles
ADMIN,AUDITOR,USER,SUPPORT,SERVICE_ACCOUNT - Actions : Rejouer tests d'accès lecture/export
- Résultat attendu : seules autorisations prévues restent valides
- Priorité : P0
TC-31-068 : Non-régression correlation_id bout-en-bout¶
- Critère : INV-31-06
- Préconditions : tracing distribué actif
- Données de test : 100 transactions complètes auth->audit->consultation
- Actions : Vérifier propagation de
correlation_id - Résultat attendu : 100% des transactions corrélables sans rupture
- Priorité : P0
TC-31-069 : Non-régression journalisation des alertes¶
- Critère : INV-31-07
- Préconditions : moteur anomalies actif
- Données de test : 40 déclenchements (10 par pattern principal)
- Actions : Rejouer patterns et vérifier événements d'alerte
- Résultat attendu : 40/40 alertes présentes en append-only et ancrables
- Priorité : P0
TC-31-070 : Non-régression non-blocage auth¶
- Critère : INV-31-08
- Préconditions : chaos test audit sur 15 min
- Données de test : 50 000 authentifications valides
- Actions : Injecter latence/panne audit puis mesurer auth
- Résultat attendu : auth reste disponible, SLA sync conservé, backlog audit récupéré après reprise
- Priorité : P0
Document généré dans le cadre du workflow de gouvernance ProbatioVault.