"""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()