Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

chore: run enterprise tests using license#67

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion.github/workflows/release.yml
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -25,7 +25,6 @@ jobs:
uses: crazy-max/ghaction-import-gpg@v6.1.0
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6.0.0
with:
Expand Down
1 change: 1 addition & 0 deletions.github/workflows/test.yml
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -84,6 +84,7 @@ jobs:
- run: go mod download
- env:
TF_ACC: "1"
CODER_ENTERPRISE_LICENSE: ${{ secrets.CODER_ENTERPRISE_LICENSE }}
run: go test -v -cover ./internal/provider/
timeout-minutes: 10

Expand Down
14 changes: 12 additions & 2 deletionsintegration/integration.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ import (
"github.com/stretchr/testify/require"
)

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

coderLicense := os.Getenv("CODER_ENTERPRISE_LICENSE")
if useLicense && coderLicense == "" {
t.Skip("Skipping tests that require a license.")
}

t.Logf("using coder image %s:%s", coderImg, coderVersion)

cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
Expand DownExpand Up@@ -96,7 +101,6 @@ func StartCoder(ctx context.Context, t *testing.T, name string, useTrial bool) *
Email: testEmail,
Username: testUsername,
Password: testPassword,
Trial: useTrial,
})
require.NoError(t, err, "create first user")
resp, err := client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
Expand All@@ -105,6 +109,12 @@ func StartCoder(ctx context.Context, t *testing.T, name string, useTrial bool) *
})
require.NoError(t, err, "login to coder instance with password")
client.SetSessionToken(resp.SessionToken)
if useLicense {
_, err := client.AddLicense(ctx, codersdk.AddLicenseRequest{
License: coderLicense,
})
require.NoError(t, err, "add license")
}
return client
}

Expand Down
1 change: 0 additions & 1 deletioninternal/provider/group_resource_test.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,7 +18,6 @@ func TestAccGroupResource(t *testing.T) {
if os.Getenv("TF_ACC") == "" {
t.Skip("Acceptance tests are disabled.")
}

ctx := context.Background()
client := integration.StartCoder(ctx, t, "group_acc", true)
firstUser, err := client.User(ctx, codersdk.Me)
Expand Down
153 changes: 121 additions & 32 deletionsinternal/provider/template_resource_test.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@ func TestAccTemplateResource(t *testing.T) {
t.Skip("Acceptance tests are disabled.")
}
ctx := context.Background()
client := integration.StartCoder(ctx, t, "template_acc",true)
client := integration.StartCoder(ctx, t, "template_acc",false)
firstUser, err := client.User(ctx, codersdk.Me)
require.NoError(t, err)

Expand All@@ -51,31 +51,15 @@ func TestAccTemplateResource(t *testing.T) {
},
},
ACL: testAccTemplateACLConfig{
GroupACL: []testAccTemplateKeyValueConfig{
{
Key: PtrTo(firstUser.OrganizationIDs[0].String()),
Value: PtrTo("use"),
},
},
null: true,
},
}

cfg2 := cfg1
cfg2.Versions = slices.Clone(cfg2.Versions)
cfg2.Name = PtrTo("example-template-new")
cfg2.AllowUserAutostart = PtrTo(false)
cfg2.Versions[0].Directory = &exTemplateTwo
cfg2.Versions[0].Name = PtrTo("new")
cfg2.ACL.UserACL = []testAccTemplateKeyValueConfig{
{
Key: PtrTo(firstUser.ID.String()),
Value: PtrTo("admin"),
},
}
cfg2.AutostopRequirement = testAccAutostopRequirementConfig{
DaysOfWeek: PtrTo([]string{"monday", "tuesday"}),
Weeks: PtrTo(int64(2)),
}

cfg3 := cfg2
cfg3.Versions = slices.Clone(cfg3.Versions)
Expand DownExpand Up@@ -103,9 +87,6 @@ func TestAccTemplateResource(t *testing.T) {
cfg6 := cfg4
cfg6.Versions = slices.Clone(cfg6.Versions[1:])

cfg7 := cfg6
cfg7.ACL.null = true

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
IsUnitTest: true,
Expand DownExpand Up@@ -180,9 +161,6 @@ func TestAccTemplateResource(t *testing.T) {
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttrSet("coderd_template.test", "id"),
resource.TestCheckResourceAttr("coderd_template.test", "name", "example-template-new"),
resource.TestCheckResourceAttr("coderd_template.test", "allow_user_auto_start", "false"),
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.days_of_week.#", "2"),
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.weeks", "2"),
resource.TestMatchTypeSetElemNestedAttrs("coderd_template.test", "versions.*", map[string]*regexp.Regexp{
"name": regexp.MustCompile("new"),
}),
Expand DownExpand Up@@ -244,14 +222,6 @@ func TestAccTemplateResource(t *testing.T) {
}),
),
},
// Unmanaged ACL
{
Config: cfg7.String(t),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckNoResourceAttr("coderd_template.test", "acl"),
testAccCheckNumTemplateVersions(ctx, client, 5),
),
},
// Resource deleted
},
})
Expand DownExpand Up@@ -285,6 +255,9 @@ func TestAccTemplateResource(t *testing.T) {
},
},
},
ACL: testAccTemplateACLConfig{
null: true,
},
}

cfg2 := cfg1
Expand DownExpand Up@@ -367,6 +340,122 @@ func TestAccTemplateResource(t *testing.T) {
})
}

func TestAccTemplateResourceEnterprise(t *testing.T) {
if os.Getenv("TF_ACC") == "" {
t.Skip("Acceptance tests are disabled.")
}
ctx := context.Background()
client := integration.StartCoder(ctx, t, "template_acc", true)
firstUser, err := client.User(ctx, codersdk.Me)
require.NoError(t, err)

cfg1 := testAccTemplateResourceConfig{
URL: client.URL.String(),
Token: client.SessionToken(),
Name: PtrTo("example-template"),
Versions: []testAccTemplateVersionConfig{
{
// Auto-generated version name
Directory: PtrTo("../../integration/template-test/example-template"),
Active: PtrTo(true),
// TODO(ethanndickson): Remove this when we add in `*.tfvars` parsing
TerraformVariables: []testAccTemplateKeyValueConfig{
{
Key: PtrTo("name"),
Value: PtrTo("world"),
},
},
},
},
ACL: testAccTemplateACLConfig{
GroupACL: []testAccTemplateKeyValueConfig{
{
Key: PtrTo(firstUser.OrganizationIDs[0].String()),
Value: PtrTo("use"),
},
},
UserACL: []testAccTemplateKeyValueConfig{
{
Key: PtrTo(firstUser.ID.String()),
Value: PtrTo("admin"),
},
},
},
}

cfg2 := cfg1
cfg2.ACL.null = true

cfg3 := cfg2
cfg3.AllowUserAutostart = PtrTo(false)
cfg3.AutostopRequirement = testAccAutostopRequirementConfig{
DaysOfWeek: PtrTo([]string{"monday", "tuesday"}),
Weeks: PtrTo(int64(2)),
}

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
IsUnitTest: true,
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
Steps: []resource.TestStep{
{
Config: cfg1.String(t),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("coderd_template.test", "acl.groups.#", "1"),
resource.TestMatchTypeSetElemNestedAttrs("coderd_template.test", "acl.groups.*", map[string]*regexp.Regexp{
"id": regexp.MustCompile(".+"),
"role": regexp.MustCompile("^use$"),
}),
resource.TestMatchTypeSetElemNestedAttrs("coderd_template.test", "acl.users.*", map[string]*regexp.Regexp{
"id": regexp.MustCompile(".+"),
"role": regexp.MustCompile("^admin$"),
}),
),
},
{
Config: cfg2.String(t),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckNoResourceAttr("coderd_template.test", "acl"),
func(s *terraform.State) error {
templates, err := client.Templates(ctx, codersdk.TemplateFilter{})
if err != nil {
return err
}
if len(templates) != 1 {
return fmt.Errorf("expected 1 template, got %d", len(templates))
}
acl, err := client.TemplateACL(ctx, templates[0].ID)
if err != nil {
return err
}
if len(acl.Groups) != 1 {
return fmt.Errorf("expected 1 group ACL, got %d", len(acl.Groups))
}
if acl.Groups[0].Role != "use" && acl.Groups[0].ID != firstUser.OrganizationIDs[0] {
return fmt.Errorf("expected group ACL to be 'use' for %s, got %s", firstUser.OrganizationIDs[0].String(), acl.Groups[0].Role)
}
if len(acl.Users) != 1 {
return fmt.Errorf("expected 1 user ACL, got %d", len(acl.Users))
}
if acl.Users[0].Role != "admin" && acl.Users[0].ID != firstUser.ID {
return fmt.Errorf("expected user ACL to be 'admin' for %s, got %s", firstUser.ID.String(), acl.Users[0].Role)
}
return nil
},
),
},
{
Config: cfg3.String(t),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("coderd_template.test", "allow_user_auto_start", "false"),
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.days_of_week.#", "2"),
resource.TestCheckResourceAttr("coderd_template.test", "auto_stop_requirement.weeks", "2"),
),
},
},
})
}

func TestAccTemplateResourceAGPL(t *testing.T) {
if os.Getenv("TF_ACC") == "" {
t.Skip("Acceptance tests are disabled.")
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp