fix(wp-a): dashboard fail-closed sans mot de passe par défaut

Le dashboard refuse de démarrer si DASHBOARD_PASSWORD absent ET auth non
explicitement désactivée (DASHBOARD_AUTH_DISABLED). Supprime le mot de passe
par défaut hardcodé exploitable.

- web_dashboard/app.py : _require_dashboard_password() fail-closed (lève en prod
  sans secret ; mode dev/test = DASHBOARD_AUTH_DISABLED=true)
- tests/unit/conftest.py : DASHBOARD_AUTH_DISABLED=true par défaut pour les tests
- tests/unit/test_dashboard_failclosed_wpa.py : 5 tests (fail-closed, anti-régression défaut)
- tests/unit/test_dashboard_auth_p0a.py : fixture _restore_module restaure un état neutre sûr

48 tests dashboard verts (WP-A + non-régression auth/routes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-06-08 15:27:06 +02:00
parent 0e215da842
commit 549ea0631b
4 changed files with 66 additions and 12 deletions

View File

@@ -153,7 +153,9 @@ def _restore_module(monkeypatch):
"""Recharge web_dashboard.app après chaque test pour que les autres
tests (TestDashboardRoutes sans auth explicite) continuent de passer."""
yield
monkeypatch.delenv("DASHBOARD_AUTH_DISABLED", raising=False)
# WP-A : restaurer en mode auth désactivée (état neutre sûr) plutôt que sans secret,
# sinon le reload tombe sur le fail-closed du dashboard.
monkeypatch.setenv("DASHBOARD_AUTH_DISABLED", "true")
monkeypatch.delenv("DASHBOARD_USER", raising=False)
monkeypatch.delenv("DASHBOARD_PASSWORD", raising=False)
if "web_dashboard.app" in sys.modules: