@@ -106,6 +106,22 @@ def json(self):
106106 return {}
107107
108108
109+ class _IntegerSubclassStatusNoContentResponse :
110+ content = b""
111+ text = ""
112+
113+ class _StatusCode (int ):
114+ pass
115+
116+ status_code = _StatusCode (200 )
117+
118+ def raise_for_status (self ) -> None :
119+ return None
120+
121+ def json (self ):
122+ return {}
123+
124+
109125class _BrokenStatusCodeHttpErrorResponse :
110126 content = b""
111127 text = "status error"
@@ -231,6 +247,19 @@ def test_sync_handle_response_with_non_integer_status_raises_hyperbrowser_error(
231247 transport .close ()
232248
233249
250+ def test_sync_handle_response_with_integer_subclass_status_raises_hyperbrowser_error ():
251+ transport = SyncTransport (api_key = "test-key" )
252+ try :
253+ with pytest .raises (
254+ HyperbrowserError , match = "Failed to process response status code"
255+ ):
256+ transport ._handle_response (
257+ _IntegerSubclassStatusNoContentResponse () # type: ignore[arg-type]
258+ )
259+ finally :
260+ transport .close ()
261+
262+
234263def test_sync_handle_response_with_request_error_includes_method_and_url ():
235264 transport = SyncTransport (api_key = "test-key" )
236265 try :
@@ -420,6 +449,22 @@ async def run() -> None:
420449 asyncio .run (run ())
421450
422451
452+ def test_async_handle_response_with_integer_subclass_status_raises_hyperbrowser_error ():
453+ async def run () -> None :
454+ transport = AsyncTransport (api_key = "test-key" )
455+ try :
456+ with pytest .raises (
457+ HyperbrowserError , match = "Failed to process response status code"
458+ ):
459+ await transport ._handle_response (
460+ _IntegerSubclassStatusNoContentResponse () # type: ignore[arg-type]
461+ )
462+ finally :
463+ await transport .close ()
464+
465+ asyncio .run (run ())
466+
467+
423468def test_async_handle_response_with_request_error_includes_method_and_url ():
424469 async def run () -> None :
425470 transport = AsyncTransport (api_key = "test-key" )
0 commit comments