@@ -38,45 +38,40 @@ def _make_transport(self) -> StreamableHTTPTransport:
3838 async def test_401_produces_error_response (self ):
3939 """401 Unauthorized should produce a JSONRPCError with the request's ID."""
4040 transport = self ._make_transport ()
41-
4241 ctx = self ._make_request_context ()
4342
44- # Mock the response to return 401
4543 mock_response = MagicMock ()
4644 mock_response .status_code = 401
4745 mock_response .headers = {"content-type" : "text/plain" }
4846 mock_response .aread = AsyncMock (return_value = b"Unauthorized" )
4947
50- # Mock the context manager for stream()
51- mock_stream_ctx = AsyncMock ()
48+ # Use async context manager mock
49+ mock_stream_ctx = MagicMock ()
5250 mock_stream_ctx .__aenter__ = AsyncMock (return_value = mock_response )
5351 mock_stream_ctx .__aexit__ = AsyncMock (return_value = False )
5452 ctx .client .stream .return_value = mock_stream_ctx
5553
56- # Call _handle_post_request
5754 await transport ._handle_post_request (ctx )
5855
59- # Verify that an error was sent to the read_stream_writer
6056 ctx .read_stream_writer .send .assert_called_once ()
6157 sent_message = ctx .read_stream_writer .send .call_args [0 ][0 ]
6258 assert isinstance (sent_message , SessionMessage )
6359 assert isinstance (sent_message .message , JSONRPCError )
6460 assert sent_message .message .id == "test-123"
65- assert sent_message .message .error .code == - 32603 # INTERNAL_ERROR
61+ assert sent_message .message .error .code == - 32603
6662
6763 @pytest .mark .anyio
6864 async def test_403_produces_error_response (self ):
6965 """403 Forbidden should produce a JSONRPCError with the request's ID."""
7066 transport = self ._make_transport ()
71-
7267 ctx = self ._make_request_context ()
7368
7469 mock_response = MagicMock ()
7570 mock_response .status_code = 403
7671 mock_response .headers = {"content-type" : "text/plain" }
7772 mock_response .aread = AsyncMock (return_value = b"Forbidden" )
7873
79- mock_stream_ctx = AsyncMock ()
74+ mock_stream_ctx = MagicMock ()
8075 mock_stream_ctx .__aenter__ = AsyncMock (return_value = mock_response )
8176 mock_stream_ctx .__aexit__ = AsyncMock (return_value = False )
8277 ctx .client .stream .return_value = mock_stream_ctx
@@ -92,15 +87,14 @@ async def test_403_produces_error_response(self):
9287 async def test_500_produces_error_response (self ):
9388 """500 Internal Server Error should produce a JSONRPCError."""
9489 transport = self ._make_transport ()
95-
9690 ctx = self ._make_request_context ()
9791
9892 mock_response = MagicMock ()
9993 mock_response .status_code = 500
10094 mock_response .headers = {"content-type" : "text/plain" }
10195 mock_response .aread = AsyncMock (return_value = b"Internal Server Error" )
10296
103- mock_stream_ctx = AsyncMock ()
97+ mock_stream_ctx = MagicMock ()
10498 mock_stream_ctx .__aenter__ = AsyncMock (return_value = mock_response )
10599 mock_stream_ctx .__aexit__ = AsyncMock (return_value = False )
106100 ctx .client .stream .return_value = mock_stream_ctx
@@ -115,7 +109,6 @@ async def test_500_produces_error_response(self):
115109 async def test_json_error_body_is_parsed (self ):
116110 """When server returns JSON-RPC error body, it should be used directly."""
117111 transport = self ._make_transport ()
118-
119112 ctx = self ._make_request_context ()
120113
121114 error_body = json .dumps (
@@ -127,7 +120,7 @@ async def test_json_error_body_is_parsed(self):
127120 mock_response .headers = {"content-type" : "application/json" }
128121 mock_response .aread = AsyncMock (return_value = error_body )
129122
130- mock_stream_ctx = AsyncMock ()
123+ mock_stream_ctx = MagicMock ()
131124 mock_stream_ctx .__aenter__ = AsyncMock (return_value = mock_response )
132125 mock_stream_ctx .__aexit__ = AsyncMock (return_value = False )
133126 ctx .client .stream .return_value = mock_stream_ctx
0 commit comments