Aller au contenu

Rédaction des secrets

Les enregistrements sont committés dans git, donc les secrets sont retirés avant d’écrire quoi que ce soit sur le disque. La rédaction est activée par défaut ; le proxy remplace les valeurs de ces en-têtes de requête/réponse par [REDACTED] :

  • Authorization
  • Cookie
  • Set-Cookie

C’est sûr : la correspondance de replay ignore ces en-têtes, donc la rédaction ne casse jamais la lecture. Elle s’applique aux enregistrements .mock.json, aux enregistrements WebSocket et aux fichiers .har. Pour désactiver la rédaction, passez --no-redact en CLI ou définissez redaction: false dans la configuration.

Quand seuls certains cookies sont sensibles, autorisez les inoffensifs par nom (par exemple un cookie de theme ou de test A/B). Les cookies autorisés conservent leurs valeurs dans Cookie/Set-Cookie ; tout autre cookie reste rédigé.

Pour garder le flux de connexion et les identifiants totalement hors des enregistrements, exécutez l’authentification dans un setup project Playwright avec le proxy en mode transparent, persistez le storageState dans un auth-state.json gitignoré et réutilisez-le dans vos tests. Les requêtes enregistrées ne portent alors que les en-têtes de session (rédigés), jamais la connexion.

Voir l’exemple d’app authentifiée pour une configuration fonctionnelle contre un vrai fournisseur d’authentification.

Les en-têtes par défaut s’appliquent toujours (tant que la rédaction est activée) ; vous pouvez en ajouter.

  • --no-redact — désactive la rédaction des secrets (activée par défaut).
  • --redact — active la rédaction des secrets ; nécessaire seulement pour la réactiver quand la configuration met redaction: false.
  • --redact-headers <names> — noms d’en-têtes supplémentaires à rédiger, séparés par des virgules (fusionnés avec les valeurs par défaut).
  • --redact-body <patterns> — motifs regex séparés par des virgules à rédiger des corps de requête/réponse.
  • --allow-headers <names> — noms d’en-têtes séparés par des virgules à exempter de la rédaction (par exemple set-cookie).
  • --allow-cookies <names> — noms de cookies séparés par des virgules à garder non rédigés dans Cookie/Set-Cookie.
Fenêtre de terminal
# Redaction is already on; also redact an API-key header and "sk_live_..." tokens, keep the theme cookie
test-proxy-recorder http://localhost:8000 \
--redact-headers x-api-key \
--redact-body "sk_live_[a-zA-Z0-9]+" \
--allow-cookies theme,locale

En construisant ProxyServer directement :

import { ProxyServer } from 'test-proxy-recorder';
// Passing this object enables redaction; pass `false` (or nothing) to keep it off.
const proxy = new ProxyServer('http://localhost:3000', './recordings', undefined, {
headers: ['x-api-key', 'x-auth'], // extra headers, merged with the defaults
bodyPatterns: [/sk_live_[a-z0-9]+/i], // regexes replaced in request/response bodies
allowHeaders: ['set-cookie'], // never redact these headers
allowCookies: ['theme', 'locale'], // keep these cookies inside Cookie/Set-Cookie
placeholder: '[REDACTED]', // default
});

redactSession(session, config) est aussi exporté si vous voulez rédiger vous-même des enregistrements existants.