Skip to content

Commit 9112049

Browse files
committed
Add tests to validate id
1 parent 5848620 commit 9112049

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

tests/test_types.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
9761055
def test_content_type_not_supported_error():
9771056
# Test ContentTypeNotSupportedError
9781057
err = ContentTypeNotSupportedError(

0 commit comments

Comments
 (0)