69 lines
2.7 KiB
Python
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()
|