@@ -26,7 +26,7 @@ func TestAccTemplateResource(t *testing.T) {
2626t .Skip ("Acceptance tests are disabled." )
2727}
2828ctx := context .Background ()
29- client := integration .StartCoder (ctx ,t ,"template_acc" ,true )
29+ client := integration .StartCoder (ctx ,t ,"template_acc" ,false )
3030firstUser ,err := client .User (ctx ,codersdk .Me )
3131require .NoError (t ,err )
3232
@@ -51,31 +51,15 @@ func TestAccTemplateResource(t *testing.T) {
5151},
5252},
5353ACL :testAccTemplateACLConfig {
54- GroupACL : []testAccTemplateKeyValueConfig {
55- {
56- Key :PtrTo (firstUser .OrganizationIDs [0 ].String ()),
57- Value :PtrTo ("use" ),
58- },
59- },
54+ null :true ,
6055},
6156}
6257
6358cfg2 := cfg1
6459cfg2 .Versions = slices .Clone (cfg2 .Versions )
6560cfg2 .Name = PtrTo ("example-template-new" )
66- cfg2 .AllowUserAutostart = PtrTo (false )
6761cfg2 .Versions [0 ].Directory = & exTemplateTwo
6862cfg2 .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
8064cfg3 := cfg2
8165cfg3 .Versions = slices .Clone (cfg3 .Versions )
@@ -103,9 +87,6 @@ func TestAccTemplateResource(t *testing.T) {
10387cfg6 := cfg4
10488cfg6 .Versions = slices .Clone (cfg6 .Versions [1 :])
10589
106- cfg7 := cfg6
107- cfg7 .ACL .null = true
108-
10990resource .Test (t , resource.TestCase {
11091PreCheck :func () {testAccPreCheck (t ) },
11192IsUnitTest :true ,
@@ -180,9 +161,6 @@ func TestAccTemplateResource(t *testing.T) {
180161Check :resource .ComposeAggregateTestCheckFunc (
181162resource .TestCheckResourceAttrSet ("coderd_template.test" ,"id" ),
182163resource .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" ),
186164resource .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
290263cfg2 := 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 ) {
371460if os .Getenv ("TF_ACC" )== "" {
372461t .Skip ("Acceptance tests are disabled." )