@@ -13,7 +13,7 @@ import (
13
13
14
14
"github.com/a2aproject/a2a-go/auth"
15
15
"github.com/a2aproject/a2a-go/internal/jsonrpc"
16
- jsonrpc1 "github.com/a2aproject/a2a-go/protocol/jsonprotocol"
16
+ "github.com/a2aproject/a2a-go/protocol/jsonprotocol"
17
17
"github.com/a2aproject/a2a-go/taskmanager"
18
18
"github.com/stretchr/testify/assert"
19
19
"github.com/stretchr/testify/require"
@@ -126,7 +126,7 @@ func TestA2AServer_HandlerErrors(t *testing.T) {
126
126
// Test wrong content type
127
127
t .Run ("Wrong Content Type" , func (t * testing.T ) {
128
128
reqBody := bytes .NewBufferString (
129
- `{"jsonrpc":"2.0","method":"tasks/send ","params":{},"id":"test-id"}` )
129
+ `{"jsonrpc":"2.0","method":"tasks/get ","params":{},"id":"test-id"}` )
130
130
testJSONRPCErrorResponse (t , testServer , http .MethodPost , reqBody , "text/plain" ,
131
131
jsonrpc .CodeInvalidRequest , "Content-Type" )
132
132
})
@@ -141,7 +141,7 @@ func TestA2AServer_HandlerErrors(t *testing.T) {
141
141
// Test wrong JSONRPC version
142
142
t .Run ("Wrong JSONRPC Version" , func (t * testing.T ) {
143
143
reqBody := bytes .NewBufferString (
144
- `{"jsonrpc":"1.0","method":"tasks/send ","params":{},"id":"test-id"}` )
144
+ `{"jsonrpc":"1.0","method":"tasks/get ","params":{},"id":"test-id"}` )
145
145
testJSONRPCErrorResponse (t , testServer , http .MethodPost , reqBody , "application/json" ,
146
146
jsonrpc .CodeInvalidRequest , "jsonrpc field must be '2.0'" )
147
147
})
@@ -156,10 +156,10 @@ func TestA2AServer_HandlerErrors(t *testing.T) {
156
156
157
157
// Test invalid parameters
158
158
t .Run ("Invalid Parameters" , func (t * testing.T ) {
159
- // Missing required fields in params ( Message with no parts)
159
+ // Message with empty parts array for message/stream
160
160
reqBody := bytes .NewBufferString (
161
- `{"jsonrpc":"2.0","method":"tasks/send ",
162
- "params":{"id":"test-task"," message":{"role":"user","parts":[]}},"id":"test-id"}` )
161
+ `{"jsonrpc":"2.0","method":"message/stream ",
162
+ "params":{"message":{"role":"user","parts":[],"messageId":"msg-test","kind":"message" }},"id":"test-id"}` )
163
163
testJSONRPCErrorResponse (t , testServer , http .MethodPost , reqBody , "application/json" ,
164
164
jsonrpc .CodeInvalidParams , "" )
165
165
})
@@ -186,15 +186,15 @@ func TestA2AServer_AuthMiddleware(t *testing.T) {
186
186
187
187
t .Run ("Auth Success" , func (t * testing.T ) {
188
188
// Configure mock task manager to succeed
189
- mockTM .GetResponse = & jsonrpc1 .Task {
189
+ mockTM .GetResponse = & jsonprotocol .Task {
190
190
ID : "test-task-auth" ,
191
- Status : jsonrpc1 .TaskStatus {State : jsonrpc1 .TaskStateCompleted },
191
+ Status : jsonprotocol .TaskStatus {State : jsonprotocol .TaskStateCompleted },
192
192
}
193
193
mockTM .GetError = nil
194
194
195
195
// Create valid request with auth header
196
- req , _ := createJSONRPCRequest (t , jsonrpc1 .MethodTasksGet ,
197
- jsonrpc1 .TaskQueryParams {ID : "test-task-auth" }, "req-auth-1" )
196
+ req , _ := createJSONRPCRequest (t , jsonprotocol .MethodTasksGet ,
197
+ jsonprotocol .TaskQueryParams {ID : "test-task-auth" }, "req-auth-1" )
198
198
req .Header .Set ("X-API-Key" , "test-api-key" ) // Valid API key
199
199
200
200
resp := executeRequest (t , testServer , req , testServer .URL + "/" )
@@ -208,8 +208,8 @@ func TestA2AServer_AuthMiddleware(t *testing.T) {
208
208
209
209
t .Run ("Auth Failure" , func (t * testing.T ) {
210
210
// Create request with invalid auth
211
- req , _ := createJSONRPCRequest (t , jsonrpc1 .MethodTasksGet ,
212
- jsonrpc1 .TaskQueryParams {ID : "test-task-auth" }, "req-auth-2" )
211
+ req , _ := createJSONRPCRequest (t , jsonprotocol .MethodTasksGet ,
212
+ jsonprotocol .TaskQueryParams {ID : "test-task-auth" }, "req-auth-2" )
213
213
req .Header .Set ("X-API-Key" , "invalid-key" ) // Invalid API key
214
214
215
215
resp := executeRequest (t , testServer , req , testServer .URL + "/" )
@@ -220,7 +220,7 @@ func TestA2AServer_AuthMiddleware(t *testing.T) {
220
220
221
221
// Test that agent card endpoint is still accessible without auth
222
222
t .Run ("AgentCard_NoAuth" , func (t * testing.T ) {
223
- req , err := http .NewRequest (http .MethodGet , testServer .URL + jsonrpc1 .AgentCardPath , nil )
223
+ req , err := http .NewRequest (http .MethodGet , testServer .URL + jsonprotocol .AgentCardPath , nil )
224
224
require .NoError (t , err )
225
225
226
226
resp , err := testServer .Client ().Do (req )
@@ -244,44 +244,44 @@ func TestA2AServer_Resubscribe(t *testing.T) {
244
244
245
245
t .Run ("Resubscribe_Success" , func (t * testing.T ) {
246
246
// Configure mock events
247
- workingEvent := jsonrpc1 .TaskStatusUpdateEvent {
247
+ workingEvent := jsonprotocol .TaskStatusUpdateEvent {
248
248
TaskID : "resubscribe-task" ,
249
249
ContextID : "test-context" ,
250
- Kind : jsonrpc1 .KindTaskStatusUpdate ,
251
- Status : jsonrpc1 .TaskStatus {State : jsonrpc1 .TaskStateWorking },
250
+ Kind : jsonprotocol .KindTaskStatusUpdate ,
251
+ Status : jsonprotocol .TaskStatus {State : jsonprotocol .TaskStateWorking },
252
252
}
253
253
finalPtr := true
254
- completedEvent := jsonrpc1 .TaskStatusUpdateEvent {
254
+ completedEvent := jsonprotocol .TaskStatusUpdateEvent {
255
255
TaskID : "resubscribe-task" ,
256
256
ContextID : "test-context" ,
257
- Kind : jsonrpc1 .KindTaskStatusUpdate ,
258
- Status : jsonrpc1 .TaskStatus {State : jsonrpc1 .TaskStateCompleted },
257
+ Kind : jsonprotocol .KindTaskStatusUpdate ,
258
+ Status : jsonprotocol .TaskStatus {State : jsonprotocol .TaskStateCompleted },
259
259
Final : finalPtr ,
260
260
}
261
- mockTM .SubscribeEvents = []jsonrpc1 .StreamingMessageEvent {
261
+ mockTM .SubscribeEvents = []jsonprotocol .StreamingMessageEvent {
262
262
{Result : & workingEvent },
263
263
{Result : & completedEvent },
264
264
}
265
265
mockTM .SubscribeError = nil
266
266
267
267
// Add task to mock task manager to ensure it exists
268
- mockTM .tasks ["resubscribe-task" ] = & jsonrpc1 .Task {
268
+ mockTM .tasks ["resubscribe-task" ] = & jsonprotocol .Task {
269
269
ID : "resubscribe-task" ,
270
- Status : jsonrpc1 .TaskStatus {
271
- State : jsonrpc1 .TaskStateWorking ,
270
+ Status : jsonprotocol .TaskStatus {
271
+ State : jsonprotocol .TaskStateWorking ,
272
272
Timestamp : getCurrentTimestamp (),
273
273
},
274
274
}
275
275
276
276
// Create request - resubscribe expects SSE response
277
- params := jsonrpc1 .TaskIDParams {
277
+ params := jsonprotocol .TaskIDParams {
278
278
ID : "resubscribe-task" ,
279
279
}
280
280
paramsBytes , _ := json .Marshal (params )
281
281
282
282
reqBody := jsonrpc.Request {
283
283
Message : jsonrpc.Message {JSONRPC : "2.0" , ID : "req-resub-1" },
284
- Method : jsonrpc1 .MethodTasksResubscribe ,
284
+ Method : jsonprotocol .MethodTasksResubscribe ,
285
285
Params : json .RawMessage (paramsBytes ),
286
286
}
287
287
reqBytes , _ := json .Marshal (reqBody )
@@ -317,14 +317,14 @@ func TestA2AServer_Resubscribe(t *testing.T) {
317
317
mockTM .SubscribeError = taskmanager .ErrTaskNotFound ("nonexistent-task" )
318
318
319
319
// Create request
320
- params := jsonrpc1 .TaskIDParams {
320
+ params := jsonprotocol .TaskIDParams {
321
321
ID : "nonexistent-task" ,
322
322
}
323
323
324
324
resp := performJSONRPCRequest (
325
325
t ,
326
326
testServer ,
327
- jsonrpc1 .MethodTasksResubscribe ,
327
+ jsonprotocol .MethodTasksResubscribe ,
328
328
params ,
329
329
"req-resub-err" ,
330
330
)
0 commit comments