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/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")
|