Skip to content

Commit

Permalink
ci: Fix simplify tests of docker repo with pro-feature subdomain
Browse files Browse the repository at this point in the history
  • Loading branch information
anmoel committed Jan 30, 2024
1 parent 025ac98 commit 04dd8d1
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 428 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@ data "nexus_repository_docker_group" "acceptance" {
}

func TestAccDataSourceRepositoryDockerGroup(t *testing.T) {
repoHosted := testAccResourceRepositoryDockerHosted()
nameHosted := fmt.Sprintf("acceptance-%s", acctest.RandString(10))
nameGroup := fmt.Sprintf("acceptance-%s", acctest.RandString(10))
repoHosted := testAccResourceRepositoryDockerHosted(nameHosted)
repoGroup := repository.DockerGroupRepository{
Name: fmt.Sprintf("acceptance-%s", acctest.RandString(10)),
Name: nameGroup,
Online: true,
Storage: repository.Storage{
BlobStoreName: "default",
Expand All @@ -36,62 +38,10 @@ func TestAccDataSourceRepositoryDockerGroup(t *testing.T) {
MemberNames: []string{repoHosted.Name},
},
}
dataSourceName := "data.nexus_repository_docker_group.acceptance"

resource.Test(t, resource.TestCase{
PreCheck: func() { acceptance.AccPreCheck(t) },
Providers: acceptance.TestAccProviders,
Steps: []resource.TestStep{
{
Config: testAccResourceRepositoryDockerHostedConfig(repoHosted) + testAccResourceRepositoryDockerGroupConfig(repoGroup) + testAccDataSourceRepositoryDockerGroupConfig(),
Check: resource.ComposeTestCheckFunc(
resource.ComposeAggregateTestCheckFunc(
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "id", repoGroup.Name),
resource.TestCheckResourceAttr(dataSourceName, "name", repoGroup.Name),
resource.TestCheckResourceAttr(dataSourceName, "online", strconv.FormatBool(repoGroup.Online)),
),
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "docker.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.force_basic_auth", strconv.FormatBool(repoGroup.Docker.ForceBasicAuth)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.v1_enabled", strconv.FormatBool(repoGroup.Docker.V1Enabled)),
),
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "storage.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.blob_store_name", repoGroup.Storage.BlobStoreName),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repoGroup.Storage.StrictContentTypeValidation)),
resource.TestCheckResourceAttr(dataSourceName, "group.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "group.0.member_names.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "group.0.member_names.0", repoGroup.Group.MemberNames[0]),
),
),
),
},
},
})
}

func TestAccProDataSourceRepositoryDockerGroup(t *testing.T) {
if tools.GetEnv("SKIP_PRO_TESTS", "false") == "true" {
t.Skip("Skipping Nexus Pro Tests")
}
repoHosted := testAccProResourceRepositoryDockerHosted()
repoGroup := repository.DockerGroupRepository{
Name: fmt.Sprintf("acceptance-%s", acctest.RandString(10)),
Online: true,
Storage: repository.Storage{
BlobStoreName: "default",
StrictContentTypeValidation: false,
},
Docker: repository.Docker{
ForceBasicAuth: true,
V1Enabled: true,
Subdomain: repoHosted.Subdomain,
},
Group: repository.GroupDeploy{
MemberNames: []string{repoHosted.Name},
},
if tools.GetEnv("SKIP_PRO_TESTS", "false") == "false" {
repoGroup.Docker.Subdomain = &nameGroup
}

dataSourceName := "data.nexus_repository_docker_group.acceptance"

resource.Test(t, resource.TestCase{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,48 +19,7 @@ data "nexus_repository_docker_hosted" "acceptance" {
}`
}

func TestAccDataSourceRepositoryDockerHosted(t *testing.T) {
repo := repository.DockerHostedRepository{
Name: fmt.Sprintf("acceptance-%s", acctest.RandString(10)),
Online: true,
Storage: repository.HostedStorage{
BlobStoreName: "default",
StrictContentTypeValidation: false,
},
Docker: repository.Docker{
ForceBasicAuth: true,
V1Enabled: true,
},
}
dataSourceName := "data.nexus_repository_docker_hosted.acceptance"

resource.Test(t, resource.TestCase{
PreCheck: func() { acceptance.AccPreCheck(t) },
Providers: acceptance.TestAccProviders,
Steps: []resource.TestStep{
{
Config: testAccResourceRepositoryDockerHostedConfig(repo) + testAccDataSourceRepositoryDockerHostedConfig(),
Check: resource.ComposeTestCheckFunc(
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "id", repo.Name),
resource.TestCheckResourceAttr(dataSourceName, "name", repo.Name),
resource.TestCheckResourceAttr(dataSourceName, "online", strconv.FormatBool(repo.Online)),
resource.TestCheckResourceAttr(dataSourceName, "docker.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.force_basic_auth", strconv.FormatBool(repo.Docker.ForceBasicAuth)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.v1_enabled", strconv.FormatBool(repo.Docker.V1Enabled)),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.blob_store_name", repo.Storage.BlobStoreName),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repo.Storage.StrictContentTypeValidation)),
),
),
},
},
})
}

func TestAccProDataSourceRepositoryDockerHosted(t *testing.T) {
if tools.GetEnv("SKIP_PRO_TESTS", "false") == "true" {
t.Skip("Skipping Nexus Pro Tests")
}
name := fmt.Sprintf("acceptance-%s", acctest.RandString(10))
repo := repository.DockerHostedRepository{
Name: name,
Expand All @@ -75,6 +34,9 @@ func TestAccProDataSourceRepositoryDockerHosted(t *testing.T) {
Subdomain: tools.GetStringPointer(name),
},
}
if tools.GetEnv("SKIP_PRO_TESTS", "false") == "false" {
repo.Docker.Subdomain = &name
}
dataSourceName := "data.nexus_repository_docker_hosted.acceptance"

resource.Test(t, resource.TestCase{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,70 +19,9 @@ data "nexus_repository_docker_proxy" "acceptance" {
}`
}

func TestAccDataSourceRepositoryDockerProxy(t *testing.T) {
repoUsingDefaults := repository.DockerProxyRepository{
Name: fmt.Sprintf("acceptance-%s", acctest.RandString(10)),
Online: true,
Docker: repository.Docker{
ForceBasicAuth: true,
V1Enabled: true,
},
DockerProxy: repository.DockerProxy{
IndexType: repository.DockerProxyIndexTypeHub,
},
Proxy: repository.Proxy{
RemoteURL: "https://registry-1.docker.io",
},
Storage: repository.Storage{
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
}

dataSourceName := "data.nexus_repository_docker_proxy.acceptance"

resource.Test(t, resource.TestCase{
PreCheck: func() { acceptance.AccPreCheck(t) },
Providers: acceptance.TestAccProviders,
Steps: []resource.TestStep{
{
Config: testAccResourceRepositoryDockerProxyConfig(repoUsingDefaults) + testAccDataSourceRepositoryDockerProxyConfig(),
Check: resource.ComposeTestCheckFunc(
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "id", repoUsingDefaults.Name),
resource.TestCheckResourceAttr(dataSourceName, "name", repoUsingDefaults.Name),
resource.TestCheckResourceAttr(dataSourceName, "online", strconv.FormatBool(repoUsingDefaults.Online)),
),
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "docker.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.force_basic_auth", strconv.FormatBool(repoUsingDefaults.Docker.ForceBasicAuth)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.v1_enabled", strconv.FormatBool(repoUsingDefaults.Docker.V1Enabled)),
resource.TestCheckResourceAttr(dataSourceName, "docker_proxy.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "docker_proxy.0.index_type", string(repoUsingDefaults.DockerProxy.IndexType)),
),
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "http_client.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "http_client.0.authentication.#", "0"),
resource.TestCheckResourceAttr(dataSourceName, "http_client.0.connection.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "negative_cache.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "proxy.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "proxy.0.remote_url", repoUsingDefaults.Proxy.RemoteURL),
resource.TestCheckResourceAttr(dataSourceName, "storage.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.blob_store_name", repoUsingDefaults.Storage.BlobStoreName),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repoUsingDefaults.Storage.StrictContentTypeValidation)),
),
),
},
},
})
}

func TestAccProDataSourceRepositoryDockerProxy(t *testing.T) {
if tools.GetEnv("SKIP_PRO_TESTS", "false") == "true" {
t.Skip("Skipping Nexus Pro Tests")
}
name := fmt.Sprintf("acceptance-%s", acctest.RandString(10))
repoUsingDefaults := repository.DockerProxyRepository{
repo := repository.DockerProxyRepository{
Name: name,
Online: true,
Docker: repository.Docker{
Expand All @@ -101,39 +40,41 @@ func TestAccProDataSourceRepositoryDockerProxy(t *testing.T) {
StrictContentTypeValidation: true,
},
}

if tools.GetEnv("SKIP_PRO_TESTS", "false") == "false" {
repo.Docker.Subdomain = &name
}
dataSourceName := "data.nexus_repository_docker_proxy.acceptance"

resource.Test(t, resource.TestCase{
PreCheck: func() { acceptance.AccPreCheck(t) },
Providers: acceptance.TestAccProviders,
Steps: []resource.TestStep{
{
Config: testAccResourceRepositoryDockerProxyConfig(repoUsingDefaults) + testAccDataSourceRepositoryDockerProxyConfig(),
Config: testAccResourceRepositoryDockerProxyConfig(repo) + testAccDataSourceRepositoryDockerProxyConfig(),
Check: resource.ComposeTestCheckFunc(
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "id", repoUsingDefaults.Name),
resource.TestCheckResourceAttr(dataSourceName, "name", repoUsingDefaults.Name),
resource.TestCheckResourceAttr(dataSourceName, "online", strconv.FormatBool(repoUsingDefaults.Online)),
resource.TestCheckResourceAttr(dataSourceName, "id", repo.Name),
resource.TestCheckResourceAttr(dataSourceName, "name", repo.Name),
resource.TestCheckResourceAttr(dataSourceName, "online", strconv.FormatBool(repo.Online)),
),
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "docker.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.force_basic_auth", strconv.FormatBool(repoUsingDefaults.Docker.ForceBasicAuth)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.v1_enabled", strconv.FormatBool(repoUsingDefaults.Docker.V1Enabled)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.subdomain", string(*repoUsingDefaults.Docker.Subdomain)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.force_basic_auth", strconv.FormatBool(repo.Docker.ForceBasicAuth)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.v1_enabled", strconv.FormatBool(repo.Docker.V1Enabled)),
resource.TestCheckResourceAttr(dataSourceName, "docker.0.subdomain", string(*repo.Docker.Subdomain)),
resource.TestCheckResourceAttr(dataSourceName, "docker_proxy.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "docker_proxy.0.index_type", string(repoUsingDefaults.DockerProxy.IndexType)),
resource.TestCheckResourceAttr(dataSourceName, "docker_proxy.0.index_type", string(repo.DockerProxy.IndexType)),
),
resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "http_client.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "http_client.0.authentication.#", "0"),
resource.TestCheckResourceAttr(dataSourceName, "http_client.0.connection.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "negative_cache.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "proxy.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "proxy.0.remote_url", repoUsingDefaults.Proxy.RemoteURL),
resource.TestCheckResourceAttr(dataSourceName, "proxy.0.remote_url", repo.Proxy.RemoteURL),
resource.TestCheckResourceAttr(dataSourceName, "storage.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.blob_store_name", repoUsingDefaults.Storage.BlobStoreName),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repoUsingDefaults.Storage.StrictContentTypeValidation)),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.blob_store_name", repo.Storage.BlobStoreName),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repo.Storage.StrictContentTypeValidation)),
),
),
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func testAccResourceRepositoryDockerGroup() repository.DockerGroupRepository {
func testAccResourceRepositoryDockerGroup(name string) repository.DockerGroupRepository {
return repository.DockerGroupRepository{
Name: fmt.Sprintf("test-repo-%s", acctest.RandString(10)),
Name: name,
Online: true,
Docker: repository.Docker{
ForceBasicAuth: true,
Expand All @@ -35,28 +35,6 @@ func testAccResourceRepositoryDockerGroup() repository.DockerGroupRepository {
}
}

func testAccProResourceRepositoryDockerGroup() repository.DockerGroupRepository {
subdomain := fmt.Sprintf("test-repo-%s", acctest.RandString(10))
return repository.DockerGroupRepository{
Name: fmt.Sprintf("test-repo-%s", acctest.RandString(10)),
Online: true,
Docker: repository.Docker{
ForceBasicAuth: true,
HTTPPort: tools.GetIntPointer(rand.Intn(999) + 32000),
HTTPSPort: tools.GetIntPointer(rand.Intn(999) + 33000),
V1Enabled: false,
Subdomain: tools.GetStringPointer(subdomain),
},
Storage: repository.Storage{
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
Group: repository.GroupDeploy{
MemberNames: []string{},
},
}
}

func testAccResourceRepositoryDockerGroupConfig(repo repository.DockerGroupRepository) string {
buf := &bytes.Buffer{}
resourceRepositoryDockerGroupTemplate := template.Must(template.New("DockerGroupRepository").Funcs(acceptance.TemplateFuncMap).Parse(acceptance.TemplateStringRepositoryDockerGroup))
Expand All @@ -67,8 +45,15 @@ func testAccResourceRepositoryDockerGroupConfig(repo repository.DockerGroupRepos
}

func TestAccResourceRepositoryDockerGroup(t *testing.T) {
repoHosted := testAccResourceRepositoryDockerHosted()
repoGroup := testAccResourceRepositoryDockerGroup()
nameHosted := fmt.Sprintf("acceptance-%s", acctest.RandString(10))
nameGroup := fmt.Sprintf("acceptance-%s", acctest.RandString(10))

repoHosted := testAccResourceRepositoryDockerHosted(nameHosted)
repoGroup := testAccResourceRepositoryDockerGroup(nameGroup)

if tools.GetEnv("SKIP_PRO_TESTS", "false") == "false" {
repoGroup.Docker.Subdomain = &nameGroup
}
repoGroup.Group.MemberNames = append(repoGroup.Group.MemberNames, repoHosted.Name)

resourceName := "nexus_repository_docker_group.acceptance"
Expand Down Expand Up @@ -114,16 +99,17 @@ func TestAccResourceRepositoryDockerGroup(t *testing.T) {
}

func TestAccProResourceRepositoryDockerGroup(t *testing.T) {
if tools.GetEnv("SKIP_PRO_TESTS", "false") == "true" {
t.Skip("Skipping Nexus Pro Tests")
}
repoHosted := testAccProResourceRepositoryDockerHosted()
repoGroup := testAccProResourceRepositoryDockerGroup()
nameHosted := fmt.Sprintf("acceptance-%s", acctest.RandString(10))
nameGroup := fmt.Sprintf("acceptance-%s", acctest.RandString(10))

repoHosted := testAccResourceRepositoryDockerHosted(nameHosted)
repoGroup := testAccResourceRepositoryDockerGroup(nameGroup)
repoGroup.Group.MemberNames = append(repoGroup.Group.MemberNames, repoHosted.Name)

if tools.GetEnv("SKIP_PRO_TESTS", "false") != "true" {
repoGroup.Docker.Subdomain = &nameGroup
}
writableMember := repoHosted.Name
subdomain := string(*repoGroup.Docker.Subdomain)

repoGroup.Group.WritableMember = &writableMember
resourceName := "nexus_repository_docker_group.acceptance"

Expand Down Expand Up @@ -154,7 +140,7 @@ func TestAccProResourceRepositoryDockerGroup(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "docker.0.http_port", strconv.Itoa(*repoGroup.Docker.HTTPPort)),
resource.TestCheckResourceAttr(resourceName, "docker.0.https_port", strconv.Itoa(*repoGroup.Docker.HTTPSPort)),
resource.TestCheckResourceAttr(resourceName, "docker.0.v1_enabled", strconv.FormatBool(repoGroup.Docker.V1Enabled)),
resource.TestCheckResourceAttr(resourceName, "docker.0.subdomain", subdomain),
resource.TestCheckResourceAttr(resourceName, "docker.0.subdomain", string(*repoGroup.Docker.Subdomain)),
),
),
},
Expand Down

0 comments on commit 04dd8d1

Please sign in to comment.