fix(tradein/rbac): аноним на admin-префиксе получает единый 404 — существование admin-ручек снаружи не перебирается #3371

Merged
bot-backend merged 3 commits from fix/3360-admin-prefix-anon-404 into main 2026-09-05 20:32:06 +00:00
Showing only changes of commit d5fb675858 - Show all commits

View file

@ -486,7 +486,16 @@ def test_anon_admin_cloak_covers_all_unauthenticated_branches(
assert (db_only.status_code, db_only.json()) == (baseline.status_code, baseline.json()), (
f"db_only без сессии → {db_only.status_code} {db_only.json()}"
)
assert client.get("/api/v1/me").status_code == 401
# Различимость ветки: без заголовка 401 на non-admin пути даёт и db_only, и
# dual — отличается только текст. Сравнение РАВЕНСТВОМ, а не `in`:
# db_only-строка является подстрокой dual-строки ("no authenticated user
# (valid session required)"), и `in` прошёл бы, даже если monkeypatch
# режима тихо не подействовал, т.е. ветка была бы нефальсифицируемой.
me = client.get("/api/v1/me")
assert me.status_code == 401
assert me.json()["detail"] == "valid session required", (
f"ожидалась db_only-ветка, получено {me.json()['detail']!r}"
)
def test_real_app_does_not_redirect_trailing_slash() -> None: