Skip to content

Commit 009a534

Browse files
committed
unit tests for start
1 parent fdea6b2 commit 009a534

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

cli/start_test.go

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package cli_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
8+
"github.com/coder/coder/cli/clitest"
9+
"github.com/coder/coder/coderd/coderdtest"
10+
"github.com/coder/coder/provisioner/echo"
11+
"github.com/coder/coder/provisionersdk/proto"
12+
"github.com/coder/coder/pty/ptytest"
13+
)
14+
15+
const (
16+
ephemeralParameterName = "ephemeral_parameter"
17+
ephemeralParameterDescription = "This is ephemeral parameter"
18+
ephemeralParameterValue = "3"
19+
)
20+
21+
func TestStart(t *testing.T) {
22+
t.Parallel()
23+
24+
echoResponses := &echo.Responses{
25+
Parse: echo.ParseComplete,
26+
ProvisionPlan: []*proto.Provision_Response{
27+
{
28+
Type: &proto.Provision_Response_Complete{
29+
Complete: &proto.Provision_Complete{
30+
Parameters: []*proto.RichParameter{
31+
{
32+
Name: ephemeralParameterName,
33+
Description: ephemeralParameterDescription,
34+
Mutable: true,
35+
Ephemeral: true,
36+
},
37+
},
38+
},
39+
},
40+
},
41+
},
42+
ProvisionApply: []*proto.Provision_Response{{
43+
Type: &proto.Provision_Response_Complete{
44+
Complete: &proto.Provision_Complete{},
45+
},
46+
}},
47+
}
48+
49+
t.Run("BuildOptions", func(t *testing.T) {
50+
t.Parallel()
51+
52+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
53+
user := coderdtest.CreateFirstUser(t, client)
54+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, echoResponses)
55+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
56+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
57+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
58+
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
59+
60+
inv, root := clitest.New(t, "start", workspace.Name, "--build-options")
61+
clitest.SetupConfig(t, client, root)
62+
doneChan := make(chan struct{})
63+
pty := ptytest.New(t).Attach(inv)
64+
go func() {
65+
defer close(doneChan)
66+
err := inv.Run()
67+
assert.NoError(t, err)
68+
}()
69+
70+
matches := []string{
71+
ephemeralParameterDescription, ephemeralParameterValue,
72+
"workspace has been started", "",
73+
}
74+
for i := 0; i < len(matches); i += 2 {
75+
match := matches[i]
76+
value := matches[i+1]
77+
pty.ExpectMatch(match)
78+
79+
if value != "" {
80+
pty.WriteLine(value)
81+
}
82+
}
83+
<-doneChan
84+
})
85+
}

0 commit comments

Comments
 (0)