30 lines
1019 B
Python
30 lines
1019 B
Python
"""Export-link authorization regression tests."""
|
|
from __future__ import annotations
|
|
|
|
|
|
def _headers(token: str) -> dict[str, str]:
|
|
return {"Authorization": f"Bearer {token}"}
|
|
|
|
|
|
def test_export_link_is_invalid_after_current_role_demotion(client, user_store, login):
|
|
user_store.complete_setup(
|
|
"admin",
|
|
"admin@example.com",
|
|
"admin-ready-password",
|
|
accepted_terms=True,
|
|
accepted_terms_at="2026-08-13T00:00:00Z",
|
|
)
|
|
token = login("admin", "admin-ready-password")["token"]
|
|
link_response = client.get("/api/analytics/export/token", headers=_headers(token))
|
|
assert link_response.status_code == 200, link_response.get_json()
|
|
export_token = link_response.get_json()["token"]
|
|
|
|
user_store.set_role("admin", "admin")
|
|
response = client.get(
|
|
f"/api/analytics/export?token={export_token}",
|
|
headers=_headers(token),
|
|
)
|
|
|
|
assert response.status_code == 403
|
|
assert response.get_json() == {"error": "export link authorization is stale"}
|