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.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/a2a.json +1961 -0
  3. data/a2a.proto +796 -0
  4. data/endpoints/grpc/cancel_task.json +10 -0
  5. data/endpoints/grpc/create_task_push_notification_config.json +10 -0
  6. data/endpoints/grpc/delete_task_push_notification_config.json +10 -0
  7. data/endpoints/grpc/get_extended_agent_card.json +10 -0
  8. data/endpoints/grpc/get_task.json +10 -0
  9. data/endpoints/grpc/get_task_push_notification_config.json +10 -0
  10. data/endpoints/grpc/list_task_push_notification_configs.json +10 -0
  11. data/endpoints/grpc/list_tasks.json +10 -0
  12. data/endpoints/grpc/send_message.json +10 -0
  13. data/endpoints/grpc/send_streaming_message.json +10 -0
  14. data/endpoints/grpc/subscribe_to_task.json +10 -0
  15. data/endpoints/rest/cancel_task.json +85 -0
  16. data/endpoints/rest/create_task_push_notification_config.json +104 -0
  17. data/endpoints/rest/delete_task_push_notification_config.json +46 -0
  18. data/endpoints/rest/get_extended_agent_card.json +168 -0
  19. data/endpoints/rest/get_task.json +111 -0
  20. data/endpoints/rest/get_task_push_notification_config.json +90 -0
  21. data/endpoints/rest/list_task_push_notification_configs.json +108 -0
  22. data/endpoints/rest/list_tasks.json +239 -0
  23. data/endpoints/rest/send_message.json +57 -0
  24. data/endpoints/rest/send_streaming_message.json +75 -0
  25. data/endpoints/rest/subscribe_to_task.json +68 -0
  26. data/exe/a2a-test +6 -0
  27. data/lib/a2a_test_framework/cli.rb +190 -0
  28. data/lib/a2a_test_framework/sse_client.rb +104 -0
  29. data/lib/a2a_test_framework/test_helper.rb +146 -0
  30. data/lib/a2a_test_framework/version.rb +5 -0
  31. data/lib/a2a_test_framework.rb +17 -0
  32. data/tests/grpc/cancel_task_test.rb +69 -0
  33. data/tests/grpc/create_task_push_notification_config_test.rb +79 -0
  34. data/tests/grpc/delete_task_push_notification_config_test.rb +54 -0
  35. data/tests/grpc/error_code_mappings_test.rb +39 -0
  36. data/tests/grpc/error_handling_test.rb +175 -0
  37. data/tests/grpc/get_extended_agent_card_test.rb +83 -0
  38. data/tests/grpc/get_task_push_notification_config_test.rb +39 -0
  39. data/tests/grpc/get_task_test.rb +76 -0
  40. data/tests/grpc/grpc_binding_test.rb +74 -0
  41. data/tests/grpc/list_task_push_notification_configs_test.rb +53 -0
  42. data/tests/grpc/list_tasks_test.rb +117 -0
  43. data/tests/grpc/protocol_data_model_test.rb +14 -0
  44. data/tests/grpc/send_message_test.rb +141 -0
  45. data/tests/grpc/send_streaming_message_test.rb +122 -0
  46. data/tests/grpc/streaming_event_delivery_test.rb +48 -0
  47. data/tests/grpc/subscribe_to_task_test.rb +92 -0
  48. data/tests/grpc/versioning_test.rb +32 -0
  49. data/tests/rest/agent_card_caching_test.rb +39 -0
  50. data/tests/rest/agent_card_signing_test.rb +74 -0
  51. data/tests/rest/agent_discovery_test.rb +117 -0
  52. data/tests/rest/authentication_authorization_test.rb +62 -0
  53. data/tests/rest/cancel_task_test.rb +110 -0
  54. data/tests/rest/capability_validation_test.rb +78 -0
  55. data/tests/rest/context_identifier_semantics_test.rb +75 -0
  56. data/tests/rest/create_task_push_notification_config_test.rb +122 -0
  57. data/tests/rest/custom_binding_test.rb +96 -0
  58. data/tests/rest/delete_task_push_notification_config_test.rb +103 -0
  59. data/tests/rest/error_code_mappings_test.rb +45 -0
  60. data/tests/rest/error_handling_test.rb +178 -0
  61. data/tests/rest/extension_versioning_test.rb +44 -0
  62. data/tests/rest/field_presence_optionality_test.rb +64 -0
  63. data/tests/rest/functional_equivalence_test.rb +23 -0
  64. data/tests/rest/get_extended_agent_card_test.rb +67 -0
  65. data/tests/rest/get_task_push_notification_config_test.rb +75 -0
  66. data/tests/rest/get_task_test.rb +134 -0
  67. data/tests/rest/history_length_semantics_test.rb +91 -0
  68. data/tests/rest/http_rest_binding_test.rb +114 -0
  69. data/tests/rest/iana_registrations_test.rb +47 -0
  70. data/tests/rest/idempotency_test.rb +69 -0
  71. data/tests/rest/in_task_authorization_test.rb +45 -0
  72. data/tests/rest/json_field_naming_test.rb +89 -0
  73. data/tests/rest/json_rpc_binding_test.rb +102 -0
  74. data/tests/rest/list_task_push_notification_configs_test.rb +92 -0
  75. data/tests/rest/list_tasks_test.rb +162 -0
  76. data/tests/rest/messages_and_artifacts_test.rb +101 -0
  77. data/tests/rest/multi_turn_conversation_test.rb +94 -0
  78. data/tests/rest/protocol_data_model_test.rb +99 -0
  79. data/tests/rest/protocol_security_test.rb +25 -0
  80. data/tests/rest/protocol_selection_negotiation_test.rb +24 -0
  81. data/tests/rest/push_notification_delivery_test.rb +115 -0
  82. data/tests/rest/security_considerations_test.rb +101 -0
  83. data/tests/rest/send_message_test.rb +230 -0
  84. data/tests/rest/send_streaming_message_test.rb +129 -0
  85. data/tests/rest/service_parameters_test.rb +52 -0
  86. data/tests/rest/streaming_event_delivery_test.rb +58 -0
  87. data/tests/rest/subscribe_to_task_test.rb +99 -0
  88. data/tests/rest/task_identifier_semantics_test.rb +67 -0
  89. data/tests/rest/timestamps_test.rb +70 -0
  90. data/tests/rest/versioning_responsibilities_test.rb +46 -0
  91. data/tests/rest/versioning_test.rb +44 -0
  92. 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