Files
rpa_vision_v3/tests/unit/conftest.py
Dom 549ea0631b 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>
2026-06-08 15:27:06 +02:00

33 lines
1.0 KiB
Python

"""Conftest pour les tests unitaires.
Force le bon chemin agent_v0 (rpa_vision_v3) pour éviter les conflits
avec ~/ai/agent_v0 (standalone).
"""
import os
import sys
from pathlib import Path
# WP-A : par défaut, les tests unitaires tournent avec l'auth dashboard désactivée
# (mode dev/test explicite, fail-closed côté prod). Les tests d'auth dédiés
# (test_dashboard_auth_p0a) surchargent via monkeypatch + reload.
os.environ.setdefault("DASHBOARD_AUTH_DISABLED", "true")
ROOT = str(Path(__file__).resolve().parents[2])
if ROOT in sys.path:
sys.path.remove(ROOT)
sys.path.insert(0, ROOT)
# Si agent_v0 est déjà chargé depuis le mauvais chemin, le remplacer
_agent_mod = sys.modules.get("agent_v0")
if _agent_mod and not getattr(_agent_mod, "__file__", "").startswith(ROOT):
to_remove = [k for k in sys.modules if k == "agent_v0" or k.startswith("agent_v0.")]
for k in to_remove:
del sys.modules[k]
# Pré-importer le bon agent_v0.server_v1
try:
import agent_v0.server_v1 # noqa: F401
except ImportError:
pass