Skip to content

Commit a776da3

Browse files
chore: run enterprise tests using license (#67)
1 parent 25a8198 commit a776da3

File tree

5 files changed

+134
-36
lines changed

5 files changed

+134
-36
lines changed

.github/workflows/release.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ jobs:
2525
uses: crazy-max/ghaction-import-gpg@v6.1.0
2626
with:
2727
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
28-
passphrase: ${{ secrets.GPG_PASSPHRASE }}
2928
- name: Run GoReleaser
3029
uses: goreleaser/goreleaser-action@v6.0.0
3130
with:

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ jobs:
8484
- run: go mod download
8585
- env:
8686
TF_ACC: "1"
87+
CODER_ENTERPRISE_LICENSE: ${{ secrets.CODER_ENTERPRISE_LICENSE }}
8788
run: go test -v -cover ./internal/provider/
8889
timeout-minutes: 10
8990

integration/integration.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"github.com/stretchr/testify/require"
2020
)
2121

22-
func StartCoder(ctx context.Context, t *testing.T, name string, useTrial bool) *codersdk.Client {
22+
func StartCoder(ctx context.Context, t *testing.T, name string, useLicense bool) *codersdk.Client {
2323
coderImg := os.Getenv("CODER_IMAGE")
2424
if coderImg == "" {
2525
coderImg = "ghcr.io/coder/coder"
@@ -30,6 +30,11 @@ func StartCoder(ctx context.Context, t *testing.T, name string, useTrial bool) *
3030
coderVersion = "latest"
3131
}
3232

33+
coderLicense := os.Getenv("CODER_ENTERPRISE_LICENSE")
34+
if useLicense && coderLicense == "" {
35+
t.Skip("Skipping tests that require a license.")
36+
}
37+
3338
t.Logf("using coder image %s:%s", coderImg, coderVersion)
3439

3540
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
@@ -96,7 +101,6 @@ func StartCoder(ctx context.Context, t *testing.T, name string, useTrial bool) *
96101
Email: testEmail,
97102
Username: testUsername,
98103
Password: testPassword,
99-
Trial: useTrial,
100104
})
101105
require.NoError(t, err, "create first user")
102106
resp, err := client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
@@ -105,6 +109,12 @@ func StartCoder(ctx context.Context, t *testing.T, name string, useTrial bool) *
105109
})
106110
require.NoError(t, err, "login to coder instance with password")
107111
client.SetSessionToken(resp.SessionToken)
112+
if useLicense {
113+
_, err := client.AddLicense(ctx, codersdk.AddLicenseRequest{
114+
License: coderLicense,
115+
})
116+
require.NoError(t, err, "add license")
117+
}
108118
return client
109119
}
110120

internal/provider/group_resource_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ func TestAccGroupResource(t *testing.T) {
1818
if os.Getenv("TF_ACC") == "" {
1919
t.Skip("Acceptance tests are disabled.")
2020
}
21-
2221
ctx := context.Background()
2322
client := integration.StartCoder(ctx, t, "group_acc", true)
2423
firstUser, err := client.User(ctx, codersdk.Me)

internal/provider/template_resource_test.go

Lines changed: 121 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
370459
func TestAccTemplateResourceAGPL(t *testing.T) {
371460
if os.Getenv("TF_ACC") == "" {
372461
t.Skip("Acceptance tests are disabled.")

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy