@@ -26,7 +26,7 @@ func TestAccTemplateResource(t *testing.T) {
2626 t .Skip ("Acceptance tests are disabled." )
2727 }
2828 ctx := context .Background ()
29- client := integration .StartCoder (ctx , t , "template_acc" , true )
29+ client := integration .StartCoder (ctx , t , "template_acc" , false )
3030 firstUser , err := client .User (ctx , codersdk .Me )
3131 require .NoError (t , err )
3232
@@ -51,31 +51,15 @@ func TestAccTemplateResource(t *testing.T) {
5151 },
5252 },
5353 ACL : testAccTemplateACLConfig {
54- GroupACL : []testAccTemplateKeyValueConfig {
55- {
56- Key : PtrTo (firstUser .OrganizationIDs [0 ].String ()),
57- Value : PtrTo ("use" ),
58- },
59- },
54+ null : true ,
6055 },
6156 }
6257
6358 cfg2 := cfg1
6459 cfg2 .Versions = slices .Clone (cfg2 .Versions )
6560 cfg2 .Name = PtrTo ("example-template-new" )
66- cfg2 .AllowUserAutostart = PtrTo (false )
6761 cfg2 .Versions [0 ].Directory = & exTemplateTwo
6862 cfg2 .Versions [0 ].Name = PtrTo ("new" )
69- cfg2 .ACL .UserACL = []testAccTemplateKeyValueConfig {
70- {
71- Key : PtrTo (firstUser .ID .String ()),
72- Value : PtrTo ("admin" ),
73- },
74- }
75- cfg2 .AutostopRequirement = testAccAutostopRequirementConfig {
76- DaysOfWeek : PtrTo ([]string {"monday" , "tuesday" }),
77- Weeks : PtrTo (int64 (2 )),
78- }
7963
8064 cfg3 := cfg2
8165 cfg3 .Versions = slices .Clone (cfg3 .Versions )
@@ -103,9 +87,6 @@ func TestAccTemplateResource(t *testing.T) {
10387 cfg6 := cfg4
10488 cfg6 .Versions = slices .Clone (cfg6 .Versions [1 :])
10589
106- cfg7 := cfg6
107- cfg7 .ACL .null = true
108-
10990 resource .Test (t , resource.TestCase {
11091 PreCheck : func () { testAccPreCheck (t ) },
11192 IsUnitTest : true ,
@@ -180,9 +161,6 @@ func TestAccTemplateResource(t *testing.T) {
180161 Check : resource .ComposeAggregateTestCheckFunc (
181162 resource .TestCheckResourceAttrSet ("coderd_template.test" , "id" ),
182163 resource .TestCheckResourceAttr ("coderd_template.test" , "name" , "example-template-new" ),
183- resource .TestCheckResourceAttr ("coderd_template.test" , "allow_user_auto_start" , "false" ),
184- resource .TestCheckResourceAttr ("coderd_template.test" , "auto_stop_requirement.days_of_week.#" , "2" ),
185- resource .TestCheckResourceAttr ("coderd_template.test" , "auto_stop_requirement.weeks" , "2" ),
186164 resource .TestMatchTypeSetElemNestedAttrs ("coderd_template.test" , "versions.*" , map [string ]* regexp.Regexp {
187165 "name" : regexp .MustCompile ("new" ),
188166 }),
@@ -244,14 +222,6 @@ func TestAccTemplateResource(t *testing.T) {
244222 }),
245223 ),
246224 },
247- // Unmanaged ACL
248- {
249- Config : cfg7 .String (t ),
250- Check : resource .ComposeAggregateTestCheckFunc (
251- resource .TestCheckNoResourceAttr ("coderd_template.test" , "acl" ),
252- testAccCheckNumTemplateVersions (ctx , client , 5 ),
253- ),
254- },
255225 // Resource deleted
256226 },
257227 })
@@ -285,6 +255,9 @@ func TestAccTemplateResource(t *testing.T) {
285255 },
286256 },
287257 },
258+ ACL : testAccTemplateACLConfig {
259+ null : true ,
260+ },
288261 }
289262
290263 cfg2 := cfg1
@@ -367,6 +340,122 @@ func TestAccTemplateResource(t *testing.T) {
367340 })
368341}
369342
343+ func TestAccTemplateResourceEnterprise (t * testing.T ) {
344+ if os .Getenv ("TF_ACC" ) == "" {
345+ t .Skip ("Acceptance tests are disabled." )
346+ }
347+ ctx := context .Background ()
348+ client := integration .StartCoder (ctx , t , "template_acc" , true )
349+ firstUser , err := client .User (ctx , codersdk .Me )
350+ require .NoError (t , err )
351+
352+ cfg1 := testAccTemplateResourceConfig {
353+ URL : client .URL .String (),
354+ Token : client .SessionToken (),
355+ Name : PtrTo ("example-template" ),
356+ Versions : []testAccTemplateVersionConfig {
357+ {
358+ // Auto-generated version name
359+ Directory : PtrTo ("../../integration/template-test/example-template" ),
360+ Active : PtrTo (true ),
361+ // TODO(ethanndickson): Remove this when we add in `*.tfvars` parsing
362+ TerraformVariables : []testAccTemplateKeyValueConfig {
363+ {
364+ Key : PtrTo ("name" ),
365+ Value : PtrTo ("world" ),
366+ },
367+ },
368+ },
369+ },
370+ ACL : testAccTemplateACLConfig {
371+ GroupACL : []testAccTemplateKeyValueConfig {
372+ {
373+ Key : PtrTo (firstUser .OrganizationIDs [0 ].String ()),
374+ Value : PtrTo ("use" ),
375+ },
376+ },
377+ UserACL : []testAccTemplateKeyValueConfig {
378+ {
379+ Key : PtrTo (firstUser .ID .String ()),
380+ Value : PtrTo ("admin" ),
381+ },
382+ },
383+ },
384+ }
385+
386+ cfg2 := cfg1
387+ cfg2 .ACL .null = true
388+
389+ cfg3 := cfg2
390+ cfg3 .AllowUserAutostart = PtrTo (false )
391+ cfg3 .AutostopRequirement = testAccAutostopRequirementConfig {
392+ DaysOfWeek : PtrTo ([]string {"monday" , "tuesday" }),
393+ Weeks : PtrTo (int64 (2 )),
394+ }
395+
396+ resource .Test (t , resource.TestCase {
397+ PreCheck : func () { testAccPreCheck (t ) },
398+ IsUnitTest : true ,
399+ ProtoV6ProviderFactories : testAccProtoV6ProviderFactories ,
400+ Steps : []resource.TestStep {
401+ {
402+ Config : cfg1 .String (t ),
403+ Check : resource .ComposeAggregateTestCheckFunc (
404+ resource .TestCheckResourceAttr ("coderd_template.test" , "acl.groups.#" , "1" ),
405+ resource .TestMatchTypeSetElemNestedAttrs ("coderd_template.test" , "acl.groups.*" , map [string ]* regexp.Regexp {
406+ "id" : regexp .MustCompile (".+" ),
407+ "role" : regexp .MustCompile ("^use$" ),
408+ }),
409+ resource .TestMatchTypeSetElemNestedAttrs ("coderd_template.test" , "acl.users.*" , map [string ]* regexp.Regexp {
410+ "id" : regexp .MustCompile (".+" ),
411+ "role" : regexp .MustCompile ("^admin$" ),
412+ }),
413+ ),
414+ },
415+ {
416+ Config : cfg2 .String (t ),
417+ Check : resource .ComposeAggregateTestCheckFunc (
418+ resource .TestCheckNoResourceAttr ("coderd_template.test" , "acl" ),
419+ func (s * terraform.State ) error {
420+ templates , err := client .Templates (ctx , codersdk.TemplateFilter {})
421+ if err != nil {
422+ return err
423+ }
424+ if len (templates ) != 1 {
425+ return fmt .Errorf ("expected 1 template, got %d" , len (templates ))
426+ }
427+ acl , err := client .TemplateACL (ctx , templates [0 ].ID )
428+ if err != nil {
429+ return err
430+ }
431+ if len (acl .Groups ) != 1 {
432+ return fmt .Errorf ("expected 1 group ACL, got %d" , len (acl .Groups ))
433+ }
434+ if acl .Groups [0 ].Role != "use" && acl .Groups [0 ].ID != firstUser .OrganizationIDs [0 ] {
435+ return fmt .Errorf ("expected group ACL to be 'use' for %s, got %s" , firstUser .OrganizationIDs [0 ].String (), acl .Groups [0 ].Role )
436+ }
437+ if len (acl .Users ) != 1 {
438+ return fmt .Errorf ("expected 1 user ACL, got %d" , len (acl .Users ))
439+ }
440+ if acl .Users [0 ].Role != "admin" && acl .Users [0 ].ID != firstUser .ID {
441+ return fmt .Errorf ("expected user ACL to be 'admin' for %s, got %s" , firstUser .ID .String (), acl .Users [0 ].Role )
442+ }
443+ return nil
444+ },
445+ ),
446+ },
447+ {
448+ Config : cfg3 .String (t ),
449+ Check : resource .ComposeAggregateTestCheckFunc (
450+ resource .TestCheckResourceAttr ("coderd_template.test" , "allow_user_auto_start" , "false" ),
451+ resource .TestCheckResourceAttr ("coderd_template.test" , "auto_stop_requirement.days_of_week.#" , "2" ),
452+ resource .TestCheckResourceAttr ("coderd_template.test" , "auto_stop_requirement.weeks" , "2" ),
453+ ),
454+ },
455+ },
456+ })
457+ }
458+
370459func TestAccTemplateResourceAGPL (t * testing.T ) {
371460 if os .Getenv ("TF_ACC" ) == "" {
372461 t .Skip ("Acceptance tests are disabled." )
0 commit comments