@@ -42,6 +42,7 @@ import (
42
42
"github.com/coder/coder/v2/provisioner/echo"
43
43
"github.com/coder/coder/v2/provisionersdk/proto"
44
44
"github.com/coder/coder/v2/testutil"
45
+ "github.com/coder/terraform-provider-coder/v2/provider"
45
46
)
46
47
47
48
func TestWorkspace (t * testing.T ) {
@@ -3634,6 +3635,72 @@ func TestWorkspaceWithRichParameters(t *testing.T) {
3634
3635
require .ElementsMatch (t , expectedBuildParameters , workspaceBuildParameters )
3635
3636
}
3636
3637
3638
+ func TestWorkspaceWithMultiSelectFailure (t * testing.T ) {
3639
+ t .Parallel ()
3640
+
3641
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
3642
+ user := coderdtest .CreateFirstUser (t , client )
3643
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
3644
+ Parse : echo .ParseComplete ,
3645
+ ProvisionPlan : []* proto.Response {
3646
+ {
3647
+ Type : & proto.Response_Plan {
3648
+ Plan : & proto.PlanComplete {
3649
+ Parameters : []* proto.RichParameter {
3650
+ {
3651
+ Name : "param" ,
3652
+ Type : provider .OptionTypeListString ,
3653
+ DefaultValue : `["red"]` ,
3654
+ Options : []* proto.RichParameterOption {
3655
+ {
3656
+ Name : "red" ,
3657
+ Value : "red" ,
3658
+ },
3659
+ },
3660
+ FormType : string (provider .ParameterFormTypeMultiSelect ),
3661
+ },
3662
+ },
3663
+ },
3664
+ },
3665
+ },
3666
+ },
3667
+ ProvisionApply : []* proto.Response {{
3668
+ Type : & proto.Response_Apply {
3669
+ Apply : & proto.ApplyComplete {},
3670
+ },
3671
+ }},
3672
+ })
3673
+ coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
3674
+
3675
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
3676
+ defer cancel ()
3677
+
3678
+ templateRichParameters , err := client .TemplateVersionRichParameters (ctx , version .ID )
3679
+ require .NoError (t , err )
3680
+ require .Len (t , templateRichParameters , 1 )
3681
+
3682
+ expectedBuildParameters := []codersdk.WorkspaceBuildParameter {
3683
+ // purple is not in the response set
3684
+ {Name : "param" , Value : `["red", "purple"]` },
3685
+ }
3686
+
3687
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
3688
+ req := codersdk.CreateWorkspaceRequest {
3689
+ TemplateID : template .ID ,
3690
+ Name : coderdtest .RandomUsername (t ),
3691
+ AutostartSchedule : ptr .Ref ("CRON_TZ=US/Central 30 9 * * 1-5" ),
3692
+ TTLMillis : ptr .Ref ((8 * time .Hour ).Milliseconds ()),
3693
+ AutomaticUpdates : codersdk .AutomaticUpdatesNever ,
3694
+ RichParameterValues : expectedBuildParameters ,
3695
+ }
3696
+
3697
+ _ , err = client .CreateUserWorkspace (context .Background (), codersdk .Me , req )
3698
+ require .Error (t , err )
3699
+ var apiError * codersdk.Error
3700
+ require .ErrorAs (t , err , & apiError )
3701
+ require .Equal (t , http .StatusBadRequest , apiError .StatusCode ())
3702
+ }
3703
+
3637
3704
func TestWorkspaceWithOptionalRichParameters (t * testing.T ) {
3638
3705
t .Parallel ()
3639
3706
0 commit comments