(t *testing.T)
| 189 | } |
| 190 | |
| 191 | func TestServer_HandleRequest_TasksCancel(t *testing.T) { |
| 192 | // 创建 Actor 系统 |
| 193 | system := actor.NewSystem("test-a2a") |
| 194 | defer system.Shutdown() |
| 195 | |
| 196 | // 创建 A2A 服务器 |
| 197 | taskStore := NewInMemoryTaskStore() |
| 198 | server := NewServer(system, taskStore) |
| 199 | |
| 200 | agentID := "test-agent" |
| 201 | |
| 202 | // 创建一个任务 |
| 203 | task := NewTask("task-1", "context-1") |
| 204 | task.UpdateStatus(TaskStateWorking, nil) |
| 205 | require.NoError(t, taskStore.Save(agentID, task)) |
| 206 | |
| 207 | // 构造 tasks/cancel 请求 |
| 208 | params := TasksCancelParams{ |
| 209 | TaskID: task.ID, |
| 210 | } |
| 211 | paramsJSON, _ := json.Marshal(params) |
| 212 | |
| 213 | req := &JSONRPCRequest{ |
| 214 | JSONRPC: "2.0", |
| 215 | ID: "req-1", |
| 216 | Method: "tasks/cancel", |
| 217 | Params: json.RawMessage(paramsJSON), |
| 218 | } |
| 219 | |
| 220 | // 处理请求 |
| 221 | ctx := context.Background() |
| 222 | resp := server.HandleRequest(ctx, agentID, req) |
| 223 | |
| 224 | // 验证响应 |
| 225 | require.NotNil(t, resp) |
| 226 | assert.Nil(t, resp.Error) |
| 227 | assert.NotNil(t, resp.Result) |
| 228 | |
| 229 | // 验证取消标记已设置 |
| 230 | canceled := taskStore.IsCanceled(task.ID) |
| 231 | assert.True(t, canceled) |
| 232 | |
| 233 | // 验证任务状态已更新 |
| 234 | updatedTask, err := taskStore.Load(agentID, task.ID) |
| 235 | require.NoError(t, err) |
| 236 | assert.Equal(t, TaskStateCanceled, updatedTask.Status.State) |
| 237 | } |
| 238 | |
| 239 | func TestServer_HandleRequest_InvalidMethod(t *testing.T) { |
| 240 | system := actor.NewSystem("test-a2a") |
nothing calls this directly
no test coverage detected