package client import ( "net/http" "net/http/httptest" "testing" "github.com/coder/websocket" "github.com/stretchr/testify/require" ) func TestExecSessionBuildsReconnectableQuery(t *testing.T) { var query map[string][]string server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { query = request.URL.Query() conn, err := websocket.Accept(writer, request, nil) require.NoError(t, err) defer conn.CloseNow() })) defer server.Close() devClient, err := New(WithAddress(server.URL)) require.NoError(t, err) conn, err := devClient.VMs().ExecSession(t.Context(), "vm", ExecSessionOptions{ Command: "echo hello", Interactive: true, TTY: true, Rows: 24, Cols: 80, Env: map[string]string{"GREETING": "hello"}, Workdir: "/tmp", WaitSeconds: 7, Session: "resume-me", }) require.NoError(t, err) defer conn.CloseNow() require.Equal(t, []string{"echo hello"}, query["command"]) require.Equal(t, []string{"true"}, query["interactive"]) require.Equal(t, []string{"true"}, query["tty"]) require.Equal(t, []string{"24"}, query["rows"]) require.Equal(t, []string{"80"}, query["cols"]) require.Equal(t, []string{"hello"}, query["env[GREETING]"]) require.Equal(t, []string{"/tmp"}, query["workdir"]) require.Equal(t, []string{"7"}, query["wait"]) require.Equal(t, []string{"resume-me"}, query["session"]) }