@@ -352,5 +352,52 @@ async def mock_stream_response():
352352 assert response .status_code == 200
353353
354354
355+ @pytest .mark .anyio
356+ async def test_send_message_rejected_task (
357+ client : AsyncClient , request_handler : MagicMock
358+ ) -> None :
359+ expected_response = a2a_pb2 .SendMessageResponse (
360+ task = a2a_pb2 .Task (
361+ id = 'test_task_id' ,
362+ context_id = 'test_context_id' ,
363+ status = a2a_pb2 .TaskStatus (
364+ state = a2a_pb2 .TaskState .TASK_STATE_REJECTED ,
365+ update = a2a_pb2 .Message (
366+ message_id = 'test' ,
367+ role = a2a_pb2 .ROLE_AGENT ,
368+ content = [
369+ a2a_pb2 .Part (text = "I don't want to work" ),
370+ ],
371+ ),
372+ ),
373+ ),
374+ )
375+ request_handler .on_message_send .return_value = Task (
376+ id = 'test_task_id' ,
377+ context_id = 'test_context_id' ,
378+ status = TaskStatus (
379+ state = TaskState .rejected ,
380+ message = Message (
381+ message_id = 'test' ,
382+ role = Role .agent ,
383+ parts = [Part (TextPart (text = "I don't want to work" ))],
384+ ),
385+ ),
386+ )
387+ request = a2a_pb2 .SendMessageRequest (
388+ request = a2a_pb2 .Message (),
389+ configuration = a2a_pb2 .SendMessageConfiguration (),
390+ )
391+
392+ response = await client .post (
393+ '/v1/message:send' , json = json_format .MessageToDict (request )
394+ )
395+
396+ response .raise_for_status ()
397+ actual_response = a2a_pb2 .SendMessageResponse ()
398+ json_format .Parse (response .text , actual_response )
399+ assert expected_response == actual_response
400+
401+
355402if __name__ == '__main__' :
356403 pytest .main ([__file__ ])
0 commit comments