MCPcopy Index your code
hub / github.com/coder/agentapi / TestE2E

Function TestE2E

e2e/echo_test.go:35–301  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

33}
34
35func 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, &params{
92 cmdFn: func(ctx context.Context, t testing.TB, serverPort int, binaryPath, cwd, scriptFilePath string) (string, []string) {

Callers

nothing calls this directly

Calls 4

setupFunction · 0.85
waitAgentAPIStableFunction · 0.85
defaultCmdFnFunction · 0.85
waitForMessagesWithCountFunction · 0.85

Tested by

no test coverage detected