Files
ad/tests/api/legacy.py
T

69 lines
2.5 KiB
Python

# retoor <retoor@molodetz.nl>
import pytest
from molodetz.routers.legacy import LEGACY_PATHS
REDIRECTS = [
("/rol", "/roll"),
("/standaard", "/standard"),
("/mensen", "/people"),
("/mensen/retoor", "/people/retoor"),
("/binnen", "/join"),
("/voorwaarden", "/terms"),
("/docs/welkom", "/docs/welcome"),
("/docs/schrijven", "/docs/writing"),
("/docs/binnen", "/docs/join"),
("/docs/juridisch", "/docs/legal"),
("/docs/architectuur", "/docs/architecture"),
("/docs/api/inhoud", "/docs/api/content"),
("/docs/api/binnen", "/docs/api/join"),
]
@pytest.mark.parametrize("old,new", REDIRECTS)
def test_old_dutch_paths_redirect_permanently(anon, old, new):
response = anon.get(old)
assert response.status_code == 301, old
assert response.headers["location"] == new
assert anon.get(new).status_code == 200, new
def test_redirect_keeps_query_string(anon):
response = anon.get("/rol?before=2026-01-01")
assert response.status_code == 301
assert response.headers["location"] == "/roll?before=2026-01-01"
def test_old_join_post_keeps_method(anon):
response = anon.post("/binnen", data={"name": "x"})
assert response.status_code == 308
assert response.headers["location"] == "/join"
def test_legacy_paths_are_hidden_from_schema():
from molodetz.main import app
paths = app.openapi()["paths"]
assert not any(old in paths for old in LEGACY_PATHS)
assert "/mensen/{username}" not in paths
def test_old_post_slug_redirects_to_english_slug(anon, admin):
from molodetz.content import translate_seeded_posts
from molodetz.database import db, get_user_by_username, insert_post, update_post_row
author = get_user_by_username("retoor")
row = insert_post(author["uid"], "Af is een eigenschap.", "Een project dat open blijft, is een mening.", "rol", status="published", is_placeholder=True)
try:
assert translate_seeded_posts() >= 1
migrated = db["posts"].find_one(uid=row["uid"])
assert migrated["title"] == "Finished is a feature."
assert migrated["topic"] == "roll"
assert migrated["slug"].startswith("finished-is-a-feature-")
assert "Carried over from the old Molodetz page" in migrated["body"]
response = anon.get(f"/posts/{row['slug']}")
assert response.status_code == 301
assert response.headers["location"] == f"/posts/{migrated['slug']}"
finally:
update_post_row(row["uid"], deleted_at="2026-01-01T00:00:00+00:00", deleted_by="test")