"""Garde-fou : un secret JWT par défaut/vide/trop court ne doit jamais tourner en production (n'importe qui pourrait forger un jeton, y compris pour un compte COORDINATION) — voir `app/config.py:check_production_secrets`.""" import pytest from pydantic import ValidationError from app.config import Settings _OK_SECRET = "x" * 32 def test_dev_secret_refused_in_production(): with pytest.raises(ValidationError): Settings( environment="production", jwt_secret="dev-insecure-secret-change-me-please-32b", ) def test_empty_secret_refused_in_production(): with pytest.raises(ValidationError): Settings(environment="production", jwt_secret="") def test_short_secret_refused_in_production(): with pytest.raises(ValidationError): Settings(environment="production", jwt_secret="trop-court") def test_proper_secret_accepted_in_production(): settings = Settings(environment="production", jwt_secret=_OK_SECRET) assert settings.jwt_secret == _OK_SECRET def test_dev_secret_allowed_outside_production(): # Confort de dev : le défaut versionné ne doit pas empêcher de démarrer # en local ou en CI. settings = Settings(environment="development") assert settings.is_production is False