# retoor 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")