Files
rpa_vision_v3/tests/test_dashboard_server_url.py
Dom 1d6efdb1b7 feat(dashboard): enrôlement lit l'adresse serveur depuis system_config.json
Câble l'éditeur adresses/ports du dashboard (services.streaming) vers le
RPA_SERVER_URL généré pour chaque agent Léa. Priorité config > env > défaut ;
host loopback/vide = non configuré (fallback env → pas de régression).
Permet de changer l'IP serveur (labo .45 → clinique .178) depuis l'UI sans
toucher l'env ni le code. +3 tests TDD.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 12:07:27 +02:00

45 lines
2.0 KiB
Python

"""TDD — résolution de l'URL serveur d'enrôlement depuis system_config.json.
Câble l'éditeur adresses/ports du dashboard (`services.streaming`) vers le
`RPA_SERVER_URL` généré pour chaque agent Léa.
Priorité : config (`system_config.json`) > variable d'env > défaut.
Un host loopback/vide dans la config = « non configuré » → fallback env, pour
ne PAS régresser le déploiement actuel où l'URL vient de l'environnement.
"""
import os
# L'import du dashboard est fail-closed sur l'auth → escape dev/test documenté.
os.environ.setdefault("DASHBOARD_AUTH_DISABLED", "true")
from web_dashboard import app as dash # noqa: E402
def test_resolve_url_from_config_streaming_host(monkeypatch):
"""La config (host streaming édité dans l'UI) prime, même si l'env existe."""
monkeypatch.setattr(
dash, "load_system_config",
lambda: {"services": {"streaming": {"host": "192.168.1.178", "port": 5005}}},
)
monkeypatch.setenv("RPA_SERVER_URL", "http://192.168.1.45:5005/api/v1")
assert dash._resolve_public_server_url() == "http://192.168.1.178:5005/api/v1"
def test_resolve_url_loopback_in_config_falls_back_to_env(monkeypatch):
"""host=localhost dans la config = non configuré → on garde l'env (pas de régression)."""
monkeypatch.setattr(
dash, "load_system_config",
lambda: {"services": {"streaming": {"host": "localhost", "port": 5005}}},
)
monkeypatch.delenv("RPA_PUBLIC_URL", raising=False)
monkeypatch.setenv("RPA_SERVER_URL", "http://192.168.1.45:5005/api/v1")
assert dash._resolve_public_server_url() == "http://192.168.1.45:5005/api/v1"
def test_resolve_url_no_config_uses_env(monkeypatch):
"""Aucune section streaming → fallback env, normalisé en /api/v1."""
monkeypatch.setattr(dash, "load_system_config", lambda: {"services": {}})
monkeypatch.delenv("RPA_PUBLIC_URL", raising=False)
monkeypatch.setenv("RPA_SERVER_URL", "http://10.0.0.5:5005/api/v1")
assert dash._resolve_public_server_url() == "http://10.0.0.5:5005/api/v1"