MCPcopy Index your code
hub / github.com/coder/coder / TestStartUseParameterDefaults

Function TestStartUseParameterDefaults

cli/start_test.go:334–388  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

332}
333
334func TestStartUseParameterDefaults(t *testing.T) {
335 t.Parallel()
336
337 client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
338 owner := coderdtest.CreateFirstUser(t, client)
339 member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
340
341 // Create a template with no parameters and a workspace that
342 // auto-updates so `start` picks up the new active version.
343 version1 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
344 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version1.ID)
345 template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version1.ID)
346 workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) {
347 cwr.AutomaticUpdates = codersdk.AutomaticUpdatesAlways
348 })
349 coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
350
351 // Stop the workspace.
352 coderdtest.MustTransitionWorkspace(t, member, workspace.ID,
353 codersdk.WorkspaceTransitionStart, codersdk.WorkspaceTransitionStop)
354
355 // Push a new template version that adds a parameter with a default.
356 version2 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID,
357 prepareEchoResponses([]*proto.RichParameter{
358 {Name: "new_param", Type: "string", Mutable: true, DefaultValue: "foobar"},
359 }), func(ctvr *codersdk.CreateTemplateVersionRequest) {
360 ctvr.TemplateID = template.ID
361 })
362 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version2.ID)
363 ctx := testutil.Context(t, testutil.WaitLong)
364 err := client.UpdateActiveTemplateVersion(ctx, template.ID, codersdk.UpdateActiveTemplateVersion{ID: version2.ID})
365 require.NoError(t, err)
366
367 // Start the workspace with --use-parameter-defaults.
368 // The new parameter should be auto-accepted.
369 inv, root := clitest.New(t, "start", workspace.Name, "--use-parameter-defaults")
370 clitest.SetupConfig(t, member, root)
371 pty := ptytest.New(t).Attach(inv)
372 doneChan := make(chan struct{})
373 go func() {
374 defer close(doneChan)
375 err := inv.Run()
376 assert.NoError(t, err)
377 }()
378
379 pty.ExpectMatchContext(ctx, "workspace has been started")
380 _ = testutil.TryReceive(ctx, t, doneChan)
381
382 // Verify the new parameter was resolved to its default.
383 ws, err := member.WorkspaceByOwnerAndName(ctx, codersdk.Me, workspace.Name, codersdk.WorkspaceOptions{})
384 require.NoError(t, err)
385 buildParams, err := member.WorkspaceBuildParameters(ctx, ws.LatestBuild.ID)
386 require.NoError(t, err)
387 assert.Contains(t, buildParams, codersdk.WorkspaceBuildParameter{Name: "new_param", Value: "foobar"})
388}
389
390// TestStartAutoUpdate also tests restart since the flows are virtually identical.
391func TestStartAutoUpdate(t *testing.T) {

Callers

nothing calls this directly

Calls 15

NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
MustTransitionWorkspaceFunction · 0.92
ContextFunction · 0.92
NewFunction · 0.92
SetupConfigFunction · 0.92

Tested by

no test coverage detected