@@ -183,7 +183,7 @@ async def configure_multi_test(request, mctx):
183183
184184
185185class TestMultiClientBroadcast :
186- async def test_both_clients_see_tool_events (self , mctx : MultiClientContext ):
186+ async def test_both_clients_see_tool_request_and_completion_events (self , mctx : MultiClientContext ):
187187 """Both clients see tool request and completion events."""
188188
189189 class SeedParams (BaseModel ):
@@ -230,7 +230,7 @@ def magic_number(params: SeedParams, invocation: ToolInvocation) -> str:
230230
231231 await session2 .disconnect ()
232232
233- async def test_one_client_approves_permission (self , mctx : MultiClientContext ):
233+ async def test_one_client_approves_permission_and_both_see_the_result (self , mctx : MultiClientContext ):
234234 """One client approves a permission request and both see the result."""
235235 permission_requests = []
236236
@@ -276,11 +276,11 @@ async def test_one_client_approves_permission(self, mctx: MultiClientContext):
276276 assert len (c1_perm_completed ) > 0
277277 assert len (c2_perm_completed ) > 0
278278 for event in c1_perm_completed + c2_perm_completed :
279- assert event .data .result .kind == "approved"
279+ assert event .data .result .kind . value == "approved"
280280
281281 await session2 .disconnect ()
282282
283- async def test_one_client_rejects_permission (self , mctx : MultiClientContext ):
283+ async def test_one_client_rejects_permission_and_both_see_the_result (self , mctx : MultiClientContext ):
284284 """One client rejects a permission request and both see the result."""
285285 # Client 1 creates a session and denies all permission requests
286286 session1 = await mctx .client1 .create_session (
@@ -327,12 +327,12 @@ async def test_one_client_rejects_permission(self, mctx: MultiClientContext):
327327 assert len (c1_perm_completed ) > 0
328328 assert len (c2_perm_completed ) > 0
329329 for event in c1_perm_completed + c2_perm_completed :
330- assert event .data .result .kind == "denied-interactively-by-user"
330+ assert event .data .result .kind . value == "denied-interactively-by-user"
331331
332332 await session2 .disconnect ()
333333
334334 @pytest .mark .timeout (90 )
335- async def test_two_clients_register_different_tools (self , mctx : MultiClientContext ):
335+ async def test_two_clients_register_different_tools_and_agent_uses_both (self , mctx : MultiClientContext ):
336336 """Two clients register different tools and agent uses both."""
337337
338338 class CountryCodeParams (BaseModel ):
@@ -424,8 +424,8 @@ def ephemeral_tool(params: InputParams, invocation: ToolInvocation) -> str:
424424 ephemeral_response = await get_final_assistant_message (session1 )
425425 assert "EPHEMERAL_test2" in (ephemeral_response .data .content or "" )
426426
427- # Force disconnect client 2
428- await mctx .client2 .stop ()
427+ # Force disconnect client 2 without destroying the shared session
428+ await mctx .client2 .force_stop ()
429429
430430 # Give the server time to process the connection close
431431 await asyncio .sleep (0.5 )
0 commit comments