52 lines
2.8 KiB
Python
52 lines
2.8 KiB
Python
# Røgtest af "Del med ukendte" (gæstelinks) med FastAPI TestClient, uden OIDC.
|
|
# Kør i CT151: PORTAL_DATA=/tmp/pg-test/data + env fra /etc/portal.env. Rører ikke prod-data.
|
|
import json, time
|
|
from fastapi.testclient import TestClient
|
|
import main, podcast
|
|
|
|
d = podcast.ROOT / "test"
|
|
(d / "episodes").mkdir(parents=True, exist_ok=True)
|
|
(d / "show.json").write_text(json.dumps({"titel": "Testshow", "beskrivelse": "b"}))
|
|
for slug, kladde in (("e1", False), ("e2", True)):
|
|
(d / "episodes" / f"{slug}.mp3").write_bytes(b"\xff\xfb" + b"\0" * 2000)
|
|
(d / "episodes" / f"{slug}.json").write_text(json.dumps({"titel": slug, "nr": 1, "kladde": kladde}))
|
|
|
|
c = TestClient(main.app, base_url="https://weircon.dk")
|
|
admin = {"username": "agw", "name": "Asger", "groups": [main.config.ADMIN_GROUP, "Familie"]}
|
|
main.current_user = lambda request: admin
|
|
|
|
r = c.post("/admin/podcast/gaest", data={"handling": "ny", "navn": "Jobsamtale X", "dage": "14"}, follow_redirects=False)
|
|
assert r.status_code == 303, r.text
|
|
g = podcast.alle_gaester()[0]; key = g["key"]
|
|
assert 13.9 * 86400 < g["udloeber"] - time.time() < 14.1 * 86400
|
|
r = c.get("/admin/podcast"); assert r.status_code == 200 and "Jobsamtale X" in r.text and key in r.text
|
|
|
|
main.current_user = lambda request: None
|
|
r = c.get(f"/podcast/f/{key}/"); assert r.status_code == 200 and "delt med dig personligt" in r.text, r.status_code
|
|
assert "familiens fælles" not in r.text and "e2.mp3" not in r.text
|
|
assert c.get(f"/podcast/f/{key}/test.xml").status_code == 200
|
|
assert c.get(f"/podcast/f/{key}/test/e1.mp3").status_code == 200
|
|
assert c.get(f"/podcast/f/{key}/test/e2.mp3").status_code == 404, "kladde må ikke kunne hentes"
|
|
assert podcast.gaester()[key]["hentninger"] == 3
|
|
assert not podcast.faelles().get("key"), "gæstelinket må ikke røre familielinket"
|
|
|
|
# udløbet
|
|
gg = podcast.gaester(); gg[key]["udloeber"] = int(time.time()) - 1; podcast._skriv(podcast.GAEST, gg)
|
|
assert c.get(f"/podcast/f/{key}/").status_code == 404
|
|
gg[key]["udloeber"] = int(time.time()) + 3600; podcast._skriv(podcast.GAEST, gg)
|
|
assert c.get(f"/podcast/f/{key}/").status_code == 200
|
|
|
|
# trukket tilbage, slettet
|
|
main.current_user = lambda request: admin
|
|
assert c.post("/admin/podcast/gaest", data={"handling": "tilbagekald", "key": key}, follow_redirects=False).status_code == 303
|
|
assert c.get(f"/podcast/f/{key}/test/e1.mp3").status_code == 404
|
|
assert c.post("/admin/podcast/gaest", data={"handling": "slet", "key": key}, follow_redirects=False).status_code == 303
|
|
assert key not in podcast.gaester()
|
|
|
|
# "aldrig" + familielinket virker stadig ved siden af
|
|
c.post("/admin/podcast/gaest", data={"handling": "ny", "navn": "Uden udløb", "dage": "0"})
|
|
assert podcast.alle_gaester()[0]["udloeber"] is None
|
|
fk = podcast.faelles_skift()
|
|
r = c.get(f"/podcast/f/{fk}/"); assert r.status_code == 200 and "familiens fælles" in r.text
|
|
print("OK")
|