a2a-test-framework 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/a2a.json +1961 -0
- data/a2a.proto +796 -0
- data/endpoints/grpc/cancel_task.json +10 -0
- data/endpoints/grpc/create_task_push_notification_config.json +10 -0
- data/endpoints/grpc/delete_task_push_notification_config.json +10 -0
- data/endpoints/grpc/get_extended_agent_card.json +10 -0
- data/endpoints/grpc/get_task.json +10 -0
- data/endpoints/grpc/get_task_push_notification_config.json +10 -0
- data/endpoints/grpc/list_task_push_notification_configs.json +10 -0
- data/endpoints/grpc/list_tasks.json +10 -0
- data/endpoints/grpc/send_message.json +10 -0
- data/endpoints/grpc/send_streaming_message.json +10 -0
- data/endpoints/grpc/subscribe_to_task.json +10 -0
- data/endpoints/rest/cancel_task.json +85 -0
- data/endpoints/rest/create_task_push_notification_config.json +104 -0
- data/endpoints/rest/delete_task_push_notification_config.json +46 -0
- data/endpoints/rest/get_extended_agent_card.json +168 -0
- data/endpoints/rest/get_task.json +111 -0
- data/endpoints/rest/get_task_push_notification_config.json +90 -0
- data/endpoints/rest/list_task_push_notification_configs.json +108 -0
- data/endpoints/rest/list_tasks.json +239 -0
- data/endpoints/rest/send_message.json +57 -0
- data/endpoints/rest/send_streaming_message.json +75 -0
- data/endpoints/rest/subscribe_to_task.json +68 -0
- data/exe/a2a-test +6 -0
- data/lib/a2a_test_framework/cli.rb +190 -0
- data/lib/a2a_test_framework/sse_client.rb +104 -0
- data/lib/a2a_test_framework/test_helper.rb +146 -0
- data/lib/a2a_test_framework/version.rb +5 -0
- data/lib/a2a_test_framework.rb +17 -0
- data/tests/grpc/cancel_task_test.rb +69 -0
- data/tests/grpc/create_task_push_notification_config_test.rb +79 -0
- data/tests/grpc/delete_task_push_notification_config_test.rb +54 -0
- data/tests/grpc/error_code_mappings_test.rb +39 -0
- data/tests/grpc/error_handling_test.rb +175 -0
- data/tests/grpc/get_extended_agent_card_test.rb +83 -0
- data/tests/grpc/get_task_push_notification_config_test.rb +39 -0
- data/tests/grpc/get_task_test.rb +76 -0
- data/tests/grpc/grpc_binding_test.rb +74 -0
- data/tests/grpc/list_task_push_notification_configs_test.rb +53 -0
- data/tests/grpc/list_tasks_test.rb +117 -0
- data/tests/grpc/protocol_data_model_test.rb +14 -0
- data/tests/grpc/send_message_test.rb +141 -0
- data/tests/grpc/send_streaming_message_test.rb +122 -0
- data/tests/grpc/streaming_event_delivery_test.rb +48 -0
- data/tests/grpc/subscribe_to_task_test.rb +92 -0
- data/tests/grpc/versioning_test.rb +32 -0
- data/tests/rest/agent_card_caching_test.rb +39 -0
- data/tests/rest/agent_card_signing_test.rb +74 -0
- data/tests/rest/agent_discovery_test.rb +117 -0
- data/tests/rest/authentication_authorization_test.rb +62 -0
- data/tests/rest/cancel_task_test.rb +110 -0
- data/tests/rest/capability_validation_test.rb +78 -0
- data/tests/rest/context_identifier_semantics_test.rb +75 -0
- data/tests/rest/create_task_push_notification_config_test.rb +122 -0
- data/tests/rest/custom_binding_test.rb +96 -0
- data/tests/rest/delete_task_push_notification_config_test.rb +103 -0
- data/tests/rest/error_code_mappings_test.rb +45 -0
- data/tests/rest/error_handling_test.rb +178 -0
- data/tests/rest/extension_versioning_test.rb +44 -0
- data/tests/rest/field_presence_optionality_test.rb +64 -0
- data/tests/rest/functional_equivalence_test.rb +23 -0
- data/tests/rest/get_extended_agent_card_test.rb +67 -0
- data/tests/rest/get_task_push_notification_config_test.rb +75 -0
- data/tests/rest/get_task_test.rb +134 -0
- data/tests/rest/history_length_semantics_test.rb +91 -0
- data/tests/rest/http_rest_binding_test.rb +114 -0
- data/tests/rest/iana_registrations_test.rb +47 -0
- data/tests/rest/idempotency_test.rb +69 -0
- data/tests/rest/in_task_authorization_test.rb +45 -0
- data/tests/rest/json_field_naming_test.rb +89 -0
- data/tests/rest/json_rpc_binding_test.rb +102 -0
- data/tests/rest/list_task_push_notification_configs_test.rb +92 -0
- data/tests/rest/list_tasks_test.rb +162 -0
- data/tests/rest/messages_and_artifacts_test.rb +101 -0
- data/tests/rest/multi_turn_conversation_test.rb +94 -0
- data/tests/rest/protocol_data_model_test.rb +99 -0
- data/tests/rest/protocol_security_test.rb +25 -0
- data/tests/rest/protocol_selection_negotiation_test.rb +24 -0
- data/tests/rest/push_notification_delivery_test.rb +115 -0
- data/tests/rest/security_considerations_test.rb +101 -0
- data/tests/rest/send_message_test.rb +230 -0
- data/tests/rest/send_streaming_message_test.rb +129 -0
- data/tests/rest/service_parameters_test.rb +52 -0
- data/tests/rest/streaming_event_delivery_test.rb +58 -0
- data/tests/rest/subscribe_to_task_test.rb +99 -0
- data/tests/rest/task_identifier_semantics_test.rb +67 -0
- data/tests/rest/timestamps_test.rb +70 -0
- data/tests/rest/versioning_responsibilities_test.rb +46 -0
- data/tests/rest/versioning_test.rb +44 -0
- metadata +159 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "Error Code Mappings (gRPC Status)" do
|
|
10
|
+
# # describe "when a TaskNotFoundError occurs" do
|
|
11
|
+
# # it "should return gRPC NOT_FOUND status" do
|
|
12
|
+
# # end
|
|
13
|
+
# # end
|
|
14
|
+
# #
|
|
15
|
+
# # describe "when a TaskNotCancelableError occurs" do
|
|
16
|
+
# # it "should return gRPC FAILED_PRECONDITION status" do
|
|
17
|
+
# # end
|
|
18
|
+
# # end
|
|
19
|
+
# #
|
|
20
|
+
# # describe "when a PushNotificationNotSupportedError occurs" do
|
|
21
|
+
# # it "should return gRPC FAILED_PRECONDITION status" do
|
|
22
|
+
# # end
|
|
23
|
+
# # end
|
|
24
|
+
# #
|
|
25
|
+
# # describe "when an UnsupportedOperationError occurs" do
|
|
26
|
+
# # it "should return gRPC FAILED_PRECONDITION status" do
|
|
27
|
+
# # end
|
|
28
|
+
# # end
|
|
29
|
+
# #
|
|
30
|
+
# # describe "when a ContentTypeNotSupportedError occurs" do
|
|
31
|
+
# # it "should return gRPC INVALID_ARGUMENT status" do
|
|
32
|
+
# # end
|
|
33
|
+
# # end
|
|
34
|
+
# #
|
|
35
|
+
# # describe "when an InvalidAgentResponseError occurs" do
|
|
36
|
+
# # it "should return gRPC INTERNAL status" do
|
|
37
|
+
# # end
|
|
38
|
+
# # end
|
|
39
|
+
# # end
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "Error Handling (gRPC)" do
|
|
10
|
+
# # # --- Authentication Errors ---
|
|
11
|
+
# #
|
|
12
|
+
# # describe "when a client sends a request without authentication credentials" do
|
|
13
|
+
# # it "should reject the request with an UNAUTHENTICATED status" do
|
|
14
|
+
# # end
|
|
15
|
+
# #
|
|
16
|
+
# # it "should include authentication challenge information in the error details" do
|
|
17
|
+
# # end
|
|
18
|
+
# # end
|
|
19
|
+
# #
|
|
20
|
+
# # describe "when a client sends a request with invalid authentication credentials" do
|
|
21
|
+
# # it "should reject the request with an UNAUTHENTICATED status" do
|
|
22
|
+
# # end
|
|
23
|
+
# # end
|
|
24
|
+
# #
|
|
25
|
+
# # describe "when a client sends a request with an expired bearer token" do
|
|
26
|
+
# # it "should reject the request with an UNAUTHENTICATED status" do
|
|
27
|
+
# # end
|
|
28
|
+
# # end
|
|
29
|
+
# #
|
|
30
|
+
# # # --- Authorization Errors ---
|
|
31
|
+
# #
|
|
32
|
+
# # describe "when an authenticated client lacks required permissions for an operation" do
|
|
33
|
+
# # it "should return a PERMISSION_DENIED status" do
|
|
34
|
+
# # end
|
|
35
|
+
# #
|
|
36
|
+
# # it "should indicate what permission or scope is missing" do
|
|
37
|
+
# # end
|
|
38
|
+
# # end
|
|
39
|
+
# #
|
|
40
|
+
# # describe "when an authenticated client attempts to access another client's task" do
|
|
41
|
+
# # it "should not reveal the existence of that task" do
|
|
42
|
+
# # end
|
|
43
|
+
# #
|
|
44
|
+
# # it "should not distinguish between does-not-exist and not-authorized" do
|
|
45
|
+
# # end
|
|
46
|
+
# # end
|
|
47
|
+
# #
|
|
48
|
+
# # # --- Validation Errors ---
|
|
49
|
+
# #
|
|
50
|
+
# # describe "when a client sends a request with an invalid parameter format" do
|
|
51
|
+
# # it "should return an INVALID_ARGUMENT status before processing" do
|
|
52
|
+
# # end
|
|
53
|
+
# #
|
|
54
|
+
# # it "should specify which parameter failed validation" do
|
|
55
|
+
# # end
|
|
56
|
+
# #
|
|
57
|
+
# # it "should explain why the parameter failed" do
|
|
58
|
+
# # end
|
|
59
|
+
# #
|
|
60
|
+
# # it "should provide guidance on valid parameter values or formats" do
|
|
61
|
+
# # end
|
|
62
|
+
# # end
|
|
63
|
+
# #
|
|
64
|
+
# # describe "when a client sends a SendMessageRequest with no message parts" do
|
|
65
|
+
# # it "should return an INVALID_ARGUMENT status" do
|
|
66
|
+
# # end
|
|
67
|
+
# # end
|
|
68
|
+
# #
|
|
69
|
+
# # # --- Resource Errors ---
|
|
70
|
+
# #
|
|
71
|
+
# # describe "when a client requests a resource that does not exist" do
|
|
72
|
+
# # it "should return a NOT_FOUND status" do
|
|
73
|
+
# # end
|
|
74
|
+
# # end
|
|
75
|
+
# #
|
|
76
|
+
# # describe "when a client requests a resource not accessible to the authenticated client" do
|
|
77
|
+
# # it "should return a NOT_FOUND status" do
|
|
78
|
+
# # end
|
|
79
|
+
# # end
|
|
80
|
+
# #
|
|
81
|
+
# # describe "when comparing not-found vs unauthorized responses" do
|
|
82
|
+
# # it "should not be distinguishable to prevent information leakage" do
|
|
83
|
+
# # end
|
|
84
|
+
# # end
|
|
85
|
+
# #
|
|
86
|
+
# # # --- System Errors ---
|
|
87
|
+
# #
|
|
88
|
+
# # describe "when the server experiences a temporary internal failure" do
|
|
89
|
+
# # it "should return an UNAVAILABLE status indicating temporary unavailability" do
|
|
90
|
+
# # end
|
|
91
|
+
# #
|
|
92
|
+
# # it "should MAY include retry guidance in error details" do
|
|
93
|
+
# # end
|
|
94
|
+
# # end
|
|
95
|
+
# #
|
|
96
|
+
# # # --- Error Payload Structure ---
|
|
97
|
+
# #
|
|
98
|
+
# # describe "when any error response is returned" do
|
|
99
|
+
# # it "should contain an error code as a machine-readable gRPC status code" do
|
|
100
|
+
# # end
|
|
101
|
+
# #
|
|
102
|
+
# # it "should contain a human-readable error message" do
|
|
103
|
+
# # end
|
|
104
|
+
# # end
|
|
105
|
+
# #
|
|
106
|
+
# # describe "when an error response includes details" do
|
|
107
|
+
# # it "should include a @type key in each details object" do
|
|
108
|
+
# # end
|
|
109
|
+
# #
|
|
110
|
+
# # it "should use ProtoJSON Any representation for the @type key" do
|
|
111
|
+
# # end
|
|
112
|
+
# # end
|
|
113
|
+
# #
|
|
114
|
+
# # # --- A2A-Specific Errors ---
|
|
115
|
+
# #
|
|
116
|
+
# # describe "when a task ID does not correspond to an existing task" do
|
|
117
|
+
# # it "should return a TaskNotFoundError" do
|
|
118
|
+
# # end
|
|
119
|
+
# # end
|
|
120
|
+
# #
|
|
121
|
+
# # describe "when a task existed but has been purged" do
|
|
122
|
+
# # it "should return a TaskNotFoundError" do
|
|
123
|
+
# # end
|
|
124
|
+
# # end
|
|
125
|
+
# #
|
|
126
|
+
# # describe "when a CancelTask request targets a completed task" do
|
|
127
|
+
# # it "should return a TaskNotCancelableError" do
|
|
128
|
+
# # end
|
|
129
|
+
# # end
|
|
130
|
+
# #
|
|
131
|
+
# # describe "when a CancelTask request targets a failed task" do
|
|
132
|
+
# # it "should return a TaskNotCancelableError" do
|
|
133
|
+
# # end
|
|
134
|
+
# # end
|
|
135
|
+
# #
|
|
136
|
+
# # describe "when a CancelTask request targets an already canceled task" do
|
|
137
|
+
# # it "should return a TaskNotCancelableError" do
|
|
138
|
+
# # end
|
|
139
|
+
# # end
|
|
140
|
+
# #
|
|
141
|
+
# # describe "when a client attempts push notification features on a non-supporting server" do
|
|
142
|
+
# # it "should return a PushNotificationNotSupportedError" do
|
|
143
|
+
# # end
|
|
144
|
+
# # end
|
|
145
|
+
# #
|
|
146
|
+
# # describe "when a client requests an unsupported operation" do
|
|
147
|
+
# # it "should return an UnsupportedOperationError" do
|
|
148
|
+
# # end
|
|
149
|
+
# # end
|
|
150
|
+
# #
|
|
151
|
+
# # describe "when a client sends a message with an unsupported media type" do
|
|
152
|
+
# # it "should return a ContentTypeNotSupportedError" do
|
|
153
|
+
# # end
|
|
154
|
+
# # end
|
|
155
|
+
# #
|
|
156
|
+
# # describe "when an agent returns a malformed response" do
|
|
157
|
+
# # it "should be classified as InvalidAgentResponseError" do
|
|
158
|
+
# # end
|
|
159
|
+
# # end
|
|
160
|
+
# #
|
|
161
|
+
# # describe "when the extended agent card is not configured despite capability being declared" do
|
|
162
|
+
# # it "should return an ExtendedAgentCardNotConfiguredError" do
|
|
163
|
+
# # end
|
|
164
|
+
# # end
|
|
165
|
+
# #
|
|
166
|
+
# # describe "when a client does not declare support for a required extension" do
|
|
167
|
+
# # it "should return an ExtensionSupportRequiredError" do
|
|
168
|
+
# # end
|
|
169
|
+
# # end
|
|
170
|
+
# #
|
|
171
|
+
# # describe "when a client sends a request with an unsupported protocol version" do
|
|
172
|
+
# # it "should return a VersionNotSupportedError" do
|
|
173
|
+
# # end
|
|
174
|
+
# # end
|
|
175
|
+
# # end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "A2AService/GetExtendedAgentCard" do
|
|
10
|
+
# # # --- Authentication Requirement ---
|
|
11
|
+
# #
|
|
12
|
+
# # describe "when a client sends an authenticated request using a declared security scheme" do
|
|
13
|
+
# # it "should accept the request" do
|
|
14
|
+
# # end
|
|
15
|
+
# # end
|
|
16
|
+
# #
|
|
17
|
+
# # describe "when a client sends a request without authentication" do
|
|
18
|
+
# # it "should reject the request with an authentication error" do
|
|
19
|
+
# # end
|
|
20
|
+
# # end
|
|
21
|
+
# #
|
|
22
|
+
# # describe "when a client sends a request using an undeclared security scheme" do
|
|
23
|
+
# # it "should reject the request" do
|
|
24
|
+
# # end
|
|
25
|
+
# # end
|
|
26
|
+
# #
|
|
27
|
+
# # # --- Successful Retrieval ---
|
|
28
|
+
# #
|
|
29
|
+
# # describe "when an authenticated client retrieves the extended agent card" do
|
|
30
|
+
# # it "should respond with a complete AgentCard object" do
|
|
31
|
+
# # end
|
|
32
|
+
# #
|
|
33
|
+
# # it "should MAY contain additional skills not present in the public card" do
|
|
34
|
+
# # end
|
|
35
|
+
# #
|
|
36
|
+
# # it "should MAY contain additional capabilities not in the public card" do
|
|
37
|
+
# # end
|
|
38
|
+
# # end
|
|
39
|
+
# #
|
|
40
|
+
# # describe "when clients with different authentication levels request the extended card" do
|
|
41
|
+
# # it "should MAY return different details based on authentication level" do
|
|
42
|
+
# # end
|
|
43
|
+
# # end
|
|
44
|
+
# #
|
|
45
|
+
# # # --- Card Replacement Behavior ---
|
|
46
|
+
# #
|
|
47
|
+
# # describe "when a client retrieves the extended agent card after caching the public card" do
|
|
48
|
+
# # it "should replace the cached public AgentCard with the extended card" do
|
|
49
|
+
# # end
|
|
50
|
+
# #
|
|
51
|
+
# # it "should keep the replacement for the duration of the authenticated session" do
|
|
52
|
+
# # end
|
|
53
|
+
# # end
|
|
54
|
+
# #
|
|
55
|
+
# # describe "when the agent card version changes after caching" do
|
|
56
|
+
# # it "should discard the cached extended card and re-fetch" do
|
|
57
|
+
# # end
|
|
58
|
+
# # end
|
|
59
|
+
# #
|
|
60
|
+
# # # --- Availability / Capability Validation ---
|
|
61
|
+
# #
|
|
62
|
+
# # describe "when the AgentCard declares extendedAgentCard capability as true" do
|
|
63
|
+
# # it "should process the request" do
|
|
64
|
+
# # end
|
|
65
|
+
# # end
|
|
66
|
+
# #
|
|
67
|
+
# # describe "when the AgentCard declares extendedAgentCard capability as false" do
|
|
68
|
+
# # it "should respond with an UnsupportedOperationError" do
|
|
69
|
+
# # end
|
|
70
|
+
# # end
|
|
71
|
+
# #
|
|
72
|
+
# # describe "when the AgentCard does not declare extendedAgentCard capability" do
|
|
73
|
+
# # it "should respond with an UnsupportedOperationError" do
|
|
74
|
+
# # end
|
|
75
|
+
# # end
|
|
76
|
+
# #
|
|
77
|
+
# # # --- Error Cases ---
|
|
78
|
+
# #
|
|
79
|
+
# # describe "when the agent declares support but has no extended card configured" do
|
|
80
|
+
# # it "should respond with an ExtendedAgentCardNotConfiguredError" do
|
|
81
|
+
# # end
|
|
82
|
+
# # end
|
|
83
|
+
# # end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "A2AService/GetTaskPushNotificationConfig" do
|
|
10
|
+
# # # --- Successful Retrieval ---
|
|
11
|
+
# #
|
|
12
|
+
# # describe "when a client retrieves an existing push notification config" do
|
|
13
|
+
# # it "should respond with a PushNotificationConfig object" do
|
|
14
|
+
# # end
|
|
15
|
+
# #
|
|
16
|
+
# # it "should include the webhook URL in the configuration details" do
|
|
17
|
+
# # end
|
|
18
|
+
# #
|
|
19
|
+
# # it "should include the notification settings in the configuration details" do
|
|
20
|
+
# # end
|
|
21
|
+
# # end
|
|
22
|
+
# #
|
|
23
|
+
# # # --- Error Cases ---
|
|
24
|
+
# #
|
|
25
|
+
# # describe "when the server does not support push notifications" do
|
|
26
|
+
# # it "should respond with a PushNotificationNotSupportedError" do
|
|
27
|
+
# # end
|
|
28
|
+
# # end
|
|
29
|
+
# #
|
|
30
|
+
# # describe "when a client requests a non-existent config ID" do
|
|
31
|
+
# # it "should respond with a TaskNotFoundError" do
|
|
32
|
+
# # end
|
|
33
|
+
# # end
|
|
34
|
+
# #
|
|
35
|
+
# # describe "when a client lacks access to the configuration" do
|
|
36
|
+
# # it "should respond with an error" do
|
|
37
|
+
# # end
|
|
38
|
+
# # end
|
|
39
|
+
# # end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "A2AService/GetTask" do
|
|
10
|
+
# # # --- Successful Retrieval ---
|
|
11
|
+
# #
|
|
12
|
+
# # describe "when a client retrieves an existing task" do
|
|
13
|
+
# # it "should respond with a Task object" do
|
|
14
|
+
# # end
|
|
15
|
+
# #
|
|
16
|
+
# # it "should include the current status in the Task object" do
|
|
17
|
+
# # end
|
|
18
|
+
# #
|
|
19
|
+
# # it "should include any generated artifacts in the Task object" do
|
|
20
|
+
# # end
|
|
21
|
+
# # end
|
|
22
|
+
# #
|
|
23
|
+
# # describe "when a task is in working state" do
|
|
24
|
+
# # it "should return a status field reflecting the current state" do
|
|
25
|
+
# # end
|
|
26
|
+
# # end
|
|
27
|
+
# #
|
|
28
|
+
# # describe "when a task has generated artifacts" do
|
|
29
|
+
# # it "should include the artifacts field in the response" do
|
|
30
|
+
# # end
|
|
31
|
+
# # end
|
|
32
|
+
# #
|
|
33
|
+
# # describe "when polling for task completion after SendMessage" do
|
|
34
|
+
# # it "should return the task with completed status once processing finishes" do
|
|
35
|
+
# # end
|
|
36
|
+
# # end
|
|
37
|
+
# #
|
|
38
|
+
# # describe "when retrieving a task after push notification received" do
|
|
39
|
+
# # it "should respond with a Task object reflecting the final state" do
|
|
40
|
+
# # end
|
|
41
|
+
# # end
|
|
42
|
+
# #
|
|
43
|
+
# # describe "when retrieving a task after stream has ended" do
|
|
44
|
+
# # it "should respond with a Task object reflecting the final state" do
|
|
45
|
+
# # end
|
|
46
|
+
# # end
|
|
47
|
+
# #
|
|
48
|
+
# # # --- History Length Parameter ---
|
|
49
|
+
# #
|
|
50
|
+
# # describe "when a client sends a GetTask request with historyLength set to a positive number" do
|
|
51
|
+
# # it "should include up to that many recent messages in the history field" do
|
|
52
|
+
# # end
|
|
53
|
+
# # end
|
|
54
|
+
# #
|
|
55
|
+
# # describe "when a client sends a GetTask request with historyLength set to 0" do
|
|
56
|
+
# # it "should omit the history field from the response" do
|
|
57
|
+
# # end
|
|
58
|
+
# # end
|
|
59
|
+
# #
|
|
60
|
+
# # describe "when a client sends a GetTask request without specifying historyLength" do
|
|
61
|
+
# # it "should return the server default amount of history" do
|
|
62
|
+
# # end
|
|
63
|
+
# # end
|
|
64
|
+
# #
|
|
65
|
+
# # # --- Error Cases ---
|
|
66
|
+
# #
|
|
67
|
+
# # describe "when a client sends a GetTask request with a non-existent task ID" do
|
|
68
|
+
# # it "should respond with a TaskNotFoundError" do
|
|
69
|
+
# # end
|
|
70
|
+
# # end
|
|
71
|
+
# #
|
|
72
|
+
# # describe "when a client sends a GetTask request for a task not accessible to the client" do
|
|
73
|
+
# # it "should respond with a TaskNotFoundError" do
|
|
74
|
+
# # end
|
|
75
|
+
# # end
|
|
76
|
+
# # end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "gRPC Protocol Binding" do
|
|
10
|
+
# # # --- Protocol Requirements ---
|
|
11
|
+
# #
|
|
12
|
+
# # describe "when using the gRPC binding" do
|
|
13
|
+
# # it "should use gRPC over HTTP/2 with TLS" do
|
|
14
|
+
# # end
|
|
15
|
+
# #
|
|
16
|
+
# # it "should use Protocol Buffers version 3 for serialization" do
|
|
17
|
+
# # end
|
|
18
|
+
# #
|
|
19
|
+
# # it "should implement the A2AService gRPC service" do
|
|
20
|
+
# # end
|
|
21
|
+
# # end
|
|
22
|
+
# #
|
|
23
|
+
# # # --- Service Parameter Transmission ---
|
|
24
|
+
# #
|
|
25
|
+
# # describe "when transmitting A2A service parameters" do
|
|
26
|
+
# # it "should use gRPC metadata (headers)" do
|
|
27
|
+
# # end
|
|
28
|
+
# #
|
|
29
|
+
# # it "should transmit A2A-Version as a gRPC metadata key" do
|
|
30
|
+
# # end
|
|
31
|
+
# #
|
|
32
|
+
# # it "should comma-separate multiple extension values in a single metadata entry" do
|
|
33
|
+
# # end
|
|
34
|
+
# # end
|
|
35
|
+
# #
|
|
36
|
+
# # describe "when the server receives a request" do
|
|
37
|
+
# # it "should extract service parameters from gRPC metadata" do
|
|
38
|
+
# # end
|
|
39
|
+
# #
|
|
40
|
+
# # it "should validate required service parameters from metadata" do
|
|
41
|
+
# # end
|
|
42
|
+
# # end
|
|
43
|
+
# #
|
|
44
|
+
# # # --- Error Handling ---
|
|
45
|
+
# #
|
|
46
|
+
# # describe "when an error occurs" do
|
|
47
|
+
# # it "should use the standard gRPC status structure (google.rpc.Status)" do
|
|
48
|
+
# # end
|
|
49
|
+
# #
|
|
50
|
+
# # it "should map error code to the status.code field" do
|
|
51
|
+
# # end
|
|
52
|
+
# #
|
|
53
|
+
# # it "should include error message in status.message field" do
|
|
54
|
+
# # end
|
|
55
|
+
# # end
|
|
56
|
+
# #
|
|
57
|
+
# # describe "when an A2A-specific error occurs" do
|
|
58
|
+
# # it "should include google.rpc.ErrorInfo in status.details" do
|
|
59
|
+
# # end
|
|
60
|
+
# #
|
|
61
|
+
# # it "should use UPPER_SNAKE_CASE without Error suffix in ErrorInfo reason" do
|
|
62
|
+
# # end
|
|
63
|
+
# #
|
|
64
|
+
# # it "should set ErrorInfo domain to a2a-protocol.org" do
|
|
65
|
+
# # end
|
|
66
|
+
# # end
|
|
67
|
+
# #
|
|
68
|
+
# # # --- Streaming ---
|
|
69
|
+
# #
|
|
70
|
+
# # describe "when a streaming operation is invoked" do
|
|
71
|
+
# # it "should use server streaming RPCs for real-time updates" do
|
|
72
|
+
# # end
|
|
73
|
+
# # end
|
|
74
|
+
# # end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "A2AService/ListTaskPushNotificationConfigs" do
|
|
10
|
+
# # # --- Successful Retrieval ---
|
|
11
|
+
# #
|
|
12
|
+
# # describe "when a task has multiple push notification configs" do
|
|
13
|
+
# # it "should return all active push notification configurations for that task" do
|
|
14
|
+
# # end
|
|
15
|
+
# # end
|
|
16
|
+
# #
|
|
17
|
+
# # describe "when a task has no push notification configs" do
|
|
18
|
+
# # it "should return an empty list of configurations" do
|
|
19
|
+
# # end
|
|
20
|
+
# # end
|
|
21
|
+
# #
|
|
22
|
+
# # describe "when a task has both active and deleted push notification configs" do
|
|
23
|
+
# # it "should only return active configurations" do
|
|
24
|
+
# # end
|
|
25
|
+
# #
|
|
26
|
+
# # it "should not include deleted configurations in the response" do
|
|
27
|
+
# # end
|
|
28
|
+
# # end
|
|
29
|
+
# #
|
|
30
|
+
# # # --- Pagination ---
|
|
31
|
+
# #
|
|
32
|
+
# # describe "when a task has many push notification configs" do
|
|
33
|
+
# # it "should support pagination for the results" do
|
|
34
|
+
# # end
|
|
35
|
+
# # end
|
|
36
|
+
# #
|
|
37
|
+
# # # --- Error Cases ---
|
|
38
|
+
# #
|
|
39
|
+
# # describe "when the server does not support push notifications" do
|
|
40
|
+
# # it "should respond with a PushNotificationNotSupportedError" do
|
|
41
|
+
# # end
|
|
42
|
+
# # end
|
|
43
|
+
# #
|
|
44
|
+
# # describe "when a client sends a request with a non-existent task ID" do
|
|
45
|
+
# # it "should respond with a TaskNotFoundError" do
|
|
46
|
+
# # end
|
|
47
|
+
# # end
|
|
48
|
+
# #
|
|
49
|
+
# # describe "when a client sends a request for a task not accessible to the client" do
|
|
50
|
+
# # it "should respond with a TaskNotFoundError" do
|
|
51
|
+
# # end
|
|
52
|
+
# # end
|
|
53
|
+
# # end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "A2AService/ListTasks" do
|
|
10
|
+
# # # --- Authorization Scoping ---
|
|
11
|
+
# #
|
|
12
|
+
# # describe "when an authenticated client sends a ListTasks request" do
|
|
13
|
+
# # it "should only return tasks visible to the authenticated client" do
|
|
14
|
+
# # end
|
|
15
|
+
# #
|
|
16
|
+
# # it "should not return tasks belonging to other clients" do
|
|
17
|
+
# # end
|
|
18
|
+
# # end
|
|
19
|
+
# #
|
|
20
|
+
# # describe "when an unauthenticated client sends a ListTasks request" do
|
|
21
|
+
# # it "should respond with an authentication error" do
|
|
22
|
+
# # end
|
|
23
|
+
# # end
|
|
24
|
+
# #
|
|
25
|
+
# # # --- includeArtifacts Field Behavior ---
|
|
26
|
+
# #
|
|
27
|
+
# # describe "when a client sends a ListTasks request without setting includeArtifacts" do
|
|
28
|
+
# # it "should omit the artifacts field entirely from each Task object" do
|
|
29
|
+
# # end
|
|
30
|
+
# #
|
|
31
|
+
# # it "should not include artifacts as an empty array" do
|
|
32
|
+
# # end
|
|
33
|
+
# #
|
|
34
|
+
# # it "should not include artifacts as a null value" do
|
|
35
|
+
# # end
|
|
36
|
+
# # end
|
|
37
|
+
# #
|
|
38
|
+
# # describe "when a client sends a ListTasks request with includeArtifacts set to false" do
|
|
39
|
+
# # it "should omit the artifacts field entirely from each Task object" do
|
|
40
|
+
# # end
|
|
41
|
+
# # end
|
|
42
|
+
# #
|
|
43
|
+
# # describe "when a client sends a ListTasks request with includeArtifacts set to true" do
|
|
44
|
+
# # it "should include the artifacts field with actual content in each Task" do
|
|
45
|
+
# # end
|
|
46
|
+
# # end
|
|
47
|
+
# #
|
|
48
|
+
# # describe "when a task has no artifacts and includeArtifacts is true" do
|
|
49
|
+
# # it "should return the artifacts field as an empty array" do
|
|
50
|
+
# # end
|
|
51
|
+
# # end
|
|
52
|
+
# #
|
|
53
|
+
# # # --- nextPageToken Field ---
|
|
54
|
+
# #
|
|
55
|
+
# # describe "when a client receives a ListTasks response" do
|
|
56
|
+
# # it "should always contain a nextPageToken field" do
|
|
57
|
+
# # end
|
|
58
|
+
# # end
|
|
59
|
+
# #
|
|
60
|
+
# # describe "when all tasks fit within a single page" do
|
|
61
|
+
# # it "should set nextPageToken to an empty string" do
|
|
62
|
+
# # end
|
|
63
|
+
# # end
|
|
64
|
+
# #
|
|
65
|
+
# # describe "when more tasks exist than fit in a single page" do
|
|
66
|
+
# # it "should set nextPageToken to a non-empty string" do
|
|
67
|
+
# # end
|
|
68
|
+
# #
|
|
69
|
+
# # it "should allow the client to use nextPageToken to retrieve the next page" do
|
|
70
|
+
# # end
|
|
71
|
+
# # end
|
|
72
|
+
# #
|
|
73
|
+
# # # --- Cursor-Based Pagination ---
|
|
74
|
+
# #
|
|
75
|
+
# # describe "when a client sends a ListTasks request with a pageToken from a previous response" do
|
|
76
|
+
# # it "should return the next set of results after the cursor position" do
|
|
77
|
+
# # end
|
|
78
|
+
# #
|
|
79
|
+
# # it "should not overlap with previous pages" do
|
|
80
|
+
# # end
|
|
81
|
+
# # end
|
|
82
|
+
# #
|
|
83
|
+
# # describe "when a client sends a ListTasks request without a pageToken" do
|
|
84
|
+
# # it "should return the first page of results" do
|
|
85
|
+
# # end
|
|
86
|
+
# # end
|
|
87
|
+
# #
|
|
88
|
+
# # # --- Ordering ---
|
|
89
|
+
# #
|
|
90
|
+
# # describe "when tasks are returned in the response" do
|
|
91
|
+
# # it "should sort tasks by status timestamp in descending order" do
|
|
92
|
+
# # end
|
|
93
|
+
# #
|
|
94
|
+
# # it "should place the most recently updated task first" do
|
|
95
|
+
# # end
|
|
96
|
+
# # end
|
|
97
|
+
# #
|
|
98
|
+
# # describe "when paginating through all results" do
|
|
99
|
+
# # it "should maintain consistent ordering across pages" do
|
|
100
|
+
# # end
|
|
101
|
+
# #
|
|
102
|
+
# # it "should not have a later-page task with a more recent update than earlier-page tasks" do
|
|
103
|
+
# # end
|
|
104
|
+
# # end
|
|
105
|
+
# #
|
|
106
|
+
# # # --- Filtering ---
|
|
107
|
+
# #
|
|
108
|
+
# # describe "when a client filters tasks by contextId" do
|
|
109
|
+
# # it "should only return tasks matching that contextId" do
|
|
110
|
+
# # end
|
|
111
|
+
# # end
|
|
112
|
+
# #
|
|
113
|
+
# # describe "when a client filters tasks by status" do
|
|
114
|
+
# # it "should only return tasks with the specified status" do
|
|
115
|
+
# # end
|
|
116
|
+
# # end
|
|
117
|
+
# # end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require "a2a_test_framework/test_helper"
|
|
2
|
+
|
|
3
|
+
# NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
4
|
+
|
|
5
|
+
# require "a2a_test_framework/test_helper"
|
|
6
|
+
|
|
7
|
+
# # NOTE: All tests commented out -- gRPC binding not supported by reference server
|
|
8
|
+
|
|
9
|
+
# # describe "Protocol Data Model (gRPC)" do
|
|
10
|
+
# # describe "when using the gRPC protocol binding" do
|
|
11
|
+
# # it "should provide functionally equivalent representations of all protocol data structures" do
|
|
12
|
+
# # end
|
|
13
|
+
# # end
|
|
14
|
+
# # end
|