58 lines
2.4 KiB
Python
58 lines
2.4 KiB
Python
"""Fusion ACC-4.4 — panneau de l'agent commun intégré à Flowdeck.
|
|
|
|
Le panneau commun (composant partagé des quatre apps, contrat
|
|
d'injection `dracodev-commons`) est intégré depuis la 7.81.0
|
|
(panneau v3), complété par le mode console (7.82.x) et la version du
|
|
service affichée en mode sidebar (7.83.1, fusion #64). Ces tests
|
|
figent le contrat d'intégration côté Flowdeck :
|
|
|
|
- le gabarit de base charge les assets du panneau et injecte la
|
|
configuration (URL du service d'agents résolue par configuration,
|
|
jamais un nom public codé en dur dans le JS) ;
|
|
- le panneau parle au service d'agents (conversation **commune** :
|
|
même discussion perpétuelle que dans les autres apps) ;
|
|
- les automatisations locales de Flowdeck restent locales (C5) :
|
|
le panneau commun ne remplace pas le moteur d'agent local.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
RACINE = Path(__file__).resolve().parent.parent
|
|
|
|
|
|
def test_gabarit_charge_le_panneau_et_injecte_la_config():
|
|
base = (RACINE / "app/templates/base.html").read_text(encoding="utf-8")
|
|
assert "/static/css/draco-panneau.css" in base
|
|
assert "/static/js/draco-panneau.js" in base
|
|
assert "window.DRACO_PANNEAU_CONFIG" in base
|
|
assert "draco_agent_url()" in base
|
|
|
|
|
|
def test_panneau_parle_au_service_agent_conversation_commune():
|
|
js = (RACINE / "static/js/draco-panneau.js").read_text(encoding="utf-8")
|
|
# Même conversation continue que dans les autres apps : le
|
|
# panneau s'appuie sur l'API du service (contrat commons).
|
|
assert "/api/v1/me" in js
|
|
assert "/api/v1/chat" in js
|
|
assert "/api/v1/conversations" in js
|
|
# La configuration vient de l'hôte ; le seul repli est le nom
|
|
# officiel — aucun nom public d'app en dur dans le composant.
|
|
assert "DRACO_PANNEAU_CONFIG" in js
|
|
for nom in ("flowdeck-dev", "og-dev", "tiktak-dev", "kanbante-dev",
|
|
"agent-dev"):
|
|
assert f"://{nom}." not in js # aucune URL publique -dev codée en dur
|
|
|
|
|
|
def test_assets_panneau_servis(client):
|
|
for chemin in ("/static/js/draco-panneau.js", "/static/css/draco-panneau.css"):
|
|
r = client.get(chemin)
|
|
assert r.status_code == 200, chemin
|
|
|
|
|
|
def test_automatisations_locales_conservées(client):
|
|
# C5 : l'agent local de Flowdeck (automatisations, gouvernance)
|
|
# reste en place à côté du panneau commun.
|
|
r = client.get("/api/v2/agent-approvals", params={"status": "pending"})
|
|
assert r.status_code == 200
|
|
assert "approvals" in r.json()
|