1from __future__ import annotations23import pytest4from findata_core.redact import redact5from findata_market_firstrate.client import FRDClient, FRDError67from tests.conftest import TEST_USERID8910def test_redact_query_params_and_values():11 s = f"GET https://firstratedata.com/api/last_update?type=stock&userid={TEST_USERID} failed; api_key=abc"12 out = redact(s, [TEST_USERID])13 assert TEST_USERID not in out and "api_key=<REDACTED>" in out and "userid=<REDACTED>" in out141516def test_client_never_leaks_userid_in_errors(vendor):17 c = FRDClient(TEST_USERID, min_interval_s=0)18 assert TEST_USERID not in c.sanitized_url("last_update", {"type": "stock"})19 with pytest.raises(FRDError) as ei:20 c._get_text("does_not_exist", {"type": "stock"})21 assert TEST_USERID not in str(ei.value)222324def test_settings_repr_hides_secrets():25 from findata_core.config import get_settings26 s = get_settings()27 assert TEST_USERID not in repr(s) and TEST_USERID not in str(s.model_dump())28 assert TEST_USERID in s.secret_values()29