(t *testing.T)
| 1356 | } |
| 1357 | |
| 1358 | func TestWorkspaceBuildDebugMode(t *testing.T) { |
| 1359 | t.Parallel() |
| 1360 | |
| 1361 | t.Run("DebugModeDisabled", func(t *testing.T) { |
| 1362 | t.Parallel() |
| 1363 | |
| 1364 | // Create user |
| 1365 | deploymentValues := coderdtest.DeploymentValues(t) |
| 1366 | err := deploymentValues.EnableTerraformDebugMode.Set("false") |
| 1367 | require.NoError(t, err) |
| 1368 | |
| 1369 | adminClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, DeploymentValues: deploymentValues}) |
| 1370 | owner := coderdtest.CreateFirstUser(t, adminClient) |
| 1371 | |
| 1372 | // Template author: create a template |
| 1373 | version := coderdtest.CreateTemplateVersion(t, adminClient, owner.OrganizationID, nil) |
| 1374 | template := coderdtest.CreateTemplate(t, adminClient, owner.OrganizationID, version.ID) |
| 1375 | coderdtest.AwaitTemplateVersionJobCompleted(t, adminClient, version.ID) |
| 1376 | |
| 1377 | // Template author: create a workspace |
| 1378 | workspace := coderdtest.CreateWorkspace(t, adminClient, template.ID) |
| 1379 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, adminClient, workspace.LatestBuild.ID) |
| 1380 | |
| 1381 | // Template author: try to start a workspace build in debug mode |
| 1382 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 1383 | defer cancel() |
| 1384 | |
| 1385 | _, err = adminClient.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{ |
| 1386 | TemplateVersionID: workspace.LatestBuild.TemplateVersionID, |
| 1387 | Transition: codersdk.WorkspaceTransitionStart, |
| 1388 | LogLevel: "debug", |
| 1389 | }) |
| 1390 | |
| 1391 | // Template author: expect an error as the debug mode is disabled |
| 1392 | require.NotNil(t, err) |
| 1393 | var sdkError *codersdk.Error |
| 1394 | isSdkError := xerrors.As(err, &sdkError) |
| 1395 | require.True(t, isSdkError) |
| 1396 | require.Contains(t, sdkError.Message, "Terraform debug mode is disabled in the deployment configuration.") |
| 1397 | }) |
| 1398 | t.Run("AsRegularUser", func(t *testing.T) { |
| 1399 | t.Parallel() |
| 1400 | |
| 1401 | // Create users |
| 1402 | deploymentValues := coderdtest.DeploymentValues(t) |
| 1403 | deploymentValues.EnableTerraformDebugMode = true |
| 1404 | |
| 1405 | templateAuthorClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, DeploymentValues: deploymentValues}) |
| 1406 | templateAuthor := coderdtest.CreateFirstUser(t, templateAuthorClient) |
| 1407 | regularUserClient, _ := coderdtest.CreateAnotherUser(t, templateAuthorClient, templateAuthor.OrganizationID) |
| 1408 | |
| 1409 | // Template owner: create a template |
| 1410 | version := coderdtest.CreateTemplateVersion(t, templateAuthorClient, templateAuthor.OrganizationID, nil) |
| 1411 | template := coderdtest.CreateTemplate(t, templateAuthorClient, templateAuthor.OrganizationID, version.ID) |
| 1412 | coderdtest.AwaitTemplateVersionJobCompleted(t, templateAuthorClient, version.ID) |
| 1413 | |
| 1414 | // Regular user: create a workspace |
| 1415 | workspace := coderdtest.CreateWorkspace(t, regularUserClient, template.ID) |
nothing calls this directly
no test coverage detected