Aller au contenu

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, api actifs
  • 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 channel diffè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_hash et previous_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 B ip_reputation=1.0, cas C extrême computed=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ée weight_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-v1 et fallback=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_id auto-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 : 400 payload invalide, 401 token absent, 403 rôle interdit, 409 duplicate event_id, 422 champ manquant event_type, 429 200 req/s depuis même clé, 503 DB 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 : 400 param from>to, 401 sans JWT, 403 rôle USER, 416 page out-of-range offset=9999999, 500 panne SQL simulée
  • Actions : Exécuter 5 appels négatifs
  • Résultat attendu : codes 400/401/403/416/500 conformes
  • 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 : 400 body malformé, 401 sans JWT, 403 rôle non autorisé, 404 pattern_code=UNKNOWN_RULE, 409 conflit version, 422 seuil négatif -1
  • Actions : Exécuter 6 appels négatifs
  • Résultat attendu : codes 400/401/403/404/409/422 conformes
  • 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 : 400 période invalide, 401 sans JWT, 403 rôle USER, 404 batch inexistant, 409 export déjà en cours, 422 payload incomplet, 503 storage indisponible
  • Actions : Exécuter 7 appels négatifs
  • Résultat attendu : codes 400/401/403/404/409/422/503 conformes
  • 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 : 400 filtre invalide severity=CRITICL, 401 sans JWT, 403 rôle USER, 500 panne index alertes
  • Actions : Exécuter 4 appels négatifs
  • Résultat attendu : codes 400/401/403/500 conformes, 200 sur 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'; SQL DELETE 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 B 350 événements en 10 min
  • Actions : Ingestion lot A puis lot B, observer batch_id
  • Résultat attendu : chaque événement rattaché à un batch_id avant 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_ref non 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_FAILED visibles, retries automatiques, statut final anchored
  • 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-901 entre 10:00:00Z et 10: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.24 sur 11 user_id distincts
  • 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_INVALID en 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-777 succè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_log et 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 : 200 pour ADMIN/AUDITOR, 403 systématique pour USER/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 attendus events.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/200 pour rôles autorisés, 403 pour USER
  • 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.yaml avec min_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 AUDITOR actif
  • Données de test : correlation_id='corr-e2e-039', filtre user_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=NULL persisté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/AUDITOR accèdent; autres 403 systé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_sent vs events_persisted
  • Résultat attendu : loss_rate=0.0000%, aucun trou de séquence event_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/s sans 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-events avec filtre malveillant
  • Résultat attendu : requête rejetée 400 ou 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_id valide 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=ADMIN sans 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, 2e 409, 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 429 pour 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.test et TOTP faux 123456
  • 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/503 sur 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-063 chargé
  • Données de test : 1000 lignes historiques
  • Actions : Rejouer tentatives UPDATE/DELETE automatisé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.