nolint:paralleltest // t.Setenv
(t *testing.T)
| 387 | |
| 388 | //nolint:paralleltest // t.Setenv |
| 389 | func 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 |
nothing calls this directly
no test coverage detected