@@ -913,6 +913,7 @@ def test_a2a_request_root_model() -> None:
913913 ),
914914 )
915915 set_push_notif_req_data : dict [str , Any ] = {
916+ 'id' : 1 ,
916917 'jsonrpc' : '2.0' ,
917918 'method' : 'tasks/pushNotificationConfig/set' ,
918919 'params' : task_push_config .model_dump (),
@@ -932,6 +933,7 @@ def test_a2a_request_root_model() -> None:
932933 # GetTaskPushNotificationConfigRequest
933934 id_params = TaskIdParams (id = 't2' )
934935 get_push_notif_req_data : dict [str , Any ] = {
936+ 'id' : 1 ,
935937 'jsonrpc' : '2.0' ,
936938 'method' : 'tasks/pushNotificationConfig/get' ,
937939 'params' : id_params .model_dump (),
@@ -973,6 +975,83 @@ def test_a2a_request_root_model() -> None:
973975 A2ARequest .model_validate (invalid_req_data )
974976
975977
978+ def test_a2a_request_root_model_id_validation () -> None :
979+ # SendMessageRequest case
980+ send_params = MessageSendParams (message = Message (** MINIMAL_MESSAGE_USER ))
981+ send_req_data : dict [str , Any ] = {
982+ 'jsonrpc' : '2.0' ,
983+ 'method' : 'message/send' ,
984+ 'params' : send_params .model_dump (),
985+ }
986+ with pytest .raises (ValidationError ):
987+ A2ARequest .model_validate (send_req_data ) # missing id
988+
989+ # SendStreamingMessageRequest case
990+ send_subs_req_data : dict [str , Any ] = {
991+ 'jsonrpc' : '2.0' ,
992+ 'method' : 'message/stream' ,
993+ 'params' : send_params .model_dump (),
994+ }
995+ with pytest .raises (ValidationError ):
996+ A2ARequest .model_validate (send_subs_req_data ) # missing id
997+
998+ # GetTaskRequest case
999+ get_params = TaskQueryParams (id = 't2' )
1000+ get_req_data : dict [str , Any ] = {
1001+ 'jsonrpc' : '2.0' ,
1002+ 'method' : 'tasks/get' ,
1003+ 'params' : get_params .model_dump (),
1004+ }
1005+ with pytest .raises (ValidationError ):
1006+ A2ARequest .model_validate (get_req_data ) # missing id
1007+
1008+ # CancelTaskRequest case
1009+ id_params = TaskIdParams (id = 't2' )
1010+ cancel_req_data : dict [str , Any ] = {
1011+ 'jsonrpc' : '2.0' ,
1012+ 'method' : 'tasks/cancel' ,
1013+ 'params' : id_params .model_dump (),
1014+ }
1015+ with pytest .raises (ValidationError ):
1016+ A2ARequest .model_validate (cancel_req_data ) # missing id
1017+
1018+ # SetTaskPushNotificationConfigRequest
1019+ task_push_config = TaskPushNotificationConfig (
1020+ taskId = 't2' ,
1021+ pushNotificationConfig = PushNotificationConfig (
1022+ url = 'https://example.com' , token = 'token'
1023+ ),
1024+ )
1025+ set_push_notif_req_data : dict [str , Any ] = {
1026+ 'jsonrpc' : '2.0' ,
1027+ 'method' : 'tasks/pushNotificationConfig/set' ,
1028+ 'params' : task_push_config .model_dump (),
1029+ 'taskId' : 2 ,
1030+ }
1031+ with pytest .raises (ValidationError ):
1032+ A2ARequest .model_validate (set_push_notif_req_data ) # missing id
1033+
1034+ # GetTaskPushNotificationConfigRequest
1035+ id_params = TaskIdParams (id = 't2' )
1036+ get_push_notif_req_data : dict [str , Any ] = {
1037+ 'jsonrpc' : '2.0' ,
1038+ 'method' : 'tasks/pushNotificationConfig/get' ,
1039+ 'params' : id_params .model_dump (),
1040+ 'taskId' : 2 ,
1041+ }
1042+ with pytest .raises (ValidationError ):
1043+ A2ARequest .model_validate (get_push_notif_req_data )
1044+
1045+ # TaskResubscriptionRequest
1046+ task_resubscribe_req_data : dict [str , Any ] = {
1047+ 'jsonrpc' : '2.0' ,
1048+ 'method' : 'tasks/resubscribe' ,
1049+ 'params' : id_params .model_dump (),
1050+ }
1051+ with pytest .raises (ValidationError ):
1052+ A2ARequest .model_validate (task_resubscribe_req_data )
1053+
1054+
9761055def test_content_type_not_supported_error ():
9771056 # Test ContentTypeNotSupportedError
9781057 err = ContentTypeNotSupportedError (
0 commit comments