Thanks to visit codestin.com
Credit goes to github.com

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

-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ jobs:
2525
uses: crazy-max/[email protected]
2626
with:
2727
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
28-
passphrase: ${{ secrets.GPG_PASSPHRASE }}
2928
- name: Run GoReleaser
3029
uses: goreleaser/[email protected]
3130
with:

.github/workflows/test.yml

+1
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

+12-2
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

-1
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

+121-32
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)