@@ -37,6 +37,18 @@ def json(self):
3737 raise RuntimeError ("broken json" )
3838
3939
40+ class _JsonCreatedResponse :
41+ status_code = 201
42+ content = b'{"created": true}'
43+ text = '{"created": true}'
44+
45+ def raise_for_status (self ) -> None :
46+ return None
47+
48+ def json (self ):
49+ return {"created" : True }
50+
51+
4052class _BrokenJsonErrorResponse :
4153 status_code = 500
4254 content = b"{broken-json}"
@@ -151,6 +163,19 @@ def test_sync_handle_response_with_non_json_success_body_returns_status_only():
151163 transport .close ()
152164
153165
166+ def test_sync_handle_response_preserves_non_200_success_status_codes ():
167+ transport = SyncTransport (api_key = "test-key" )
168+ try :
169+ api_response = transport ._handle_response (
170+ _JsonCreatedResponse () # type: ignore[arg-type]
171+ )
172+
173+ assert api_response .status_code == 201
174+ assert api_response .data == {"created" : True }
175+ finally :
176+ transport .close ()
177+
178+
154179def test_sync_handle_response_with_broken_json_success_payload_returns_status_only ():
155180 transport = SyncTransport (api_key = "test-key" )
156181 try :
@@ -332,6 +357,22 @@ async def run() -> None:
332357 asyncio .run (run ())
333358
334359
360+ def test_async_handle_response_preserves_non_200_success_status_codes ():
361+ async def run () -> None :
362+ transport = AsyncTransport (api_key = "test-key" )
363+ try :
364+ api_response = await transport ._handle_response (
365+ _JsonCreatedResponse () # type: ignore[arg-type]
366+ )
367+
368+ assert api_response .status_code == 201
369+ assert api_response .data == {"created" : True }
370+ finally :
371+ await transport .close ()
372+
373+ asyncio .run (run ())
374+
375+
335376def test_async_handle_response_with_broken_json_success_payload_returns_status_only ():
336377 async def run () -> None :
337378 transport = AsyncTransport (api_key = "test-key" )
0 commit comments