From b0f9653d31bae898fe1f27923ab465513279b4e2 Mon Sep 17 00:00:00 2001 From: Douglas Parsons Date: Mon, 18 Jul 2022 13:07:00 +0100 Subject: [PATCH] Refactor majority of tests to optionally require a team - If the VERCEL_TESTING_TEAM env var is present, the tests will use this team_id and perform tests against this. - If the VERCEL_TESTING_TEAM env var is omitted, then the tests will be run against a personal Vercel account. In CI, the env var is present. --- vercel/data_source_alias_test.go | 20 +--- vercel/data_source_project_test.go | 8 +- vercel/provider_test.go | 9 +- vercel/resource_alias_test.go | 23 +--- vercel/resource_deployment_test.go | 131 ++++++++++------------ vercel/resource_project_domain_test.go | 98 ++++++++--------- vercel/resource_project_test.go | 147 ++++++++++++------------- 7 files changed, 184 insertions(+), 252 deletions(-) diff --git a/vercel/data_source_alias_test.go b/vercel/data_source_alias_test.go index bee7c639..0899b762 100644 --- a/vercel/data_source_alias_test.go +++ b/vercel/data_source_alias_test.go @@ -15,25 +15,7 @@ func TestAcc_AliasDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccAliasDataSourceConfig(name, ""), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.vercel_alias.test", "alias", fmt.Sprintf("test-acc-%s.vercel.app", name)), - resource.TestCheckResourceAttrSet("data.vercel_alias.test", "id"), - resource.TestCheckResourceAttrSet("data.vercel_alias.test", "deployment_id"), - ), - }, - }, - }) -} - -func TestAcc_AliasDataSourceTeam(t *testing.T) { - name := acctest.RandString(16) - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - Steps: []resource.TestStep{ - { - Config: testAccAliasDataSourceConfig(name, fmt.Sprintf("team_id = \"%s\"", testTeam())), + Config: testAccAliasDataSourceConfig(name, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_alias.test", "alias", fmt.Sprintf("test-acc-%s.vercel.app", name)), resource.TestCheckResourceAttr("data.vercel_alias.test", "team_id", testTeam()), diff --git a/vercel/data_source_project_test.go b/vercel/data_source_project_test.go index a317d333..690815fc 100644 --- a/vercel/data_source_project_test.go +++ b/vercel/data_source_project_test.go @@ -16,7 +16,7 @@ func TestAcc_ProjectDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccProjectDataSourceConfig(name), + Config: testAccProjectDataSourceConfig(name, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_project.test", "name", "test-acc-"+name), resource.TestCheckResourceAttr("data.vercel_project.test", "build_command", "npm run build"), @@ -37,7 +37,7 @@ func TestAcc_ProjectDataSource(t *testing.T) { }) } -func testAccProjectDataSourceConfig(name string) string { +func testAccProjectDataSourceConfig(name, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-%s" @@ -48,6 +48,7 @@ resource "vercel_project" "test" { output_directory = ".output" public_source = true root_directory = "ui/src" + %s environment = [ { key = "foo" @@ -59,6 +60,7 @@ resource "vercel_project" "test" { data "vercel_project" "test" { name = vercel_project.test.name + %[2]s } -`, name) +`, name, teamID) } diff --git a/vercel/provider_test.go b/vercel/provider_test.go index f77384fb..7f800e31 100644 --- a/vercel/provider_test.go +++ b/vercel/provider_test.go @@ -1,6 +1,7 @@ package vercel_test import ( + "fmt" "os" "testing" @@ -25,7 +26,6 @@ func testAccPreCheck(t *testing.T) { mustHaveEnv(t, "VERCEL_TERRAFORM_TESTING_GITHUB_REPO") mustHaveEnv(t, "VERCEL_TERRAFORM_TESTING_GITLAB_REPO") mustHaveEnv(t, "VERCEL_TERRAFORM_TESTING_BITBUCKET_REPO") - mustHaveEnv(t, "VERCEL_TERRAFORM_TESTING_TEAM") mustHaveEnv(t, "VERCEL_TERRAFORM_TESTING_DOMAIN") } @@ -59,6 +59,13 @@ func testTeam() string { return os.Getenv("VERCEL_TERRAFORM_TESTING_TEAM") } +func teamIDConfig() string { + if testTeam() == "" { + return "" + } + return fmt.Sprintf("team_id = \"%s\"", testTeam()) +} + func testDomain() string { return os.Getenv("VERCEL_TERRAFORM_TESTING_DOMAIN") } diff --git a/vercel/resource_alias_test.go b/vercel/resource_alias_test.go index 7b8e2750..c4f2c050 100644 --- a/vercel/resource_alias_test.go +++ b/vercel/resource_alias_test.go @@ -42,26 +42,6 @@ func testCheckAliasDestroyed(n, teamID string) resource.TestCheckFunc { } func TestAcc_AliasResource(t *testing.T) { - name := acctest.RandString(16) - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - CheckDestroy: testCheckAliasDestroyed("vercel_alias.test", ""), - Steps: []resource.TestStep{ - { - Config: testAccAliasResourceConfig(name, ""), - Check: resource.ComposeAggregateTestCheckFunc( - testCheckAliasExists("", fmt.Sprintf("test-acc-%s.vercel.app", name)), - resource.TestCheckResourceAttr("vercel_alias.test", "alias", fmt.Sprintf("test-acc-%s.vercel.app", name)), - resource.TestCheckResourceAttrSet("vercel_alias.test", "id"), - resource.TestCheckResourceAttrSet("vercel_alias.test", "deployment_id"), - ), - }, - }, - }) -} - -func TestAcc_AliasResourceTeam(t *testing.T) { name := acctest.RandString(16) resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -69,11 +49,10 @@ func TestAcc_AliasResourceTeam(t *testing.T) { CheckDestroy: testCheckAliasDestroyed("vercel_alias.test", testTeam()), Steps: []resource.TestStep{ { - Config: testAccAliasResourceConfig(name, fmt.Sprintf("team_id = \"%s\"", testTeam())), + Config: testAccAliasResourceConfig(name, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( testCheckAliasExists(testTeam(), fmt.Sprintf("test-acc-%s.vercel.app", name)), resource.TestCheckResourceAttr("vercel_alias.test", "alias", fmt.Sprintf("test-acc-%s.vercel.app", name)), - resource.TestCheckResourceAttr("vercel_alias.test", "team_id", testTeam()), resource.TestCheckResourceAttrSet("vercel_alias.test", "id"), resource.TestCheckResourceAttrSet("vercel_alias.test", "deployment_id"), ), diff --git a/vercel/resource_deployment_test.go b/vercel/resource_deployment_test.go index 62b0bf47..cda07433 100644 --- a/vercel/resource_deployment_test.go +++ b/vercel/resource_deployment_test.go @@ -68,11 +68,28 @@ func noopDestroyCheck(*terraform.State) error { } func TestAcc_Deployment(t *testing.T) { - testAccDeployment(t, "") -} + projectSuffix := acctest.RandString(16) + + testTeamID := resource.TestCheckNoResourceAttr("vercel_deployment.test", "team_id") + if testTeam() != "" { + testTeamID = resource.TestCheckResourceAttr("vercel_deployment.test", "team_id", testTeam()) + } -func TestAcc_DeploymentWithTeamID(t *testing.T) { - testAccDeployment(t, testTeam()) + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: noopDestroyCheck, + Steps: []resource.TestStep{ + { + Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(), ""), + Check: resource.ComposeAggregateTestCheckFunc( + testTeamID, + testAccDeploymentExists("vercel_deployment.test", ""), + resource.TestCheckResourceAttr("vercel_deployment.test", "production", "true"), + ), + }, + }, + }) } func TestAcc_DeploymentWithEnvironment(t *testing.T) { @@ -83,7 +100,7 @@ func TestAcc_DeploymentWithEnvironment(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, "", `environment = { + Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(), `environment = { FOO = "baz", BAR = "qux" }`), @@ -106,10 +123,8 @@ func TestAcc_DeploymentWithProjectSettings(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, "", `project_settings = { + Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(), `project_settings = { output_directory = ".", - # build command is commented out until a later point, as it is causing issues - # build_command = "echo 'wat'" }`), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists("vercel_deployment.test", ""), @@ -130,7 +145,7 @@ func TestAcc_DeploymentWithRootDirectoryOverride(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccRootDirectoryOverride(projectSuffix), + Config: testAccRootDirectoryOverride(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists("vercel_deployment.test", ""), resource.TestCheckResourceAttr("vercel_deployment.test", "production", "true"), @@ -148,7 +163,7 @@ func TestAcc_DeploymentWithPathPrefix(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccRootDirectoryWithPathPrefix(projectSuffix), + Config: testAccRootDirectoryWithPathPrefix(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists("vercel_deployment.test", ""), ), @@ -193,85 +208,46 @@ func TestAcc_DeploymentWithDeleteOnDestroy(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, "", extraConfig), + Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(), extraConfig), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists("vercel_deployment.test", ""), storeDeploymentId("vercel_deployment.test", &deploymentID), ), }, { - Config: testAccDeploymentConfigWithNoDeployment(projectSuffix), + Config: testAccDeploymentConfigWithNoDeployment(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( testDeploymentGone(), ), }, }, }) - } -func testAccDeployment(t *testing.T, tid string) { +func TestAcc_DeploymentWithGitSource(t *testing.T) { projectSuffix := acctest.RandString(16) - extraConfig := "" - testTeamID := resource.TestCheckNoResourceAttr("vercel_deployment.test", "team_id") - if tid != "" { - extraConfig = fmt.Sprintf(`team_id = "%s"`, tid) - testTeamID = resource.TestCheckResourceAttr("vercel_deployment.test", "team_id", tid) - } - resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, CheckDestroy: noopDestroyCheck, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, extraConfig, extraConfig), + Config: testAccDeployFromGitSource(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( - testTeamID, - testAccDeploymentExists("vercel_deployment.test", ""), - resource.TestCheckResourceAttr("vercel_deployment.test", "production", "true"), + testAccDeploymentExists("vercel_deployment.bitbucket", testTeam()), + testAccDeploymentExists("vercel_deployment.gitlab", testTeam()), + testAccDeploymentExists("vercel_deployment.github", testTeam()), ), }, }, }) } -func TestAcc_DeploymentWithGitSource(t *testing.T) { - tests := map[string]string{ - "personal scope": "", - "team scope": testTeam(), - } - - for name, teamID := range tests { - t.Run(name, func(t *testing.T) { - extraConfig := "" - projectSuffix := acctest.RandString(16) - if teamID != "" { - extraConfig = fmt.Sprintf(`team_id = "%s"`, teamID) - } - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - CheckDestroy: noopDestroyCheck, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - Steps: []resource.TestStep{ - { - Config: testAccDeployFromGitSource(projectSuffix, extraConfig), - Check: resource.ComposeAggregateTestCheckFunc( - testAccDeploymentExists("vercel_deployment.bitbucket", teamID), - testAccDeploymentExists("vercel_deployment.gitlab", teamID), - testAccDeploymentExists("vercel_deployment.github", teamID), - ), - }, - }, - }) - }) - } -} - -func testAccDeploymentConfigWithNoDeployment(projectSuffix string) string { +func testAccDeploymentConfigWithNoDeployment(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { - name = "test-acc-deployment-%s" + name = "test-acc-deployment-%[1]s" + %[2]s environment = [ { key = "bar" @@ -280,14 +256,14 @@ resource "vercel_project" "test" { } ] } -`, projectSuffix) +`, projectSuffix, teamID) } -func testAccDeploymentConfig(projectSuffix, projectExtras, deploymentExtras string) string { +func testAccDeploymentConfig(projectSuffix, teamID, deploymentExtras string) string { return fmt.Sprintf(` resource "vercel_project" "test" { - name = "test-acc-deployment-%s" - %s + name = "test-acc-deployment-%[1]s" + %[2]s environment = [ { key = "bar" @@ -302,19 +278,21 @@ data "vercel_file" "index" { } resource "vercel_deployment" "test" { - %s + %[2]s + %[3]s project_id = vercel_project.test.id files = data.vercel_file.index.file production = true } -`, projectSuffix, projectExtras, deploymentExtras) +`, projectSuffix, teamID, deploymentExtras) } -func testAccRootDirectoryOverride(projectSuffix string) string { +func testAccRootDirectoryOverride(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { - name = "test-acc-deployment-%s" + name = "test-acc-deployment-%[1]s" + %[2]s } data "vercel_file" "index" { @@ -323,32 +301,35 @@ data "vercel_file" "index" { resource "vercel_deployment" "test" { project_id = vercel_project.test.id + %[2]s files = data.vercel_file.index.file production = true project_settings = { root_directory = "vercel/example" } -}`, projectSuffix) +}`, projectSuffix, teamID) } -func testAccRootDirectoryWithPathPrefix(projectSuffix string) string { +func testAccRootDirectoryWithPathPrefix(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { - name = "test-acc-deployment-%s" + name = "test-acc-deployment-%[1]s" + %[2]s } data "vercel_file" "index" { - path = "../vercel/example/index.html" + path = "../vercel/example/index.html" } resource "vercel_deployment" "test" { project_id = vercel_project.test.id + %[2]s files = data.vercel_file.index.file path_prefix = "../vercel/example" -}`, projectSuffix) +}`, projectSuffix, teamID) } -func testAccDeployFromGitSource(projectSuffix, extras string) string { +func testAccDeployFromGitSource(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "github" { name = "test-acc-deployment-%[1]s-github" @@ -389,5 +370,5 @@ resource "vercel_deployment" "bitbucket" { ref = "main" %[5]s } -`, projectSuffix, testGithubRepo(), testGitlabRepo(), testBitbucketRepo(), extras) +`, projectSuffix, testGithubRepo(), testGitlabRepo(), testBitbucketRepo(), teamID) } diff --git a/vercel/resource_project_domain_test.go b/vercel/resource_project_domain_test.go index 38b69b41..da0ea9f4 100644 --- a/vercel/resource_project_domain_test.go +++ b/vercel/resource_project_domain_test.go @@ -13,12 +13,51 @@ import ( func TestAcc_ProjectDomain(t *testing.T) { t.Parallel() - testAccProjectDomain(t, "") -} + testTeamID := resource.TestCheckNoResourceAttr("vercel_project.test", "team_id") + if testTeam() != "" { + testTeamID = resource.TestCheckResourceAttr("vercel_project.test", "team_id", testTeam()) + } + + projectSuffix := acctest.RandString(16) + domain := acctest.RandString(30) + ".vercel.app" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: noopDestroyCheck, + Steps: []resource.TestStep{ + // Create and Read testing + { + Config: testAccProjectDomainConfig(projectSuffix, domain, teamIDConfig()), + Check: resource.ComposeAggregateTestCheckFunc( + testAccProjectDomainExists("vercel_project.test", testTeam(), domain), + testTeamID, + resource.TestCheckResourceAttr("vercel_project_domain.test", "domain", domain), + ), + }, + // Update testing + { + Config: testAccProjectDomainConfigUpdated(projectSuffix, domain, teamIDConfig()), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("vercel_project_domain.test", "redirect", "test-acc-domain.vercel.app"), + ), + }, + // Redirect Update testing + { + Config: testAccProjectDomainConfigUpdated2(projectSuffix, domain, teamIDConfig()), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("vercel_project_domain.test", "redirect", "test-acc-domain.vercel.app"), + resource.TestCheckResourceAttr("vercel_project_domain.test", "redirect_status_code", "307"), + ), + }, + // Delete testing + { + Config: testAccProjectDomainConfigDeleted(projectSuffix, teamIDConfig()), + Check: testAccProjectDomainDestroy("vercel_project.test", testTeam(), domain), + }, + }, + }) -func TestAcc_ProjectDomainWithTeamID(t *testing.T) { - t.Parallel() - testAccProjectDomain(t, testTeam()) } func testAccProjectDomainExists(n, teamID, domain string) resource.TestCheckFunc { @@ -59,55 +98,6 @@ func testAccProjectDomainDestroy(n, teamID, domain string) resource.TestCheckFun } } -func testAccProjectDomain(t *testing.T, tid string) { - extraConfig := "" - testTeamID := resource.TestCheckNoResourceAttr("vercel_project.test", "team_id") - if tid != "" { - extraConfig = fmt.Sprintf(`team_id = "%s"`, tid) - testTeamID = resource.TestCheckResourceAttr("vercel_project.test", "team_id", tid) - } - - projectSuffix := acctest.RandString(16) - domain := acctest.RandString(30) + ".vercel.app" - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - CheckDestroy: noopDestroyCheck, - Steps: []resource.TestStep{ - // Create and Read testing - { - Config: testAccProjectDomainConfig(projectSuffix, domain, extraConfig), - Check: resource.ComposeAggregateTestCheckFunc( - testAccProjectDomainExists("vercel_project.test", tid, domain), - testTeamID, - resource.TestCheckResourceAttr("vercel_project_domain.test", "domain", domain), - ), - }, - // Update testing - { - Config: testAccProjectDomainConfigUpdated(projectSuffix, domain, extraConfig), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("vercel_project_domain.test", "redirect", "test-acc-domain.vercel.app"), - ), - }, - // Redirect Update testing - { - Config: testAccProjectDomainConfigUpdated2(projectSuffix, domain, extraConfig), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("vercel_project_domain.test", "redirect", "test-acc-domain.vercel.app"), - resource.TestCheckResourceAttr("vercel_project_domain.test", "redirect_status_code", "307"), - ), - }, - // Delete testing - { - Config: testAccProjectDomainConfigDeleted(projectSuffix, extraConfig), - Check: testAccProjectDomainDestroy("vercel_project.test", tid, domain), - }, - }, - }) -} - func testAccProjectDomainConfig(projectSuffix, domain, extra string) string { return fmt.Sprintf(` resource "vercel_project" "test" { diff --git a/vercel/resource_project_test.go b/vercel/resource_project_test.go index c24aefc6..efa43d39 100644 --- a/vercel/resource_project_test.go +++ b/vercel/resource_project_test.go @@ -12,65 +12,54 @@ import ( ) func TestAcc_Project(t *testing.T) { - tests := map[string]string{ - "personal scope": "", - "team scope": testTeam(), + testTeamID := resource.TestCheckNoResourceAttr("vercel_project.test", "team_id") + if testTeam() != "" { + testTeamID = resource.TestCheckResourceAttr("vercel_project.test", "team_id", testTeam()) } + projectSuffix := acctest.RandString(16) - for name, teamID := range tests { - t.Run(name, func(t *testing.T) { - extraConfig := "" - testTeamID := resource.TestCheckNoResourceAttr("vercel_project.test", "team_id") - if teamID != "" { - extraConfig = fmt.Sprintf(`team_id = "%s"`, teamID) - testTeamID = resource.TestCheckResourceAttr("vercel_project.test", "team_id", teamID) - } - projectSuffix := acctest.RandString(16) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - CheckDestroy: testAccProjectDestroy("vercel_project.test", teamID), - Steps: []resource.TestStep{ - // Create and Read testing - { - Config: testAccProjectConfig(projectSuffix, extraConfig), - Check: resource.ComposeAggregateTestCheckFunc( - testAccProjectExists("vercel_project.test", teamID), - testTeamID, - resource.TestCheckResourceAttr("vercel_project.test", "name", fmt.Sprintf("test-acc-project-%s", projectSuffix)), - resource.TestCheckResourceAttr("vercel_project.test", "build_command", "npm run build"), - resource.TestCheckResourceAttr("vercel_project.test", "dev_command", "npm run serve"), - resource.TestCheckResourceAttr("vercel_project.test", "framework", "nextjs"), - resource.TestCheckResourceAttr("vercel_project.test", "install_command", "npm install"), - resource.TestCheckResourceAttr("vercel_project.test", "output_directory", ".output"), - resource.TestCheckResourceAttr("vercel_project.test", "public_source", "true"), - resource.TestCheckResourceAttr("vercel_project.test", "root_directory", "ui/src"), - resource.TestCheckResourceAttr("vercel_project.test", "ignore_command", "echo 'wat'"), - resource.TestCheckResourceAttr("vercel_project.test", "serverless_function_region", "syd1"), - resource.TestCheckTypeSetElemNestedAttrs("vercel_project.test", "environment.*", map[string]string{ - "key": "foo", - "value": "bar", - }), - resource.TestCheckTypeSetElemAttr("vercel_project.test", "environment.0.target.*", "production"), - ), - }, - // Update testing - { - Config: testAccProjectConfigUpdated(projectSuffix, extraConfig), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("vercel_project.test", "name", fmt.Sprintf("test-acc-two-%s", projectSuffix)), - resource.TestCheckNoResourceAttr("vercel_project.test", "build_command"), - resource.TestCheckTypeSetElemNestedAttrs("vercel_project.test", "environment.*", map[string]string{ - "key": "bar", - "value": "baz", - }), - ), - }, - }, - }) - }) - } + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccProjectDestroy("vercel_project.test", testTeam()), + Steps: []resource.TestStep{ + // Create and Read testing + { + Config: testAccProjectConfig(projectSuffix, teamIDConfig()), + Check: resource.ComposeAggregateTestCheckFunc( + testAccProjectExists("vercel_project.test", testTeam()), + testTeamID, + resource.TestCheckResourceAttr("vercel_project.test", "name", fmt.Sprintf("test-acc-project-%s", projectSuffix)), + resource.TestCheckResourceAttr("vercel_project.test", "build_command", "npm run build"), + resource.TestCheckResourceAttr("vercel_project.test", "dev_command", "npm run serve"), + resource.TestCheckResourceAttr("vercel_project.test", "framework", "nextjs"), + resource.TestCheckResourceAttr("vercel_project.test", "install_command", "npm install"), + resource.TestCheckResourceAttr("vercel_project.test", "output_directory", ".output"), + resource.TestCheckResourceAttr("vercel_project.test", "public_source", "true"), + resource.TestCheckResourceAttr("vercel_project.test", "root_directory", "ui/src"), + resource.TestCheckResourceAttr("vercel_project.test", "ignore_command", "echo 'wat'"), + resource.TestCheckResourceAttr("vercel_project.test", "serverless_function_region", "syd1"), + resource.TestCheckTypeSetElemNestedAttrs("vercel_project.test", "environment.*", map[string]string{ + "key": "foo", + "value": "bar", + }), + resource.TestCheckTypeSetElemAttr("vercel_project.test", "environment.0.target.*", "production"), + ), + }, + // Update testing + { + Config: testAccProjectConfigUpdated(projectSuffix, teamIDConfig()), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("vercel_project.test", "name", fmt.Sprintf("test-acc-two-%s", projectSuffix)), + resource.TestCheckNoResourceAttr("vercel_project.test", "build_command"), + resource.TestCheckTypeSetElemNestedAttrs("vercel_project.test", "environment.*", map[string]string{ + "key": "bar", + "value": "baz", + }), + ), + }, + }, + }) } func TestAcc_ProjectAddingEnvAfterInitialCreation(t *testing.T) { @@ -79,18 +68,18 @@ func TestAcc_ProjectAddingEnvAfterInitialCreation(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - CheckDestroy: testAccProjectDestroy("vercel_project.test", ""), + CheckDestroy: testAccProjectDestroy("vercel_project.test", testTeam()), Steps: []resource.TestStep{ { - Config: testAccProjectConfigWithoutEnv(projectSuffix, ""), + Config: testAccProjectConfigWithoutEnv(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( - testAccProjectExists("vercel_project.test", ""), + testAccProjectExists("vercel_project.test", testTeam()), ), }, { - Config: testAccProjectConfigUpdated(projectSuffix, ""), + Config: testAccProjectConfigUpdated(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( - testAccProjectExists("vercel_project.test", ""), + testAccProjectExists("vercel_project.test", testTeam()), ), }, }, @@ -103,12 +92,12 @@ func TestAcc_ProjectWithGitRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - CheckDestroy: testAccProjectDestroy("vercel_project.test_git", ""), + CheckDestroy: testAccProjectDestroy("vercel_project.test_git", testTeam()), Steps: []resource.TestStep{ { - Config: testAccProjectConfigWithGitRepo(projectSuffix), + Config: testAccProjectConfigWithGitRepo(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( - testAccProjectExists("vercel_project.test_git", ""), + testAccProjectExists("vercel_project.test_git", testTeam()), resource.TestCheckResourceAttr("vercel_project.test_git", "git_repository.type", "github"), resource.TestCheckResourceAttr("vercel_project.test_git", "git_repository.repo", testGithubRepo()), resource.TestCheckTypeSetElemNestedAttrs("vercel_project.test_git", "environment.*", map[string]string{ @@ -119,9 +108,9 @@ func TestAcc_ProjectWithGitRepository(t *testing.T) { ), }, { - Config: testAccProjectConfigWithGitRepoUpdated(projectSuffix), + Config: testAccProjectConfigWithGitRepoUpdated(projectSuffix, teamIDConfig()), Check: resource.ComposeAggregateTestCheckFunc( - testAccProjectExists("vercel_project.test_git", ""), + testAccProjectExists("vercel_project.test_git", testTeam()), resource.TestCheckTypeSetElemNestedAttrs("vercel_project.test_git", "environment.*", map[string]string{ "key": "foo", "value": "bar2", @@ -139,7 +128,7 @@ func TestAcc_ProjectImport(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - CheckDestroy: testAccProjectDestroy("vercel_project.test", ""), + CheckDestroy: testAccProjectDestroy("vercel_project.test", testTeam()), Steps: []resource.TestStep{ { Config: testAccProjectConfig(projectSuffix, ""), @@ -195,16 +184,16 @@ func testAccProjectDestroy(n, teamID string) resource.TestCheckFunc { } } -func testAccProjectConfigWithoutEnv(projectSuffix, extras string) string { +func testAccProjectConfigWithoutEnv(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-two-%s" %s } -`, projectSuffix, extras) +`, projectSuffix, teamID) } -func testAccProjectConfigUpdated(projectSuffix, extras string) string { +func testAccProjectConfigUpdated(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-two-%s" @@ -242,13 +231,14 @@ resource "vercel_project" "test" { } ] } -`, projectSuffix, extras) +`, projectSuffix, teamID) } -func testAccProjectConfigWithGitRepo(projectSuffix string) string { +func testAccProjectConfigWithGitRepo(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test_git" { name = "test-acc-two-%s" + %s git_repository = { type = "github" repo = "%s" @@ -262,13 +252,14 @@ resource "vercel_project" "test_git" { } ] } - `, projectSuffix, testGithubRepo()) + `, projectSuffix, teamID, testGithubRepo()) } -func testAccProjectConfigWithGitRepoUpdated(projectSuffix string) string { +func testAccProjectConfigWithGitRepoUpdated(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test_git" { name = "test-acc-two-%s" + %s git_repository = { type = "github" repo = "%s" @@ -282,10 +273,10 @@ resource "vercel_project" "test_git" { } ] } - `, projectSuffix, testGithubRepo()) + `, projectSuffix, teamID, testGithubRepo()) } -func testAccProjectConfig(projectSuffix, extra string) string { +func testAccProjectConfig(projectSuffix, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-project-%s" @@ -332,5 +323,5 @@ resource "vercel_project" "test" { } ] } -`, projectSuffix, extra) +`, projectSuffix, teamID) }