1from __future__ import annotations23import httpx4import pytest56from findata_core.redact import redact7from findata_market_firstrate.client import FRDClient, FRDError8from tests.conftest import TEST_USERID91011def test_redact_query_params_and_values():12 s = f"GET https://firstratedata.com/api/last_update?type=stock&userid={TEST_USERID} failed; api_key=abc"13 out = redact(s, [TEST_USERID])14 assert TEST_USERID not in out and "api_key=<REDACTED>" in out and "userid=<REDACTED>" in out151617def test_client_never_leaks_userid_in_errors(vendor):18 c = FRDClient(TEST_USERID, min_interval_s=0)19 assert TEST_USERID not in c.sanitized_url("last_update", {"type": "stock"})20 with pytest.raises(FRDError) as ei:21 c._get_text("does_not_exist", {"type": "stock"})22 assert TEST_USERID not in str(ei.value)232425def test_settings_repr_hides_secrets():26 from findata_core.config import get_settings27 s = get_settings()28 assert TEST_USERID not in repr(s) and TEST_USERID not in str(s.model_dump())29 assert TEST_USERID in s.secret_values()30