- Freunde (freunde.py, Tabelle friendships): suchen, anfragen, annehmen, ablehnen, entfernen; neue Seite "Freunde" im Menü - Vorratslisten und Kanban-Projekte immer privat: sichtbar für Ersteller und Mitglieder; teilen nur mit Freunden (Admins: mit allen); Kanban-Mitglieder (Tabelle kanban_project_members), Bearbeiter nur aus dem Projekt, ausgetretene Mitglieder verlieren ihre Zuteilung - Artikel: lesen alle; bearbeiten Autor, Mitarbeitende verknüpfter Kanban-Projekte und Admins; verknüpfen nur bearbeitbare Artikel (sonst ließen sich Rechte erschleichen); Board-Liste auf der Artikelseite zeigt nur sichtbare Boards - Administratoren sehen und bearbeiten alles - Reisen: Städte nur von Freunden (Admins: alle); "Reiserouten zeigen" zeichnet die Strecken der Kilometer-Rechnung als Bögen - Migration Schritt 6: bisher gemeinsame Listen und alle Projekte bekommen die vorhandenen Konten als Mitglieder, ohne Ersteller → erster Admin; erste Liste einer neuen Installation gehört dem ersten Konto - Tests: test_freunde.py, test_zugriff.py, bestehende auf Privat-Modell umgestellt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
28 lines
1.5 KiB
Python
28 lines
1.5 KiB
Python
def test_anfrage_annehmen_entfernen(login):
|
|
anna, ben = login("anna"), login("ben")
|
|
assert anna.post(f"/api/freunde/{ben.user['id']}").json()["outgoing"][0]["name"] == "Ben"
|
|
state = ben.get("/api/freunde").json()
|
|
assert [p["name"] for p in state["incoming"]] == ["Anna"] and state["friends"] == []
|
|
assert [p["name"] for p in ben.post(f"/api/freunde/{anna.user['id']}").json()["friends"]] == ["Anna"]
|
|
assert [p["name"] for p in anna.get("/api/freunde").json()["friends"]] == ["Ben"]
|
|
assert ben.delete(f"/api/freunde/{anna.user['id']}").json()["friends"] == []
|
|
assert anna.get("/api/freunde").json()["friends"] == []
|
|
|
|
|
|
def test_eigene_anfrage_nimmt_nicht_selbst_an(login):
|
|
anna, ben = login("anna"), login("ben")
|
|
anna.post(f"/api/freunde/{ben.user['id']}")
|
|
assert anna.post(f"/api/freunde/{ben.user['id']}").json()["friends"] == []
|
|
assert anna.post(f"/api/freunde/{anna.user['id']}").status_code == 400
|
|
assert anna.post("/api/freunde/9999").status_code == 404
|
|
|
|
|
|
def test_suche(login):
|
|
anna, ben = login("anna"), login("ben")
|
|
login("bernd")
|
|
anna.post(f"/api/freunde/{ben.user['id']}")
|
|
res = anna.get("/api/freunde/suche", params={"q": "be"}).json()
|
|
assert [(r["name"], r["status"]) for r in res] == [("Ben", "angefragt"), ("Bernd", None)]
|
|
assert anna.get("/api/freunde/suche", params={"q": "a"}).json() == [] # zu kurz
|
|
assert [r["name"] for r in anna.get("/api/freunde/suche", params={"q": "%"}).json()] == []
|