这是indexloc提供的服务,不要输入任何密码
Skip to content

Refactor majority of tests to optionally require a team #51

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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 18, 2022
Merged
Show file tree
Hide file tree
Changes from all 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
20 changes: 1 addition & 19 deletions vercel/data_source_alias_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()),
Expand Down
8 changes: 5 additions & 3 deletions vercel/data_source_project_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand All @@ -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"
Expand All @@ -48,6 +48,7 @@ resource "vercel_project" "test" {
output_directory = ".output"
public_source = true
root_directory = "ui/src"
%s
environment = [
{
key = "foo"
Expand All @@ -59,6 +60,7 @@ resource "vercel_project" "test" {

data "vercel_project" "test" {
name = vercel_project.test.name
%[2]s
}
`, name)
`, name, teamID)
}
9 changes: 8 additions & 1 deletion vercel/provider_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package vercel_test

import (
"fmt"
"os"
"testing"

Expand All @@ -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")
}

Expand Down Expand Up @@ -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")
}
23 changes: 1 addition & 22 deletions vercel/resource_alias_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,38 +42,17 @@ 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) },
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
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"),
),
Expand Down
131 changes: 56 additions & 75 deletions vercel/resource_deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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"
}`),
Expand All @@ -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", ""),
Expand All @@ -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"),
Expand All @@ -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", ""),
),
Expand Down Expand Up @@ -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"
Expand All @@ -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"
Expand All @@ -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" {
Expand All @@ -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"
Expand Down Expand Up @@ -389,5 +370,5 @@ resource "vercel_deployment" "bitbucket" {
ref = "main"
%[5]s
}
`, projectSuffix, testGithubRepo(), testGitlabRepo(), testBitbucketRepo(), extras)
`, projectSuffix, testGithubRepo(), testGitlabRepo(), testBitbucketRepo(), teamID)
}
Loading