Skip to content

Commit 5cd433e

Browse files
committed
chore: run enterprise tests using license
1 parent b768a21 commit 5cd433e

10 files changed

+166
-48
lines changed

integration/integration.go

Lines changed: 7 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, license string) *codersdk.Client {
2323
coderImg := os.Getenv("CODER_IMAGE")
2424
if coderImg == "" {
2525
coderImg = "ghcr.io/coder/coder"
@@ -96,9 +96,14 @@ func StartCoder(ctx context.Context, t *testing.T, name string, useTrial bool) *
9696
Email: testEmail,
9797
Username: testUsername,
9898
Password: testPassword,
99-
Trial: useTrial,
10099
})
101100
require.NoError(t, err, "create first user")
101+
if license != "" {
102+
_, err := client.AddLicense(ctx, codersdk.AddLicenseRequest{
103+
License: license,
104+
})
105+
require.NoError(t, err, "add license")
106+
}
102107
resp, err := client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
103108
Email: testEmail,
104109
Password: testPassword,

integration/integration_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ func TestIntegration(t *testing.T) {
2828
if testing.Short() {
2929
t.Skip("Skipping integration test in short mode")
3030
}
31+
license := os.Getenv("CODER_ENTERPRISE_LICENSE")
32+
if license == "" {
33+
t.Skip("Integration tests require an enterprise Coder deployment")
34+
}
3135

3236
timeoutStr := os.Getenv("TIMEOUT_MINS")
3337
if timeoutStr == "" {
@@ -145,7 +149,7 @@ func TestIntegration(t *testing.T) {
145149
},
146150
} {
147151
t.Run(tt.name, func(t *testing.T) {
148-
client := StartCoder(ctx, t, tt.name, true)
152+
client := StartCoder(ctx, t, tt.name, license)
149153
wd, err := os.Getwd()
150154
require.NoError(t, err)
151155
srcDir := filepath.Join(wd, tt.name)

internal/provider/group_data_source_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@ func TestAccGroupDataSource(t *testing.T) {
1818
if os.Getenv("TF_ACC") == "" {
1919
t.Skip("Acceptance tests are disabled.")
2020
}
21+
license := os.Getenv("CODER_ENTERPRISE_LICENSE")
22+
if license == "" {
23+
t.Skip("Group tests require an enterprise Coder deployment")
24+
}
2125
ctx := context.Background()
22-
client := integration.StartCoder(ctx, t, "group_data_acc", true)
26+
client := integration.StartCoder(ctx, t, "group_data_acc", license)
2327
firstUser, err := client.User(ctx, codersdk.Me)
2428
require.NoError(t, err)
2529

internal/provider/group_resource_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@ func TestAccGroupResource(t *testing.T) {
1818
if os.Getenv("TF_ACC") == "" {
1919
t.Skip("Acceptance tests are disabled.")
2020
}
21+
license := os.Getenv("CODER_ENTERPRISE_LICENSE")
22+
if license == "" {
23+
t.Skip("Group tests require an enterprise Coder deployment")
24+
}
2125

2226
ctx := context.Background()
23-
client := integration.StartCoder(ctx, t, "group_acc", true)
27+
client := integration.StartCoder(ctx, t, "group_acc", license)
2428
firstUser, err := client.User(ctx, codersdk.Me)
2529
require.NoError(t, err)
2630

@@ -130,7 +134,7 @@ func TestAccGroupResourceAGPL(t *testing.T) {
130134
t.Skip("Acceptance tests are disabled.")
131135
}
132136
ctx := context.Background()
133-
client := integration.StartCoder(ctx, t, "group_acc_agpl", false)
137+
client := integration.StartCoder(ctx, t, "group_acc_agpl", "")
134138
firstUser, err := client.User(ctx, codersdk.Me)
135139
require.NoError(t, err)
136140

internal/provider/organization_data_source_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestAccOrganizationDataSource(t *testing.T) {
1919
t.Skip("Acceptance tests are disabled.")
2020
}
2121
ctx := context.Background()
22-
client := integration.StartCoder(ctx, t, "org_data_acc", false)
22+
client := integration.StartCoder(ctx, t, "org_data_acc", "")
2323
firstUser, err := client.User(ctx, codersdk.Me)
2424
require.NoError(t, err)
2525

internal/provider/template_data_source_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@ func TestAccTemplateDataSource(t *testing.T) {
2222
if os.Getenv("TF_ACC") == "" {
2323
t.Skip("Acceptance tests are disabled.")
2424
}
25+
license := os.Getenv("CODER_ENTERPRISE_LICENSE")
26+
if license == "" {
27+
t.Skip("Template data source tests require an enterprise Coder deployment")
28+
}
2529
ctx := context.Background()
26-
client := integration.StartCoder(ctx, t, "template_data_acc", true)
30+
client := integration.StartCoder(ctx, t, "template_data_acc", license)
2731
firstUser, err := client.User(ctx, codersdk.Me)
2832
require.NoError(t, err)
2933
orgID := firstUser.OrganizationIDs[0]

internal/provider/template_resource_test.go

Lines changed: 129 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ import (
2222
)
2323

2424
func TestAccTemplateResource(t *testing.T) {
25-
if os.Getenv("TF_ACC") == "" {
26-
t.Skip("Acceptance tests are disabled.")
27-
}
25+
// if os.Getenv("TF_ACC") == "" {
26+
// t.Skip("Acceptance tests are disabled.")
27+
// }
2828
ctx := context.Background()
29-
client := integration.StartCoder(ctx, t, "template_acc", true)
29+
client := integration.StartCoder(ctx, t, "template_acc", "")
3030
firstUser, err := client.User(ctx, codersdk.Me)
3131
require.NoError(t, err)
3232

@@ -58,31 +58,15 @@ func TestAccTemplateResource(t *testing.T) {
5858
},
5959
},
6060
ACL: testAccTemplateACLConfig{
61-
GroupACL: []testAccTemplateKeyValueConfig{
62-
{
63-
Key: PtrTo(firstUser.OrganizationIDs[0].String()),
64-
Value: PtrTo("use"),
65-
},
66-
},
61+
null: true,
6762
},
6863
}
6964

7065
cfg2 := cfg1
7166
cfg2.Versions = slices.Clone(cfg2.Versions)
7267
cfg2.Name = PtrTo("example-template-new")
73-
cfg2.AllowUserAutostart = PtrTo(false)
7468
cfg2.Versions[0].Directory = &exTemplateTwo
7569
cfg2.Versions[0].Name = PtrTo("new")
76-
cfg2.ACL.UserACL = []testAccTemplateKeyValueConfig{
77-
{
78-
Key: PtrTo(firstUser.ID.String()),
79-
Value: PtrTo("admin"),
80-
},
81-
}
82-
cfg2.AutostopRequirement = testAccAutostopRequirementConfig{
83-
DaysOfWeek: PtrTo([]string{"monday", "tuesday"}),
84-
Weeks: PtrTo(int64(2)),
85-
}
8670

8771
cfg3 := cfg2
8872
cfg3.Versions = slices.Clone(cfg3.Versions)
@@ -110,9 +94,6 @@ func TestAccTemplateResource(t *testing.T) {
11094
cfg6 := cfg4
11195
cfg6.Versions = slices.Clone(cfg6.Versions[1:])
11296

113-
cfg7 := cfg6
114-
cfg7.ACL.null = true
115-
11697
resource.Test(t, resource.TestCase{
11798
PreCheck: func() { testAccPreCheck(t) },
11899
IsUnitTest: true,
@@ -187,9 +168,6 @@ func TestAccTemplateResource(t *testing.T) {
187168
Check: resource.ComposeAggregateTestCheckFunc(
188169
resource.TestCheckResourceAttrSet("coderd_template.test", "id"),
189170
resource.TestCheckResourceAttr("coderd_template.test", "name", "example-template-new"),
190-
resource.TestCheckResourceAttr("coderd_template.test", "allow_user_auto_start", "false"),
191-
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.days_of_week.#", "2"),
192-
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.weeks", "2"),
193171
resource.TestMatchTypeSetElemNestedAttrs("coderd_template.test", "versions.*", map[string]*regexp.Regexp{
194172
"name": regexp.MustCompile("new"),
195173
}),
@@ -251,14 +229,6 @@ func TestAccTemplateResource(t *testing.T) {
251229
}),
252230
),
253231
},
254-
// Unmanaged ACL
255-
{
256-
Config: cfg7.String(t),
257-
Check: resource.ComposeAggregateTestCheckFunc(
258-
resource.TestCheckNoResourceAttr("coderd_template.test", "acl"),
259-
testAccCheckNumTemplateVersions(ctx, client, 5),
260-
),
261-
},
262232
// Resource deleted
263233
},
264234
})
@@ -292,6 +262,9 @@ func TestAccTemplateResource(t *testing.T) {
292262
},
293263
},
294264
},
265+
ACL: testAccTemplateACLConfig{
266+
null: true,
267+
},
295268
}
296269

297270
cfg2 := cfg1
@@ -374,12 +347,132 @@ func TestAccTemplateResource(t *testing.T) {
374347
})
375348
}
376349

350+
func TestAccTemplateResourceEnterprise(t *testing.T) {
351+
if os.Getenv("TF_ACC") == "" {
352+
t.Skip("Acceptance tests are disabled.")
353+
}
354+
license := os.Getenv("CODER_ENTERPRISE_LICENSE")
355+
if license == "" {
356+
t.Skip("Some template tests require an enterprise Coder deployment")
357+
}
358+
ctx := context.Background()
359+
client := integration.StartCoder(ctx, t, "template_acc", license)
360+
firstUser, err := client.User(ctx, codersdk.Me)
361+
require.NoError(t, err)
362+
363+
cfg1 := testAccTemplateResourceConfig{
364+
URL: client.URL.String(),
365+
Token: client.SessionToken(),
366+
Name: PtrTo("example-template"),
367+
Versions: []testAccTemplateVersionConfig{
368+
{
369+
// Auto-generated version name
370+
Directory: PtrTo("../../integration/template-test/example-template"),
371+
Active: PtrTo(true),
372+
// TODO(ethanndickson): Remove this when we add in `*.tfvars` parsing
373+
TerraformVariables: []testAccTemplateKeyValueConfig{
374+
{
375+
Key: PtrTo("name"),
376+
Value: PtrTo("world"),
377+
},
378+
},
379+
},
380+
},
381+
ACL: testAccTemplateACLConfig{
382+
GroupACL: []testAccTemplateKeyValueConfig{
383+
{
384+
Key: PtrTo(firstUser.OrganizationIDs[0].String()),
385+
Value: PtrTo("use"),
386+
},
387+
},
388+
UserACL: []testAccTemplateKeyValueConfig{
389+
{
390+
Key: PtrTo(firstUser.ID.String()),
391+
Value: PtrTo("admin"),
392+
},
393+
},
394+
},
395+
}
396+
397+
cfg2 := cfg1
398+
cfg2.ACL.null = true
399+
400+
cfg3 := cfg2
401+
cfg3.AllowUserAutostart = PtrTo(false)
402+
cfg3.AutostopRequirement = testAccAutostopRequirementConfig{
403+
DaysOfWeek: PtrTo([]string{"monday", "tuesday"}),
404+
Weeks: PtrTo(int64(2)),
405+
}
406+
407+
resource.Test(t, resource.TestCase{
408+
PreCheck: func() { testAccPreCheck(t) },
409+
IsUnitTest: true,
410+
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
411+
Steps: []resource.TestStep{
412+
{
413+
Config: cfg1.String(t),
414+
Check: resource.ComposeAggregateTestCheckFunc(
415+
resource.TestCheckResourceAttr("coderd_template.test", "acl.groups.#", "1"),
416+
resource.TestMatchTypeSetElemNestedAttrs("coderd_template.test", "acl.groups.*", map[string]*regexp.Regexp{
417+
"id": regexp.MustCompile(".+"),
418+
"role": regexp.MustCompile("^use$"),
419+
}),
420+
resource.TestMatchTypeSetElemNestedAttrs("coderd_template.test", "acl.users.*", map[string]*regexp.Regexp{
421+
"id": regexp.MustCompile(".+"),
422+
"role": regexp.MustCompile("^admin$"),
423+
}),
424+
),
425+
},
426+
{
427+
Config: cfg2.String(t),
428+
Check: resource.ComposeAggregateTestCheckFunc(
429+
resource.TestCheckNoResourceAttr("coderd_template.test", "acl"),
430+
func(s *terraform.State) error {
431+
templates, err := client.Templates(ctx, codersdk.TemplateFilter{})
432+
if err != nil {
433+
return err
434+
}
435+
if len(templates) != 1 {
436+
return fmt.Errorf("expected 1 template, got %d", len(templates))
437+
}
438+
acl, err := client.TemplateACL(ctx, templates[0].ID)
439+
if err != nil {
440+
return err
441+
}
442+
if len(acl.Groups) != 1 {
443+
return fmt.Errorf("expected 1 group ACL, got %d", len(acl.Groups))
444+
}
445+
if acl.Groups[0].Role != "use" && acl.Groups[0].ID != firstUser.OrganizationIDs[0] {
446+
return fmt.Errorf("expected group ACL to be 'use' for %s, got %s", firstUser.OrganizationIDs[0].String(), acl.Groups[0].Role)
447+
}
448+
if len(acl.Users) != 1 {
449+
return fmt.Errorf("expected 1 user ACL, got %d", len(acl.Users))
450+
}
451+
if acl.Users[0].Role != "admin" && acl.Users[0].ID != firstUser.ID {
452+
return fmt.Errorf("expected user ACL to be 'admin' for %s, got %s", firstUser.ID.String(), acl.Users[0].Role)
453+
}
454+
return nil
455+
},
456+
),
457+
},
458+
{
459+
Config: cfg3.String(t),
460+
Check: resource.ComposeAggregateTestCheckFunc(
461+
resource.TestCheckResourceAttr("coderd_template.test", "allow_user_auto_start", "false"),
462+
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.days_of_week.#", "2"),
463+
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.weeks", "2"),
464+
),
465+
},
466+
},
467+
})
468+
}
469+
377470
func TestAccTemplateResourceAGPL(t *testing.T) {
378471
if os.Getenv("TF_ACC") == "" {
379472
t.Skip("Acceptance tests are disabled.")
380473
}
381474
ctx := context.Background()
382-
client := integration.StartCoder(ctx, t, "template_acc", false)
475+
client := integration.StartCoder(ctx, t, "template_acc", "")
383476
firstUser, err := client.User(ctx, codersdk.Me)
384477
require.NoError(t, err)
385478

internal/provider/user_data_source_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestAccUserDataSource(t *testing.T) {
1919
t.Skip("Acceptance tests are disabled.")
2020
}
2121
ctx := context.Background()
22-
client := integration.StartCoder(ctx, t, "user_data_acc", false)
22+
client := integration.StartCoder(ctx, t, "user_data_acc", "")
2323
firstUser, err := client.User(ctx, codersdk.Me)
2424
require.NoError(t, err)
2525
user, err := client.CreateUser(ctx, codersdk.CreateUserRequest{

internal/provider/user_resource_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func TestAccUserResource(t *testing.T) {
1717
t.Skip("Acceptance tests are disabled.")
1818
}
1919
ctx := context.Background()
20-
client := integration.StartCoder(ctx, t, "user_acc", false)
20+
client := integration.StartCoder(ctx, t, "user_acc", "")
2121

2222
cfg1 := testAccUserResourceConfig{
2323
URL: client.URL.String(),

internal/provider/workspace_proxy_resource_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ func TestAccWorkspaceProxyResource(t *testing.T) {
1717
if os.Getenv("TF_ACC") == "" {
1818
t.Skip("Acceptance tests are disabled.")
1919
}
20+
license := os.Getenv("CODER_ENTERPRISE_LICENSE")
21+
if license == "" {
22+
t.Skip("Workspace proxy tests require an enterprise Coder deployment")
23+
}
2024
ctx := context.Background()
21-
client := integration.StartCoder(ctx, t, "ws_proxy_acc", true)
25+
client := integration.StartCoder(ctx, t, "ws_proxy_acc", license)
2226

2327
cfg1 := testAccWorkspaceProxyResourceConfig{
2428
URL: client.URL.String(),
@@ -59,7 +63,7 @@ func TestAccWorkspaceProxyResourceAGPL(t *testing.T) {
5963
t.Skip("Acceptance tests are disabled.")
6064
}
6165
ctx := context.Background()
62-
client := integration.StartCoder(ctx, t, "ws_proxy_acc", false)
66+
client := integration.StartCoder(ctx, t, "ws_proxy_acc", "")
6367

6468
cfg1 := testAccWorkspaceProxyResourceConfig{
6569
URL: client.URL.String(),

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