Files
api-python-001/tests/test_web.py
T
hcornet 1121efecd5
build / build (push) Successful in 57s
add site web
2026-09-21 18:27:03 +02:00

52 lines
1.8 KiB
Python

from tests.conftest import ADMIN
def test_home(seeded):
r = seeded.get("/")
assert r.status_code == 200
assert "text/html" in r.headers["content-type"]
assert "script-src 'none'" in r.headers["content-security-policy"]
assert ">3</div>Characters" in r.text
def test_characters_list_and_filters(seeded):
r = seeded.get("/characters?gender=Female")
assert "Summer Smith" in r.text
assert "Rick Sanchez" not in r.text
assert "Aucun résultat" in seeded.get("/characters?name=zzz").text
def test_detail_pages_link_objects(seeded):
rick = seeded.get("/characters/1").text
assert 'href="/locations/3"' in rick
assert 'href="/episodes/2"' in rick
citadel = seeded.get("/locations/3").text
assert "Morty Smith" in citadel
pilot = seeded.get("/episodes/1").text
assert "Rick Sanchez" in pilot and "Morty Smith" in pilot
def test_pagination_links(client):
for i in range(1, 26):
client.post("/api/location", json={"name": f"Planet {i}"})
page1 = client.get("/locations?name=planet").text
assert "page=2" in page1 and "Page 1 / 2" in page1
def test_html_404_but_json_for_api(seeded):
r = seeded.get("/characters/999")
assert r.status_code == 404 and "There is nothing here" in r.text
assert seeded.get("/nowhere").headers["content-type"].startswith("text/html")
assert seeded.get("/api/nowhere").json() == {"error": "There is nothing here"}
def test_user_content_is_escaped(seeded):
seeded.post(
"/api/character",
json={"id": 50, "name": "<script>alert(1)</script>", "status": "Alive", "gender": "Male"},
)
page = seeded.get("/characters/50").text
assert "<script>alert(1)</script>" not in page
assert "&lt;script&gt;" in page
assert seeded.delete("/api/character/50", headers=ADMIN).status_code == 204