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

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

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

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

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

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

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

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

+129-36
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

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

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

+6-2
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)