Files
horror/backend/tests/test_users.py
2026-09-30 15:15:00 +02:00

69 lines
2.7 KiB
Python

"""Besitz: Einträge hängen am Namen, ohne Namen an der Sitzung."""
def test_gleicher_name_in_anderem_browser_sieht_eigene_eintraege(
client, client2, anmelden, film
):
anmelden(client, "Anna")
vorschlag = client.post("/api/suggestions", json={"movie_id": film(1)}).json()
client.post("/api/wishlist", json={"movie_id": film(2)})
client.post("/api/features", json={"text": "Dunkles Design"})
# Anna am zweiten Gerät
anmelden(client2, "Anna")
assert client2.get("/api/suggestions").json()["mine"] == vorschlag["id"]
assert client2.get("/api/wishlist").json()[0]["mine"] is True
assert client2.get("/api/features").json()[0]["mine"] is True
# Ben nicht
anmelden(client2, "Ben")
assert client2.get("/api/suggestions").json()["mine"] is None
assert client2.get("/api/wishlist").json()[0]["mine"] is False
assert client2.get("/api/features").json()[0]["mine"] is False
def test_namenswechsel_laesst_alte_eintraege_beim_alten_namen(client, anmelden, film):
anmelden(client, "Anna")
als_anna = client.post("/api/suggestions", json={"movie_id": film(1)}).json()
assert als_anna["name"] == "Anna"
anmelden(client, "Ben")
assert client.get("/api/suggestions").json()["mine"] is None
# Bens Vorschlag ersetzt Annas nicht — einer je Name, nicht je Browser
als_ben = client.post("/api/suggestions", json={"movie_id": film(2)}).json()
liste = client.get("/api/suggestions").json()
assert [e["name"] for e in liste["items"]] == ["Anna", "Ben"]
assert liste["mine"] == als_ben["id"]
anmelden(client, "Anna")
assert client.get("/api/suggestions").json()["mine"] == als_anna["id"]
def test_abwaehlen_macht_wieder_zum_zuschauer(client, film):
client.post("/api/suggestions", json={"movie_id": film(1)})
client.post("/api/users/waehlen", json={"user_id": None})
assert client.get("/api/users").json()["mine"] is None
# Lesen geht weiter, Schreiben nicht mehr
assert client.get("/api/suggestions").json()["mine"] is None
assert client.post("/api/suggestions", json={"movie_id": film(2)}).status_code == 403
def test_online_ist_wer_eine_seite_offen_hat(client, anmelden):
from app import events
anmelden(client, "Anna")
sid = client.cookies.get("filmabend_sid")
ich = client.get("/api/users").json()["mine"]["id"]
def online():
return {u["id"]: u["online"] for u in client.get("/api/users").json()["items"]}
assert online()[ich] is False
queue = events.anmelden(sid)
assert online()[ich] is True
# Namenswechsel im selben Browser: der alte Name ist offline
anmelden(client, "Ben")
assert online()[ich] is False
events.abmelden(queue)
assert True not in online().values()