(t *testing.T)
| 33 | } |
| 34 | |
| 35 | func TestE2E(t *testing.T) { |
| 36 | if testing.Short() { |
| 37 | t.Skip("Skipping integration test in short mode") |
| 38 | } |
| 39 | |
| 40 | t.Run("basic", func(t *testing.T) { |
| 41 | ctx, cancel := context.WithTimeout(context.Background(), testTimeout) |
| 42 | defer cancel() |
| 43 | script, apiClient, cleanup := setup(ctx, t, nil, true) |
| 44 | defer cleanup() |
| 45 | messageReq := agentapisdk.PostMessageParams{ |
| 46 | Content: "This is a test message.", |
| 47 | Type: agentapisdk.MessageTypeUser, |
| 48 | } |
| 49 | _, err := apiClient.PostMessage(ctx, messageReq) |
| 50 | require.NoError(t, err, "Failed to send message via SDK") |
| 51 | require.NoError(t, waitAgentAPIStable(ctx, t, apiClient, operationTimeout, "post message")) |
| 52 | msgResp, err := apiClient.GetMessages(ctx) |
| 53 | require.NoError(t, err, "Failed to get messages via SDK") |
| 54 | require.Len(t, msgResp.Messages, 3) |
| 55 | require.Equal(t, script[0].ResponseMessage, strings.TrimSpace(msgResp.Messages[0].Content)) |
| 56 | require.Equal(t, script[1].ExpectMessage, strings.TrimSpace(msgResp.Messages[1].Content)) |
| 57 | require.Equal(t, script[1].ResponseMessage, strings.TrimSpace(msgResp.Messages[2].Content)) |
| 58 | }) |
| 59 | |
| 60 | t.Run("thinking", func(t *testing.T) { |
| 61 | ctx, cancel := context.WithTimeout(context.Background(), testTimeout) |
| 62 | defer cancel() |
| 63 | |
| 64 | script, apiClient, cleanup := setup(ctx, t, nil, true) |
| 65 | defer cleanup() |
| 66 | messageReq := agentapisdk.PostMessageParams{ |
| 67 | Content: "What is the answer to life, the universe, and everything?", |
| 68 | Type: agentapisdk.MessageTypeUser, |
| 69 | } |
| 70 | _, err := apiClient.PostMessage(ctx, messageReq) |
| 71 | require.NoError(t, err, "Failed to send message via SDK") |
| 72 | statusResp, err := apiClient.GetStatus(ctx) |
| 73 | require.NoError(t, err) |
| 74 | require.Equal(t, agentapisdk.StatusRunning, statusResp.Status) |
| 75 | require.NoError(t, waitAgentAPIStable(ctx, t, apiClient, 5*time.Second, "post message")) |
| 76 | msgResp, err := apiClient.GetMessages(ctx) |
| 77 | require.NoError(t, err, "Failed to get messages via SDK") |
| 78 | require.Len(t, msgResp.Messages, 3) |
| 79 | require.Equal(t, script[0].ResponseMessage, strings.TrimSpace(msgResp.Messages[0].Content)) |
| 80 | require.Equal(t, script[1].ExpectMessage, strings.TrimSpace(msgResp.Messages[1].Content)) |
| 81 | parts := strings.Split(msgResp.Messages[2].Content, "\n") |
| 82 | require.Len(t, parts, 2) |
| 83 | require.Equal(t, script[1].ResponseMessage, strings.TrimSpace(parts[0])) |
| 84 | require.Equal(t, script[2].ResponseMessage, strings.TrimSpace(parts[1])) |
| 85 | }) |
| 86 | |
| 87 | t.Run("stdin", func(t *testing.T) { |
| 88 | ctx, cancel := context.WithTimeout(context.Background(), testTimeout) |
| 89 | defer cancel() |
| 90 | |
| 91 | script, apiClient, cleanup := setup(ctx, t, ¶ms{ |
| 92 | cmdFn: func(ctx context.Context, t testing.TB, serverPort int, binaryPath, cwd, scriptFilePath string) (string, []string) { |
nothing calls this directly
no test coverage detected