@@ -640,11 +640,50 @@ func TestWorkspaceBuildStatus(t *testing.T) {
640
640
func TestWorkspaceBuildDebugMode (t * testing.T ) {
641
641
t .Parallel ()
642
642
643
+ t .Run ("DebugModeDisabled" , func (t * testing.T ) {
644
+ t .Parallel ()
645
+
646
+ // Create user
647
+ deploymentValues := coderdtest .DeploymentValues (t )
648
+ deploymentValues .EnableTerraformDebugMode = false
649
+
650
+ adminClient := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true , DeploymentValues : deploymentValues })
651
+ owner := coderdtest .CreateFirstUser (t , adminClient )
652
+
653
+ // Template author: create a template
654
+ version := coderdtest .CreateTemplateVersion (t , adminClient , owner .OrganizationID , nil )
655
+ template := coderdtest .CreateTemplate (t , adminClient , owner .OrganizationID , version .ID )
656
+ coderdtest .AwaitTemplateVersionJob (t , adminClient , version .ID )
657
+
658
+ // Template author: create a workspace
659
+ workspace := coderdtest .CreateWorkspace (t , adminClient , owner .OrganizationID , template .ID )
660
+ coderdtest .AwaitWorkspaceBuildJob (t , adminClient , workspace .LatestBuild .ID )
661
+
662
+ // Template author: try to start a workspace build in debug mode
663
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
664
+ defer cancel ()
665
+
666
+ _ , err := adminClient .CreateWorkspaceBuild (ctx , workspace .ID , codersdk.CreateWorkspaceBuildRequest {
667
+ TemplateVersionID : workspace .LatestBuild .TemplateVersionID ,
668
+ Transition : codersdk .WorkspaceTransitionStart ,
669
+ LogLevel : "debug" ,
670
+ })
671
+
672
+ // Template author: expect an error as the debug mode is disabled
673
+ require .NotNil (t , err )
674
+ var sdkError * codersdk.Error
675
+ isSdkError := xerrors .As (err , & sdkError )
676
+ require .True (t , isSdkError )
677
+ require .Contains (t , sdkError .Message , "Terraform debug mode is disabled in the deployment configuration." )
678
+ })
643
679
t .Run ("AsRegularUser" , func (t * testing.T ) {
644
680
t .Parallel ()
645
681
646
682
// Create users
647
- templateAuthorClient := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
683
+ deploymentValues := coderdtest .DeploymentValues (t )
684
+ deploymentValues .EnableTerraformDebugMode = true
685
+
686
+ templateAuthorClient := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true , DeploymentValues : deploymentValues })
648
687
templateAuthor := coderdtest .CreateFirstUser (t , templateAuthorClient )
649
688
regularUserClient , _ := coderdtest .CreateAnotherUser (t , templateAuthorClient , templateAuthor .OrganizationID )
650
689
@@ -672,15 +711,54 @@ func TestWorkspaceBuildDebugMode(t *testing.T) {
672
711
var sdkError * codersdk.Error
673
712
isSdkError := xerrors .As (err , & sdkError )
674
713
require .True (t , isSdkError )
675
- require .Contains (t , sdkError .Message , "Workspace builds with a custom log level are restricted to template authors only." )
714
+ require .Contains (t , sdkError .Message , "Workspace builds with a custom log level are restricted to administrators only." )
676
715
})
677
716
t .Run ("AsTemplateAuthor" , func (t * testing.T ) {
678
717
t .Parallel ()
679
718
680
719
// Create users
681
- adminClient := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
720
+ deploymentValues := coderdtest .DeploymentValues (t )
721
+ deploymentValues .EnableTerraformDebugMode = true
722
+
723
+ adminClient := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true , DeploymentValues : deploymentValues })
724
+ admin := coderdtest .CreateFirstUser (t , adminClient )
725
+ templateAuthorClient , _ := coderdtest .CreateAnotherUser (t , adminClient , admin .OrganizationID , rbac .RoleTemplateAdmin ())
726
+
727
+ // Template author: create a template
728
+ version := coderdtest .CreateTemplateVersion (t , templateAuthorClient , admin .OrganizationID , nil )
729
+ template := coderdtest .CreateTemplate (t , templateAuthorClient , admin .OrganizationID , version .ID )
730
+ coderdtest .AwaitTemplateVersionJob (t , templateAuthorClient , version .ID )
731
+
732
+ // Template author: create a workspace
733
+ workspace := coderdtest .CreateWorkspace (t , templateAuthorClient , admin .OrganizationID , template .ID )
734
+ coderdtest .AwaitWorkspaceBuildJob (t , templateAuthorClient , workspace .LatestBuild .ID )
735
+
736
+ // Template author: try to start a workspace build in debug mode
737
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
738
+ defer cancel ()
739
+
740
+ _ , err := templateAuthorClient .CreateWorkspaceBuild (ctx , workspace .ID , codersdk.CreateWorkspaceBuildRequest {
741
+ TemplateVersionID : workspace .LatestBuild .TemplateVersionID ,
742
+ Transition : codersdk .WorkspaceTransitionStart ,
743
+ LogLevel : "debug" ,
744
+ })
745
+
746
+ // Template author: expect an error as the debug mode is disabled
747
+ require .NotNil (t , err )
748
+ var sdkError * codersdk.Error
749
+ isSdkError := xerrors .As (err , & sdkError )
750
+ require .True (t , isSdkError )
751
+ require .Contains (t , sdkError .Message , "Workspace builds with a custom log level are restricted to administrators only." )
752
+ })
753
+ t .Run ("AsAdmin" , func (t * testing.T ) {
754
+ t .Parallel ()
755
+
756
+ // Create users
757
+ deploymentValues := coderdtest .DeploymentValues (t )
758
+ deploymentValues .EnableTerraformDebugMode = true
759
+
760
+ adminClient := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true , DeploymentValues : deploymentValues })
682
761
admin := coderdtest .CreateFirstUser (t , adminClient )
683
- templateAdminClient , _ := coderdtest .CreateAnotherUser (t , adminClient , admin .OrganizationID , rbac .RoleTemplateAdmin ())
684
762
685
763
// Interact as template admin
686
764
echoResponses := & echo.Responses {
@@ -713,30 +791,30 @@ func TestWorkspaceBuildDebugMode(t *testing.T) {
713
791
},
714
792
}},
715
793
}
716
- version := coderdtest .CreateTemplateVersion (t , templateAdminClient , admin .OrganizationID , echoResponses )
717
- template := coderdtest .CreateTemplate (t , templateAdminClient , admin .OrganizationID , version .ID )
718
- coderdtest .AwaitTemplateVersionJob (t , templateAdminClient , version .ID )
794
+ version := coderdtest .CreateTemplateVersion (t , adminClient , admin .OrganizationID , echoResponses )
795
+ template := coderdtest .CreateTemplate (t , adminClient , admin .OrganizationID , version .ID )
796
+ coderdtest .AwaitTemplateVersionJob (t , adminClient , version .ID )
719
797
720
798
// Create workspace
721
- workspace := coderdtest .CreateWorkspace (t , templateAdminClient , admin .OrganizationID , template .ID )
722
- coderdtest .AwaitWorkspaceBuildJob (t , templateAdminClient , workspace .LatestBuild .ID )
799
+ workspace := coderdtest .CreateWorkspace (t , adminClient , admin .OrganizationID , template .ID )
800
+ coderdtest .AwaitWorkspaceBuildJob (t , adminClient , workspace .LatestBuild .ID )
723
801
724
802
// Create workspace build
725
803
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
726
804
defer cancel ()
727
805
728
- build , err := templateAdminClient .CreateWorkspaceBuild (ctx , workspace .ID , codersdk.CreateWorkspaceBuildRequest {
806
+ build , err := adminClient .CreateWorkspaceBuild (ctx , workspace .ID , codersdk.CreateWorkspaceBuildRequest {
729
807
TemplateVersionID : workspace .LatestBuild .TemplateVersionID ,
730
808
Transition : codersdk .WorkspaceTransitionStart ,
731
809
ProvisionerState : []byte (" " ),
732
810
LogLevel : "debug" ,
733
811
})
734
812
require .Nil (t , err )
735
813
736
- build = coderdtest .AwaitWorkspaceBuildJob (t , templateAdminClient , build .ID )
814
+ build = coderdtest .AwaitWorkspaceBuildJob (t , adminClient , build .ID )
737
815
738
816
// Watch for incoming logs
739
- logs , closer , err := templateAdminClient .WorkspaceBuildLogsAfter (ctx , build .ID , 0 )
817
+ logs , closer , err := adminClient .WorkspaceBuildLogsAfter (ctx , build .ID , 0 )
740
818
require .NoError (t , err )
741
819
defer closer .Close ()
742
820
0 commit comments