@@ -233,6 +233,9 @@ def test_default_sdk_headers_present() -> None:
233233 assert "X-Aleo-SDK-Version" in req_headers
234234 assert "X-Aleo-environment" in req_headers
235235 assert req_headers ["X-Aleo-environment" ] == "python"
236+ # The standard User-Agent identifies the SDK (overriding requests' default).
237+ from aleo ._client_common import package_version
238+ assert req_headers ["User-Agent" ] == f"aleo-python-sdk/{ package_version ()} "
236239
237240
238241@resp_lib .activate
@@ -244,6 +247,11 @@ def test_per_method_header() -> None:
244247 assert req_headers .get ("X-ALEO-METHOD" ) == "getBlock"
245248
246249
250+ def test_user_agent_value () -> None :
251+ from aleo ._client_common import package_version , user_agent
252+ assert user_agent () == f"aleo-python-sdk/{ package_version ()} "
253+
254+
247255def test_custom_transport_callable_used_for_requests () -> None :
248256 """A callable transport is invoked for every HTTP request."""
249257 import requests as _requests
@@ -273,6 +281,30 @@ def test_custom_transport_suppresses_sdk_headers() -> None:
273281 req_headers = resp_lib .calls [0 ].request .headers
274282 assert "X-Aleo-SDK-Version" not in req_headers
275283 assert "X-ALEO-METHOD" not in req_headers
284+ # UA is suppressed under a custom transport: the SDK does not set its own
285+ # (requests' own default python-requests/... may still be present).
286+ assert not req_headers .get ("User-Agent" , "" ).startswith ("aleo-python-sdk/" )
287+
288+
289+ def test_custom_transport_preserves_user_supplied_user_agent () -> None :
290+ """Under a custom transport the caller owns headers — a User-Agent they set
291+ is passed through untouched (not stripped as an SDK header)."""
292+ import requests as _requests
293+
294+ captured : dict [str , Any ] = {}
295+
296+ def my_transport (method : str , url : str , ** kwargs : Any ) -> _requests .Response :
297+ captured ["headers" ] = dict (kwargs .get ("headers" ) or {})
298+ r = _requests .Response ()
299+ r .status_code = 200
300+ r ._content = b"{}"
301+ return r
302+
303+ c = AleoNetworkClient (
304+ BASE , network = NET , transport = my_transport , headers = {"User-Agent" : "myapp/1.0" }
305+ )
306+ c .get_latest_block ()
307+ assert captured ["headers" ].get ("User-Agent" ) == "myapp/1.0"
276308
277309
278310@resp_lib .activate
0 commit comments