from __future__ import annotations import pytest from findata_core.redact import redact from findata_market_firstrate.client import FRDClient, FRDError from tests.conftest import TEST_USERID def test_redact_query_params_and_values(): s = f"GET https://firstratedata.com/api/last_update?type=stock&userid={TEST_USERID} failed; api_key=abc" out = redact(s, [TEST_USERID]) assert TEST_USERID not in out and "api_key=" in out and "userid=" in out def test_client_never_leaks_userid_in_errors(vendor): c = FRDClient(TEST_USERID, min_interval_s=0) assert TEST_USERID not in c.sanitized_url("last_update", {"type": "stock"}) with pytest.raises(FRDError) as ei: c._get_text("does_not_exist", {"type": "stock"}) assert TEST_USERID not in str(ei.value) def test_settings_repr_hides_secrets(): from findata_core.config import get_settings s = get_settings() assert TEST_USERID not in repr(s) and TEST_USERID not in str(s.model_dump()) assert TEST_USERID in s.secret_values()