test(e2e): configure CSRF_SECRET for E2E tests
This commit is contained in:
@@ -71,6 +71,20 @@ def base_url():
|
|||||||
port = _trouver_port()
|
port = _trouver_port()
|
||||||
url = f"http://{SERVER_HOST}:{port}"
|
url = f"http://{SERVER_HOST}:{port}"
|
||||||
|
|
||||||
|
# Les tokens CSRF stateless sont signés avec CSRF_SECRET. Sans configuration
|
||||||
|
# locale, getCsrfSecret() génère un secret éphémère par processus, ce qui
|
||||||
|
# rend les tokens invalides d'une requête à l'autre sous `php -S`.
|
||||||
|
# On crée donc une configuration locale temporaire avec un secret fixe.
|
||||||
|
config_local = PROJECT_ROOT / "includes" / "config.local.php"
|
||||||
|
config_local_exists = config_local.exists()
|
||||||
|
if not config_local_exists:
|
||||||
|
config_local.write_text(
|
||||||
|
"<?php\n"
|
||||||
|
"// Configuration temporaire pour les tests E2E.\n"
|
||||||
|
"define('CSRF_SECRET', 'e2e-test-secret-do-not-use-in-prod');\n",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
log = tempfile.NamedTemporaryFile(
|
log = tempfile.NamedTemporaryFile(
|
||||||
mode="w+", prefix="php-e2e-", suffix=".log", delete=False
|
mode="w+", prefix="php-e2e-", suffix=".log", delete=False
|
||||||
)
|
)
|
||||||
@@ -103,6 +117,8 @@ def base_url():
|
|||||||
|
|
||||||
if not pret:
|
if not pret:
|
||||||
proc.terminate()
|
proc.terminate()
|
||||||
|
if not config_local_exists:
|
||||||
|
config_local.unlink(missing_ok=True)
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
f"Le serveur PHP ne répond pas après {STARTUP_TIMEOUT} s"
|
f"Le serveur PHP ne répond pas après {STARTUP_TIMEOUT} s"
|
||||||
)
|
)
|
||||||
@@ -114,6 +130,8 @@ def base_url():
|
|||||||
raise RuntimeError(f"index.php a répondu HTTP {rep.status}")
|
raise RuntimeError(f"index.php a répondu HTTP {rep.status}")
|
||||||
except Exception:
|
except Exception:
|
||||||
proc.terminate()
|
proc.terminate()
|
||||||
|
if not config_local_exists:
|
||||||
|
config_local.unlink(missing_ok=True)
|
||||||
log.seek(0)
|
log.seek(0)
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"Impossible de charger la page d'accueil :\n" + log.read()
|
"Impossible de charger la page d'accueil :\n" + log.read()
|
||||||
@@ -126,6 +144,8 @@ def base_url():
|
|||||||
proc.wait(timeout=10)
|
proc.wait(timeout=10)
|
||||||
except subprocess.TimeoutExpired:
|
except subprocess.TimeoutExpired:
|
||||||
proc.kill()
|
proc.kill()
|
||||||
|
if not config_local_exists:
|
||||||
|
config_local.unlink(missing_ok=True)
|
||||||
log.close()
|
log.close()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user