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

Function TestScheduleStart_TemplateAutostartRequirement

cli/schedule_test.go:389–450  ·  view source on GitHub ↗

nolint:paralleltest // t.Setenv

(t *testing.T)

Source from the content-addressed store, hash-verified

387
388//nolint:paralleltest // t.Setenv
389func TestScheduleStart_TemplateAutostartRequirement(t *testing.T) {
390 t.Setenv("TZ", "UTC")
391 loc, err := tz.TimezoneIANA()
392 require.NoError(t, err)
393 require.Equal(t, "UTC", loc.String())
394
395 client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
396 user := coderdtest.CreateFirstUser(t, client)
397
398 version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
399 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
400 template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
401
402 // Update template to have autostart requirement
403 // Note: In AGPL, this will be ignored and all days will be allowed (enterprise feature).
404 template, err = client.UpdateTemplateMeta(context.Background(), template.ID, codersdk.UpdateTemplateMeta{
405 AutostartRequirement: &codersdk.TemplateAutostartRequirement{
406 DaysOfWeek: []string{"monday", "wednesday", "friday"},
407 },
408 })
409 require.NoError(t, err)
410
411 // Verify the template - in AGPL, AutostartRequirement will have all days (enterprise feature)
412 template, err = client.Template(context.Background(), template.ID)
413 require.NoError(t, err)
414 require.NotEmpty(t, template.AutostartRequirement.DaysOfWeek, "template should have autostart requirement days")
415
416 workspace := coderdtest.CreateWorkspace(t, client, template.ID)
417 coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
418
419 t.Run("ShowsWarning", func(t *testing.T) {
420 // When: user sets autostart schedule
421 inv, root := clitest.New(t,
422 "schedule", "start", workspace.Name, "9:30AM", "Mon-Fri",
423 )
424 clitest.SetupConfig(t, client, root)
425 pty := ptytest.New(t).Attach(inv)
426 require.NoError(t, inv.Run())
427
428 // Then: warning should be shown
429 // In AGPL, this will show all days (enterprise feature defaults to all days allowed)
430 pty.ExpectMatch("Warning")
431 pty.ExpectMatch("may only autostart")
432 })
433
434 t.Run("NoWarningWhenManual", func(t *testing.T) {
435 // When: user sets manual schedule
436 inv, root := clitest.New(t,
437 "schedule", "start", workspace.Name, "manual",
438 )
439 clitest.SetupConfig(t, client, root)
440
441 var stderrBuf bytes.Buffer
442 inv.Stderr = &stderrBuf
443
444 require.NoError(t, inv.Run())
445
446 // Then: no warning should be shown on stderr

Callers

nothing calls this directly

Calls 15

TimezoneIANAFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
NewFunction · 0.92
SetupConfigFunction · 0.92
NewFunction · 0.92
SetenvMethod · 0.80

Tested by

no test coverage detected