Drop the Contributing and internals section, Architecture, Frontend, and dp-* component pages from the docs registry, prose files, nav, and legacy redirect target. Guard with tests that fail if they return.
69 lines
2.5 KiB
Python
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/welcome"),
|
|
("/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")
|