Skip to content

Commit b4bf24f

Browse files
committed
add a test
1 parent 8c08116 commit b4bf24f

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

cli/start_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,3 +219,77 @@ func TestStartWithParameters(t *testing.T) {
219219
})
220220
})
221221
}
222+
223+
// TestStartAutoUpdate also tests restart since the flows are virtually identical.
224+
func TestStartAutoUpdate(t *testing.T) {
225+
t.Parallel()
226+
227+
const (
228+
stringParameterName = "myparam"
229+
stringParameterValue = "abc"
230+
)
231+
232+
stringRichParameters := []*proto.RichParameter{
233+
{Name: stringParameterName, Type: "string", Mutable: true, Required: true},
234+
}
235+
236+
type testcase struct {
237+
Name string
238+
Cmd string
239+
}
240+
241+
cases := []testcase{
242+
{
243+
Name: "StartOK",
244+
Cmd: "start",
245+
},
246+
{
247+
Name: "RestartOK",
248+
Cmd: "restart",
249+
},
250+
}
251+
252+
for _, c := range cases {
253+
c := c
254+
t.Run(c.Name, func(t *testing.T) {
255+
t.Parallel()
256+
257+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
258+
owner := coderdtest.CreateFirstUser(t, client)
259+
member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
260+
version1 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
261+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version1.ID)
262+
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version1.ID)
263+
workspace := coderdtest.CreateWorkspace(t, member, owner.OrganizationID, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) {
264+
cwr.AutomaticUpdates = codersdk.AutomaticUpdatesAlways
265+
})
266+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
267+
268+
if c.Cmd == "start" {
269+
coderdtest.MustTransitionWorkspace(t, member, workspace.ID, database.WorkspaceTransitionStart, database.WorkspaceTransitionStop)
270+
}
271+
version2 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, prepareEchoResponses(stringRichParameters), func(ctvr *codersdk.CreateTemplateVersionRequest) {
272+
ctvr.TemplateID = template.ID
273+
})
274+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version2.ID)
275+
coderdtest.UpdateActiveTemplateVersion(t, client, template.ID, version2.ID)
276+
277+
inv, root := clitest.New(t, c.Cmd, "-y", workspace.Name)
278+
clitest.SetupConfig(t, member, root)
279+
doneChan := make(chan struct{})
280+
pty := ptytest.New(t).Attach(inv)
281+
go func() {
282+
defer close(doneChan)
283+
err := inv.Run()
284+
assert.NoError(t, err)
285+
}()
286+
287+
pty.ExpectMatch(stringParameterName)
288+
pty.WriteLine(stringParameterValue)
289+
<-doneChan
290+
291+
workspace = coderdtest.MustWorkspace(t, member, workspace.ID)
292+
require.Equal(t, version2.ID, workspace.LatestBuild.TemplateVersionID)
293+
})
294+
}
295+
}

0 commit comments

Comments
 (0)