from fastapi.testclient import TestClient

from jarvis_gateway.main import app
from jarvis_gateway.redaction import contains_forbidden_field

FORBIDDEN_SNIPPETS = [
    "db_path",
    "drive" + "_web_url",
    "drive" + "_file_id",
    "local" + "_original_path",
    "amount_chf",
    "cash_value_chf",
    "total_value_chf",
    "portfolio_value_chf",
    "extrahierte" + "_inhalte",
    "raw" + "_json",
    "health" + "_data.db",
    "finance" + ".sqlite3",
]


def test_all_get_responses_are_safe() -> None:
    client = TestClient(app)
    for path in ["/api/healthz", "/api/modules", "/api/overview", "/api/activity", "/api/approvals", "/api/reports", "/api/redaction-policy"]:
        response = client.get(path)
        assert response.status_code == 200, path
        payload = response.json()
        assert not contains_forbidden_field(payload), path
        text = response.text.lower()
        for snippet in FORBIDDEN_SNIPPETS:
            assert snippet not in text, f"{path} contains {snippet}"
