- news-melden.sh verschiebt Text- und Sprechfassung nach dem Versand nach *.gesendet.*. Hermes' write_file ueberschreibt keine vorhandene Datei; der liegengebliebene Bericht vom Vortag liess jeden Morgenlauf 4 von 5 Schreibversuchen scheitern. Ein zweiter Aufruf desselben Laufs erkennt den schon verschickten Bericht weiterhin. - hermes_ui-Proxy: Seit Hermes v0.21 leitet das Dashboard auf /login um und die Anmeldeseite schickt an /auth/password-login — beides ohne /hermes-ui-Praefix. Der Knopf „Hermes-GUI oeffnen“ landete deshalb auf MC2s „Diese Seite gibt es nicht“. Umleitungen und Anmelde-Pfade werden jetzt umgeschrieben, mehrere Set-Cookie bleiben. - Tests fuer die Pfad-Umschreibung (12 Backend-Tests gesamt). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
1.5 KiB
Python
34 lines
1.5 KiB
Python
"""Tests für die Pfad-Umschreibung des Hermes-Dashboard-Proxys (Anmeldung seit Hermes v0.21)."""
|
|
|
|
from routers import hermes_ui
|
|
|
|
|
|
def test_umleitung_auf_login_bekommt_praefix():
|
|
assert hermes_ui.praefixiere_ort("/login?next=%2F") == "/hermes-ui/login?next=%2F"
|
|
assert hermes_ui.praefixiere_ort("/") == "/hermes-ui/"
|
|
|
|
|
|
def test_fremde_oder_schon_praefixierte_ziele_bleiben():
|
|
assert hermes_ui.praefixiere_ort("/hermes-ui/sessions") == "/hermes-ui/sessions"
|
|
assert hermes_ui.praefixiere_ort("https://example.org/x") == "https://example.org/x"
|
|
assert hermes_ui.praefixiere_ort("//evil.example/x") == "//evil.example/x"
|
|
|
|
|
|
def test_anmeldeseite_schickt_an_praefixierten_pfad():
|
|
html = (b'<html><head><title>Login</title></head><body>'
|
|
b'<form action="/auth/password-login" method="post"></form>'
|
|
b'<script>fetch("/auth/password-login",{method:"POST"});location.href="/login?x=1"</script>'
|
|
b'</body></html>')
|
|
neu = hermes_ui.praefixiere_html(html)
|
|
assert b'action="/hermes-ui/auth/password-login"' in neu
|
|
assert b'fetch("/hermes-ui/auth/password-login"' in neu
|
|
assert b'"/hermes-ui/login?x=1"' in neu
|
|
assert b'window.__HERMES_BASE_PATH__="/hermes-ui"' in neu
|
|
|
|
|
|
def test_andere_absolute_pfade_bleiben_unberuehrt():
|
|
html = b'<head></head><a href="/assets/x.js">x</a><a href="/authors">y</a>'
|
|
neu = hermes_ui.praefixiere_html(html)
|
|
assert b'href="/assets/x.js"' in neu
|
|
assert b'href="/authors"' in neu
|