test(rbac): сделать db_only-ветку anon-cloak фальсифицируемой
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m1s
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m1s
Ассерт `/api/v1/me → 401` проходил в обоих мирах: если monkeypatch auth_mode тихо не подействует, запрос без заголовка уходит в ветку «нет заголовка» и даёт тот же 401 (и тот же 404 на admin-пути). Теперь сверяется detail РАВЕНСТВОМ со строкой db_only-ветки; `in` не годится — 'valid session required' является подстрокой dual-текста. Мутация (monkeypatch режима закомментирован) даёт красный: assert 'no authenticated user (valid session required)' == 'valid session required'
This commit is contained in:
parent
990a59e469
commit
d5fb675858
1 changed files with 10 additions and 1 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue