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>
45 lines
2.0 KiB
Python
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"
|