@@ -394,6 +394,22 @@ def failing_get(*args, **kwargs):
394394 transport .close ()
395395
396396
397+ def test_sync_transport_wraps_unexpected_errors_with_sentinel_url_fallback ():
398+ transport = SyncTransport (api_key = "test-key" )
399+ original_get = transport .client .get
400+
401+ def failing_get (* args , ** kwargs ):
402+ raise RuntimeError ("boom" )
403+
404+ transport .client .get = failing_get # type: ignore[assignment]
405+ try :
406+ with pytest .raises (HyperbrowserError , match = "Request GET unknown URL failed" ):
407+ transport .get ("null" )
408+ finally :
409+ transport .client .get = original_get # type: ignore[assignment]
410+ transport .close ()
411+
412+
397413def test_async_transport_put_wraps_unexpected_errors_with_url_context ():
398414 async def run () -> None :
399415 transport = AsyncTransport (api_key = "test-key" )
@@ -458,6 +474,27 @@ async def failing_put(*args, **kwargs):
458474 asyncio .run (run ())
459475
460476
477+ def test_async_transport_wraps_unexpected_errors_with_sentinel_url_fallback ():
478+ async def run () -> None :
479+ transport = AsyncTransport (api_key = "test-key" )
480+ original_put = transport .client .put
481+
482+ async def failing_put (* args , ** kwargs ):
483+ raise RuntimeError ("boom" )
484+
485+ transport .client .put = failing_put # type: ignore[assignment]
486+ try :
487+ with pytest .raises (
488+ HyperbrowserError , match = "Request PUT unknown URL failed"
489+ ):
490+ await transport .put ("none" )
491+ finally :
492+ transport .client .put = original_put # type: ignore[assignment]
493+ await transport .close ()
494+
495+ asyncio .run (run ())
496+
497+
461498def test_sync_transport_request_error_without_request_uses_fallback_url ():
462499 transport = SyncTransport (api_key = "test-key" )
463500 original_get = transport .client .get
@@ -526,6 +563,22 @@ def failing_get(*args, **kwargs):
526563 transport .close ()
527564
528565
566+ def test_sync_transport_request_error_without_request_uses_unknown_url_for_sentinel_input ():
567+ transport = SyncTransport (api_key = "test-key" )
568+ original_get = transport .client .get
569+
570+ def failing_get (* args , ** kwargs ):
571+ raise httpx .RequestError ("network down" )
572+
573+ transport .client .get = failing_get # type: ignore[assignment]
574+ try :
575+ with pytest .raises (HyperbrowserError , match = "Request GET unknown URL failed" ):
576+ transport .get ("undefined" )
577+ finally :
578+ transport .client .get = original_get # type: ignore[assignment]
579+ transport .close ()
580+
581+
529582def test_async_transport_request_error_without_request_uses_fallback_url ():
530583 async def run () -> None :
531584 transport = AsyncTransport (api_key = "test-key" )
@@ -610,3 +663,24 @@ async def failing_delete(*args, **kwargs):
610663 await transport .close ()
611664
612665 asyncio .run (run ())
666+
667+
668+ def test_async_transport_request_error_without_request_uses_unknown_url_for_sentinel_input ():
669+ async def run () -> None :
670+ transport = AsyncTransport (api_key = "test-key" )
671+ original_delete = transport .client .delete
672+
673+ async def failing_delete (* args , ** kwargs ):
674+ raise httpx .RequestError ("network down" )
675+
676+ transport .client .delete = failing_delete # type: ignore[assignment]
677+ try :
678+ with pytest .raises (
679+ HyperbrowserError , match = "Request DELETE unknown URL failed"
680+ ):
681+ await transport .delete ("nan" )
682+ finally :
683+ transport .client .delete = original_delete # type: ignore[assignment]
684+ await transport .close ()
685+
686+ asyncio .run (run ())
0 commit comments