from __future__ import annotations

from jarvis_gateway.adapters.finance_sanitizer import assert_no_sensitive_finance_output, sanitize_finance_payload


def test_dirty_finance_response_is_redacted_after_contract_validation() -> None:
    snapshot = sanitize_finance_payload(
        {
            "overview": {
                "amount_chf": 999.99,
                "portfolio_value_chf": 111111,
                "accounts": [{"name": "Private Account", "saldo": 50}],
                "transactions": [{"text": "Secret shop", "expense": 20}],
                "runtime_path": "/home/agent/projects/CryptoTradingBot/finance.sqlite3",
                "api_key": "abc",
            },
            "provider": {"connected": False},
        },
        legacy_dashboard_url=None,
    )
    payload = snapshot.model_dump(mode="json")
    assert_no_sensitive_finance_output(payload)
    text = str(payload).lower()
    for forbidden in ["999.99", "portfolio", "private account", "secret shop", "/home/agent", "api_key", "saldo", "expense"]:
        assert forbidden not in text
