This repository has been archived on 2026-10-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
recoll-modern/tests/api/test_errors.py
T

38 lines
1.3 KiB
Python

from typing import cast
import pytest
from fastapi import FastAPI
from fastapi.testclient import TestClient
def test_error_envelope(authenticated: tuple[TestClient, str]) -> None:
client, _ = authenticated
response = client.get("/collections/cffffffffff")
assert response.status_code == 404
assert response.json() == {"error": {
"code": "collection_not_found", "message": "Collection was not found", "details": {}
}}
def test_unknown_route_uses_error_envelope(app_client: TestClient) -> None:
response = app_client.get("/no-such-route")
assert response.status_code == 404
assert response.json()["error"]["code"] == "path_not_found"
def test_unexpected_error_has_request_id(
app_client: TestClient, monkeypatch: pytest.MonkeyPatch
) -> None:
def fail() -> None:
raise RuntimeError("private filesystem path")
app = cast(FastAPI, app_client.app)
monkeypatch.setattr(app.state.engine, "health", fail)
with TestClient(
app_client.app, base_url="https://testserver", raise_server_exceptions=False
) as client:
response = client.get("/health")
assert response.status_code == 500
assert response.headers["X-Request-ID"] == response.json()["error"]["details"]["request_id"]
assert "private" not in response.text