Admin: eigenen Einladungslink festlegen
Statt des zufälligen Links kann der Admin einen sprechenden Link wählen (z. B. /z/sommerfest2026, mind. 6 Zeichen: A–Z, a–z, 0–9, - und _). Alte Zugänge werden dabei ungültig; der QR-Code passt sich an. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -211,6 +211,23 @@ def test_gastzugang_und_qr(client):
|
||||
assert png.content[:8] == b"\x89PNG\r\n\x1a\n" and "attachment" in png.headers["content-disposition"]
|
||||
|
||||
|
||||
def test_eigener_einladungslink(client):
|
||||
h = anmelden(client)
|
||||
assert client.post("/admin/api/access/token", json={"token": "sommerfest2026"}, headers=h).status_code == 200
|
||||
z = client.get("/admin/api/access").json()
|
||||
assert z["link"] == "https://musik.example.de/z/sommerfest2026" and z["token"] == "sommerfest2026"
|
||||
assert z["base"] == "https://musik.example.de/z/"
|
||||
for falsch in ("kurz", "mit leerzeichen", "../../etc", "ümlaut1", "x" * 65, ""):
|
||||
assert client.post("/admin/api/access/token", json={"token": falsch}, headers=h).status_code == 422, falsch
|
||||
assert client.post("/admin/api/access/token", json={"token": "sommerfest2026"}).status_code == 403 # ohne CSRF
|
||||
# Gäste kommen mit dem eigenen Link hinein, mit dem alten zufälligen nicht mehr
|
||||
client.post("/admin/api/access", json={"enabled": True}, headers=h)
|
||||
gast = TestClient(client.app)
|
||||
assert gast.get("/z/sommerfest2026", follow_redirects=False).status_code == 303
|
||||
assert gast.get("/api/status").status_code == 200
|
||||
assert gast.get("/z/Sommerfest2026", follow_redirects=False).status_code == 403 # Groß/klein zählt
|
||||
|
||||
|
||||
def test_verlauf(client):
|
||||
anmelden(client)
|
||||
w = wunsch(k="A")
|
||||
|
||||
Reference in New Issue
Block a user