110 lines
4.2 KiB
Python
110 lines
4.2 KiB
Python
"""Barre commune v0.2.0 (phase 3 ShaarIt) — re-vendange 0.45.6.
|
|
|
|
- CSS/JS vendangés VERBATIM depuis dracodev-commons @70c837a
|
|
(ui/barre-apps/barre-apps.css / .js) ; logo shaarit.svg idem.
|
|
- GARDE data-theme (changement de comportement visible) : avant
|
|
la v0.2.0, le CSS vendangé appliquait le sombre système dès
|
|
``prefers-color-scheme: dark``, même avec un thème clair
|
|
explicite (html[data-theme="light"]) ; la v0.2.0 conditionne
|
|
les deux blocs à ``html:not([data-theme])``.
|
|
- Onglet ShaarIt : présent dans le rendu, APRÈS Kanbante et
|
|
AVANT l'agent, URL résolue par le même mécanisme que les
|
|
autres apps (explicite DRACO_SHAARIT_URL > hôte de la
|
|
requête > dérivation par l'agent > défaut officiel).
|
|
"""
|
|
import hashlib
|
|
from pathlib import Path
|
|
|
|
R = Path(__file__).resolve().parents[1]
|
|
|
|
SHA256_CSS_V020 = "abc0c3b2a282566013bd121b0c46b133700f20be78cf44128bebdf19b7e05fab"
|
|
SHA256_JS_V020 = "24efe399823eed21add535c081ea153ae97afe128744aed9b628cf855e6b50e1"
|
|
SHA256_LOGO_SHAARIT = "faf0c8a17e7cb82d0884f598eadf2c4fee7a603bfdc3a2ecfdac1e750316db34"
|
|
|
|
_ENV_BARRE = (
|
|
"DRACO_SSO_URL", "DRACO_FLOWDECK_URL", "DRACO_TIKTAK_URL",
|
|
"DRACO_SHAARIT_URL", "KANBANTE_PUBLIC_URL", "AGENT_URL",
|
|
"AGENT_EVENEMENTS_URL",
|
|
)
|
|
|
|
|
|
def _sha256(chemin):
|
|
return hashlib.sha256((R / chemin).read_bytes()).hexdigest()
|
|
|
|
|
|
def _nettoyer(monkeypatch):
|
|
for nom in _ENV_BARRE:
|
|
monkeypatch.delenv(nom, raising=False)
|
|
|
|
|
|
def test_barre_css_js_verbatim_commons_v020():
|
|
assert _sha256("static/css/draco-barre.css") == SHA256_CSS_V020
|
|
assert _sha256("static/js/draco-barre.js") == SHA256_JS_V020
|
|
|
|
|
|
def test_logo_shaarit_verbatim():
|
|
assert _sha256("static/img/logos/shaarit.svg") == SHA256_LOGO_SHAARIT
|
|
|
|
|
|
def test_garde_data_theme_apportee_par_la_v020():
|
|
css = (R / "static/css/draco-barre.css").read_text(encoding="utf-8")
|
|
# Les deux blocs système sont gardés ; le sombre forcé reste.
|
|
assert "html:not([data-theme]) .draco-bar" in css
|
|
assert "html:not([data-theme]) .draco-bar .draco-brand-mark img" in css
|
|
assert '[data-theme="dark"] .draco-bar' in css
|
|
assert "@media (prefers-color-scheme: dark) {\n .draco-bar" not in css
|
|
|
|
|
|
def test_url_shaarit_defaut_officiel(monkeypatch):
|
|
from app.config import _env_settings, resoudre_urls_draco
|
|
|
|
_nettoyer(monkeypatch)
|
|
assert _env_settings().shaarit_url == "https://shaarit.dracodev.net"
|
|
assert resoudre_urls_draco().shaarit_url == "https://shaarit.dracodev.net"
|
|
|
|
|
|
def test_url_shaarit_derivee_du_seul_agent_evenements(monkeypatch):
|
|
from app.config import _env_settings
|
|
|
|
_nettoyer(monkeypatch)
|
|
monkeypatch.setenv(
|
|
"AGENT_EVENEMENTS_URL",
|
|
"https://agent-dev.dracodev.net/api/v1/evenements",
|
|
)
|
|
assert _env_settings().shaarit_url == "https://shaarit-dev.dracodev.net"
|
|
|
|
|
|
def test_url_shaarit_explicite_prioritaire(monkeypatch):
|
|
from app.config import _env_settings
|
|
|
|
_nettoyer(monkeypatch)
|
|
monkeypatch.setenv(
|
|
"AGENT_EVENEMENTS_URL",
|
|
"https://agent-dev.dracodev.net/api/v1/evenements",
|
|
)
|
|
monkeypatch.setenv("DRACO_SHAARIT_URL", "https://signets.example.test")
|
|
assert _env_settings().shaarit_url == "https://signets.example.test"
|
|
|
|
|
|
def test_url_shaarit_par_hote_de_requete(monkeypatch):
|
|
from app.config import resoudre_urls_draco, suffixe_environnement_requete
|
|
|
|
_nettoyer(monkeypatch)
|
|
assert suffixe_environnement_requete("shaarit-dev.dracodev.net") == "-dev"
|
|
urls = resoudre_urls_draco("kanbante-dev.dracodev.net")
|
|
assert urls.shaarit_url == "https://shaarit-dev.dracodev.net"
|
|
urls = resoudre_urls_draco("kanbante.dracodev.net")
|
|
assert urls.shaarit_url == "https://shaarit.dracodev.net"
|
|
|
|
|
|
def test_onglet_shaarit_dans_le_rendu(client):
|
|
r = client.get("/")
|
|
assert r.status_code == 200
|
|
assert 'data-app="shaarit"' in r.text
|
|
assert "https://shaarit.dracodev.net/" in r.text
|
|
assert "/static/img/logos/shaarit.svg" in r.text
|
|
# Ordre : Kanbante < ShaarIt < Console Spark (agent).
|
|
assert r.text.index('data-app="kanbante"') < r.text.index('data-app="shaarit"')
|
|
assert r.text.index('data-app="shaarit"') < r.text.index('data-app="agent"')
|
|
assert client.get("/static/img/logos/shaarit.svg").status_code == 200
|