From 64e40af5aa31852db447d193cc0bb59a44a73742 Mon Sep 17 00:00:00 2001 From: Douglas Harcourt Parsons Date: Tue, 13 May 2025 21:14:02 +0100 Subject: [PATCH 1/6] Start work on refactoring tests to use a configured provider The tests specifying team_id everywhere is... kinda weird and annoying. It's much nicer to have a provider configured with team_id separately, then all resources and data sources can use the implicit team_id. --- vercel/provider_test.go | 22 ++++++++++++++++++---- vercel/resource_access_group_test.go | 18 ++++++++---------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/vercel/provider_test.go b/vercel/provider_test.go index 1d6e27b5..c27c5db0 100644 --- a/vercel/provider_test.go +++ b/vercel/provider_test.go @@ -25,6 +25,20 @@ func testClient(t *testing.T) *client.Client { return tc } +func cfg(config string) string { + team := os.Getenv("VERCEL_TERRAFORM_TESTING_TEAM") + if team == "" { + panic("Missing required environment variable VERCEL_TERRAFORM_TESTING_TEAM") + } + return fmt.Sprintf(` +provider "vercel" { + team = "%[1]s" +} + +%[2]s +`, team, config) +} + func apiToken(t *testing.T) string { value := os.Getenv("VERCEL_API_TOKEN") if value == "" { @@ -57,10 +71,6 @@ func testTeam(t *testing.T) string { return value } -func teamIDConfig(t *testing.T) string { - return fmt.Sprintf("team_id = \"%s\"", testTeam(t)) -} - func testDomain(t *testing.T) string { value := os.Getenv("VERCEL_TERRAFORM_TESTING_DOMAIN") if value == "" { @@ -77,6 +87,10 @@ func testAdditionalUser(t *testing.T) string { return value } +func teamIDConfig(t *testing.T) string { + return fmt.Sprintf("team_id = \"%s\"", testTeam(t)) +} + func testExistingIntegration(t *testing.T) string { value := os.Getenv("VERCEL_TERRAFORM_TESTING_EXISTING_INTEGRATION") if value == "" { diff --git a/vercel/resource_access_group_test.go b/vercel/resource_access_group_test.go index 0ba71827..2202e24e 100644 --- a/vercel/resource_access_group_test.go +++ b/vercel/resource_access_group_test.go @@ -21,7 +21,7 @@ func TestAcc_AccessGroupResource(t *testing.T) { ), Steps: []resource.TestStep{ { - Config: testAccResourceAccessGroup(teamIDConfig(t), name), + Config: cfg(testAccResourceAccessGroup(name)), Check: resource.ComposeAggregateTestCheckFunc( testCheckAccessGroupExists(testClient(t), testTeam(t), "vercel_access_group.test"), resource.TestCheckResourceAttrSet("vercel_access_group.test", "id"), @@ -34,7 +34,7 @@ func TestAcc_AccessGroupResource(t *testing.T) { ImportStateIdFunc: getAccessGroupImportID("vercel_access_group.test"), }, { - Config: testAccResourceAccessGroupUpdated(teamIDConfig(t), name), + Config: cfg(testAccResourceAccessGroupUpdated(name)), Check: resource.ComposeAggregateTestCheckFunc( testCheckAccessGroupExists(testClient(t), testTeam(t), "vercel_access_group.test"), resource.TestCheckResourceAttrSet("vercel_access_group.test", "id"), @@ -113,20 +113,18 @@ func testCheckAccessGroupDoesNotExist(testClient *client.Client, teamID string, } } -func testAccResourceAccessGroup(teamIDConfig string, name string) string { +func testAccResourceAccessGroup(name string) string { return fmt.Sprintf(` resource "vercel_access_group" "test" { - %[1]s - name = "test-acc-%[2]s" + name = "test-acc-%[1]s" } -`, teamIDConfig, name) +`, name) } -func testAccResourceAccessGroupUpdated(teamIDConfig string, name string) string { +func testAccResourceAccessGroupUpdated(name string) string { return fmt.Sprintf(` resource "vercel_access_group" "test" { - %[1]s - name = "test-acc-%[2]s-updated" + name = "test-acc-%[1]s-updated" } -`, teamIDConfig, name) +`, name) } From c36fd0213411b94a159e3c7185ac75083089b826 Mon Sep 17 00:00:00 2001 From: Douglas Harcourt Parsons Date: Wed, 14 May 2025 10:07:25 +0100 Subject: [PATCH 2/6] Refactor all data_source tests to use `cfg` wrapper, initialising the provider --- vercel/data_source_access_group_project_test.go | 14 +++++--------- vercel/data_source_access_group_test.go | 10 ++++------ vercel/data_source_alias_test.go | 12 ++++-------- .../data_source_attack_challenge_mode_test.go | 14 +++----------- vercel/data_source_custom_environment_test.go | 9 +++------ vercel/data_source_deployment_test.go | 8 +++----- vercel/data_source_edge_config_item_test.go | 15 +++++---------- vercel/data_source_edge_config_schema_test.go | 17 ++++++----------- vercel/data_source_edge_config_test.go | 8 +++----- vercel/data_source_edge_config_token_test.go | 9 +++------ .../data_source_endpoint_verification_test.go | 11 +---------- vercel/data_source_microfrontend_group_test.go | 12 +++--------- ..._source_project_deployment_retention_test.go | 11 +++-------- vercel/data_source_project_directory_test.go | 14 +++++--------- vercel/data_source_project_members_test.go | 9 +++------ vercel/data_source_project_test.go | 10 ++++------ ...a_source_shared_environment_variable_test.go | 12 +++--------- vercel/data_source_team_member_test.go | 5 ++--- 18 files changed, 63 insertions(+), 137 deletions(-) diff --git a/vercel/data_source_access_group_project_test.go b/vercel/data_source_access_group_project_test.go index 5802fd4a..160cfb95 100644 --- a/vercel/data_source_access_group_project_test.go +++ b/vercel/data_source_access_group_project_test.go @@ -14,7 +14,7 @@ func TestAcc_AccessGroupProjectDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccAccessGroupProjectDataSource(teamIDConfig(t), name), + Config: cfg(testAccAccessGroupProjectDataSource(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_access_group_project.test", "role", "ADMIN"), ), @@ -23,32 +23,28 @@ func TestAcc_AccessGroupProjectDataSource(t *testing.T) { }) } -func testAccAccessGroupProjectDataSource(teamIDConfig string, name string) string { +func testAccAccessGroupProjectDataSource(name string) string { return fmt.Sprintf(` resource "vercel_project" "test" { - %[1]s - name = "test-acc-%[2]s" + name = "test-acc-%[1]s" } resource "vercel_access_group" "test" { - %[1]s - name = "test-acc-%[2]s" + name = "test-acc-%[1]s" } resource "vercel_access_group_project" "test" { - %[1]s access_group_id = vercel_access_group.test.id project_id = vercel_project.test.id role = "ADMIN" } data "vercel_access_group_project" "test" { - %[1]s access_group_id = vercel_access_group.test.id project_id = vercel_project.test.id depends_on = [ vercel_access_group_project.test ] } -`, teamIDConfig, name) +`, name) } diff --git a/vercel/data_source_access_group_test.go b/vercel/data_source_access_group_test.go index 0c04173a..6016440d 100644 --- a/vercel/data_source_access_group_test.go +++ b/vercel/data_source_access_group_test.go @@ -14,7 +14,7 @@ func TestAcc_AccessGroupDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccAccessGroupDataSource(teamIDConfig(t), name), + Config: cfg(testAccAccessGroupDataSource(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_access_group.test", "name", "test-acc-"+name), ), @@ -23,16 +23,14 @@ func TestAcc_AccessGroupDataSource(t *testing.T) { }) } -func testAccAccessGroupDataSource(teamIDConfig string, name string) string { +func testAccAccessGroupDataSource(name string) string { return fmt.Sprintf(` resource "vercel_access_group" "test" { - name = "test-acc-%[2]s" - %[1]s + name = "test-acc-%[1]s" } data "vercel_access_group" "test" { id = vercel_access_group.test.id - %[1]s } -`, teamIDConfig, name) +`, name) } diff --git a/vercel/data_source_alias_test.go b/vercel/data_source_alias_test.go index 7c81e04c..74f8391a 100644 --- a/vercel/data_source_alias_test.go +++ b/vercel/data_source_alias_test.go @@ -14,7 +14,7 @@ func TestAcc_AliasDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccAliasDataSourceConfig(name, teamIDConfig(t), testGithubRepo(t)), + Config: cfg(testAccAliasDataSourceConfig(name, testGithubRepo(t))), 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(t)), @@ -26,32 +26,28 @@ func TestAcc_AliasDataSource(t *testing.T) { }) } -func testAccAliasDataSourceConfig(name, team string, testGithubRepo string) string { +func testAccAliasDataSourceConfig(name, testGithubRepo string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-%[1]s" - %[2]s git_repository = { type = "github" - repo = "%[3]s" + repo = "%[2]s" } } resource "vercel_deployment" "test" { project_id = vercel_project.test.id - %[2]s ref = "main" } resource "vercel_alias" "test" { alias = "test-acc-%[1]s.vercel.app" - %[2]s deployment_id = vercel_deployment.test.id } data "vercel_alias" "test" { alias = vercel_alias.test.alias - %[2]s } -`, name, team, testGithubRepo) +`, name, testGithubRepo) } diff --git a/vercel/data_source_attack_challenge_mode_test.go b/vercel/data_source_attack_challenge_mode_test.go index a5099323..570ca180 100644 --- a/vercel/data_source_attack_challenge_mode_test.go +++ b/vercel/data_source_attack_challenge_mode_test.go @@ -14,7 +14,7 @@ func TestAcc_AttackChallengeModeDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccAttackChallengeModeConfig(name, teamIDConfig(t)), + Config: cfg(testAccAttackChallengeModeConfig(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_attack_challenge_mode.never_enabled", "enabled", "false"), resource.TestCheckResourceAttr("data.vercel_attack_challenge_mode.enabled", "enabled", "true"), @@ -25,48 +25,40 @@ func TestAcc_AttackChallengeModeDataSource(t *testing.T) { }) } -func testAccAttackChallengeModeConfig(name, teamID string) string { +func testAccAttackChallengeModeConfig(name string) string { return fmt.Sprintf(` resource "vercel_project" "never_enabled" { name = "test-acc-%[1]s" - %[2]s } data "vercel_attack_challenge_mode" "never_enabled" { project_id = vercel_project.never_enabled.id - %[2]s } resource "vercel_project" "enabled" { name = "test-acc-%[1]s-enabled" - %[2]s } resource "vercel_attack_challenge_mode" "enabled" { project_id = vercel_project.enabled.id enabled = true - %[2]s } data "vercel_attack_challenge_mode" "enabled" { project_id = vercel_attack_challenge_mode.enabled.project_id - %[2]s } resource "vercel_project" "disabled" { name = "test-acc-%[1]s-disabled" - %[2]s } resource "vercel_attack_challenge_mode" "disabled" { project_id = vercel_project.disabled.id enabled = false - %[2]s } data "vercel_attack_challenge_mode" "disabled" { project_id = vercel_attack_challenge_mode.disabled.project_id - %[2]s } -`, name, teamID) +`, name) } diff --git a/vercel/data_source_custom_environment_test.go b/vercel/data_source_custom_environment_test.go index 6f1c208f..13bd5cc6 100644 --- a/vercel/data_source_custom_environment_test.go +++ b/vercel/data_source_custom_environment_test.go @@ -15,7 +15,7 @@ func TestAcc_CustomEnvironmentDataSource(t *testing.T) { CheckDestroy: testAccProjectDestroy(testClient(t), "vercel_project.test", testTeam(t)), Steps: []resource.TestStep{ { - Config: testAccCustomEnvironmentDataSource(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccCustomEnvironmentDataSource(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_custom_environment.test", "id"), resource.TestCheckResourceAttrSet("data.vercel_custom_environment.test", "project_id"), @@ -29,16 +29,14 @@ func TestAcc_CustomEnvironmentDataSource(t *testing.T) { }) } -func testAccCustomEnvironmentDataSource(projectSuffix, teamIDConfig string) string { +func testAccCustomEnvironmentDataSource(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-custom-env-data-source-%[1]s" - %[2]s } resource "vercel_custom_environment" "test" { project_id = vercel_project.test.id - %[2]s name = "test-acc-ce-%[1]s" description = "oh cool" branch_tracking = { @@ -49,8 +47,7 @@ resource "vercel_custom_environment" "test" { data "vercel_custom_environment" "test" { project_id = vercel_project.test.id - %[2]s name = vercel_custom_environment.test.name } -`, projectSuffix, teamIDConfig) +`, projectSuffix) } diff --git a/vercel/data_source_deployment_test.go b/vercel/data_source_deployment_test.go index 2c6fa8c5..a21427b0 100644 --- a/vercel/data_source_deployment_test.go +++ b/vercel/data_source_deployment_test.go @@ -14,7 +14,7 @@ func TestAcc_DeploymentDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentDataSourceConfig(name, teamIDConfig(t)), + Config: cfg(testAccDeploymentDataSourceConfig(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_deployment.by_id", "id"), resource.TestCheckResourceAttrSet("data.vercel_deployment.by_id", "project_id"), @@ -33,7 +33,7 @@ func TestAcc_DeploymentDataSource(t *testing.T) { }) } -func testAccDeploymentDataSourceConfig(name, teamID string) string { +func testAccDeploymentDataSourceConfig(name string) string { return fmt.Sprintf(` data "vercel_deployment" "by_id" { id = vercel_deployment.test.id @@ -45,7 +45,6 @@ data "vercel_deployment" "by_url" { resource "vercel_project" "test" { name = "test-acc-deployment-%[1]s" - %[2]s environment = [ { key = "bar" @@ -61,11 +60,10 @@ data "vercel_prebuilt_project" "test" { resource "vercel_deployment" "test" { project_id = vercel_project.test.id - %[2]s production = true files = data.vercel_prebuilt_project.test.output path_prefix = data.vercel_prebuilt_project.test.path } -`, name, teamID) +`, name) } diff --git a/vercel/data_source_edge_config_item_test.go b/vercel/data_source_edge_config_item_test.go index b93f789e..202e132d 100644 --- a/vercel/data_source_edge_config_item_test.go +++ b/vercel/data_source_edge_config_item_test.go @@ -15,7 +15,7 @@ func TestAcc_EdgeConfigItemDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccEdgeConfigItemDataSourceConfig(name, teamIDConfig(t)), + Config: cfg(testAccEdgeConfigItemDataSourceConfig(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_edge_config_item.test", "id"), resource.TestCheckResourceAttrSet("data.vercel_edge_config_item.test", "team_id"), @@ -24,46 +24,41 @@ func TestAcc_EdgeConfigItemDataSource(t *testing.T) { ), }, { - Config: testAccEdgeConfigItemDataSourceConfigNoItem(name, teamIDConfig(t)), + Config: cfg(testAccEdgeConfigItemDataSourceConfigNoItem(name)), ExpectError: regexp.MustCompile("not_found"), }, }, }) } -func testAccEdgeConfigItemDataSourceConfig(name, teamID string) string { +func testAccEdgeConfigItemDataSourceConfig(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test" { name = "%[1]s" - %[2]s } resource "vercel_edge_config_item" "test" { edge_config_id = vercel_edge_config.test.id key = "foobar" value = "baz" - %[2]s } data "vercel_edge_config_item" "test" { id = vercel_edge_config_item.test.edge_config_id key = "foobar" - %[2]s } -`, name, teamID) +`, name) } func testAccEdgeConfigItemDataSourceConfigNoItem(name, teamID string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test" { name = "%[1]s" - %[2]s } data "vercel_edge_config_item" "test" { id = vercel_edge_config.test.id key = "foobar" - %[2]s } -`, name, teamID) +`, name) } diff --git a/vercel/data_source_edge_config_schema_test.go b/vercel/data_source_edge_config_schema_test.go index 21c8b702..9702f406 100644 --- a/vercel/data_source_edge_config_schema_test.go +++ b/vercel/data_source_edge_config_schema_test.go @@ -15,7 +15,7 @@ func TestAcc_EdgeConfigSchemaDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccEdgeConfigSchemaDataSourceConfig(name, teamIDConfig(t)), + Config: cfg(testAccEdgeConfigSchemaDataSourceConfig(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_edge_config_schema.test", "id"), resource.TestCheckResourceAttrSet("data.vercel_edge_config_schema.test", "team_id"), @@ -23,18 +23,17 @@ func TestAcc_EdgeConfigSchemaDataSource(t *testing.T) { ), }, { - Config: testAccEdgeConfigSchemaDataSourceConfigNoSchema(name, teamIDConfig(t)), + Config: cfg(testAccEdgeConfigSchemaDataSourceConfigNoSchema(name)), ExpectError: regexp.MustCompile("not_found"), }, }, }) } -func testAccEdgeConfigSchemaDataSourceConfig(name, teamID string) string { +func testAccEdgeConfigSchemaDataSourceConfig(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test" { name = "%[1]s" - %[2]s } resource "vercel_edge_config_schema" "test" { @@ -51,26 +50,22 @@ resource "vercel_edge_config_schema" "test" { } } EOF - %[2]s } data "vercel_edge_config_schema" "test" { id = vercel_edge_config_schema.test.id - %[2]s } -`, name, teamID) +`, name) } -func testAccEdgeConfigSchemaDataSourceConfigNoSchema(name, teamID string) string { +func testAccEdgeConfigSchemaDataSourceConfigNoSchema(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test" { name = "%[1]s" - %[2]s } data "vercel_edge_config_schema" "test" { id = vercel_edge_config.test.id - %[2]s } -`, name, teamID) +`, name) } diff --git a/vercel/data_source_edge_config_test.go b/vercel/data_source_edge_config_test.go index 0f767ba7..b33e4f55 100644 --- a/vercel/data_source_edge_config_test.go +++ b/vercel/data_source_edge_config_test.go @@ -14,7 +14,7 @@ func TestAcc_EdgeConfigDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccEdgeConfigDataSourceConfig(name, teamIDConfig(t)), + Config: cfg(testAccEdgeConfigDataSourceConfig(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_edge_config.test", "name", name), ), @@ -23,16 +23,14 @@ func TestAcc_EdgeConfigDataSource(t *testing.T) { }) } -func testAccEdgeConfigDataSourceConfig(name, teamID string) string { +func testAccEdgeConfigDataSourceConfig(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test" { name = "%[1]s" - %[2]s } data "vercel_edge_config" "test" { id = vercel_edge_config.test.id - %[2]s } -`, name, teamID) +`, name) } diff --git a/vercel/data_source_edge_config_token_test.go b/vercel/data_source_edge_config_token_test.go index 45b4e76f..7a677a8e 100644 --- a/vercel/data_source_edge_config_token_test.go +++ b/vercel/data_source_edge_config_token_test.go @@ -14,7 +14,7 @@ func TestAcc_EdgeConfigTokenDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccEdgeConfigTokenDataSourceConfig(name, teamIDConfig(t)), + Config: cfg(testAccEdgeConfigTokenDataSourceConfig(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_edge_config_token.test", "label", "test-acc-token"), resource.TestCheckResourceAttrSet("data.vercel_edge_config_token.test", "edge_config_id"), @@ -27,23 +27,20 @@ func TestAcc_EdgeConfigTokenDataSource(t *testing.T) { }) } -func testAccEdgeConfigTokenDataSourceConfig(name, teamID string) string { +func testAccEdgeConfigTokenDataSourceConfig(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test" { name = "%[1]s" - %[2]s } resource "vercel_edge_config_token" "test" { label = "test-acc-token" edge_config_id = vercel_edge_config.test.id - %[2]s } data "vercel_edge_config_token" "test" { edge_config_id = vercel_edge_config.test.id token = vercel_edge_config_token.test.token - %[2]s } -`, name, teamID) +`, name) } diff --git a/vercel/data_source_endpoint_verification_test.go b/vercel/data_source_endpoint_verification_test.go index e39be3d5..a3b728f4 100644 --- a/vercel/data_source_endpoint_verification_test.go +++ b/vercel/data_source_endpoint_verification_test.go @@ -1,7 +1,6 @@ package vercel_test import ( - "fmt" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -12,7 +11,7 @@ func TestAcc_EndpointVerificationDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccEndpointVerificationDataSourceConfig(teamIDConfig(t)), + Config: cfg(`data "vercel_endpoint_verification" "test" {}`), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_endpoint_verification.test", "verification_code"), ), @@ -20,11 +19,3 @@ func TestAcc_EndpointVerificationDataSource(t *testing.T) { }, }) } - -func testAccEndpointVerificationDataSourceConfig(teamID string) string { - return fmt.Sprintf(` -data "vercel_endpoint_verification" "test" { - %[1]s -} -`, teamID) -} diff --git a/vercel/data_source_microfrontend_group_test.go b/vercel/data_source_microfrontend_group_test.go index d18b229e..613bc9c3 100644 --- a/vercel/data_source_microfrontend_group_test.go +++ b/vercel/data_source_microfrontend_group_test.go @@ -14,37 +14,31 @@ func TestAcc_MicrofrontendGroupDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(` + Config: cfg(fmt.Sprintf(` resource "vercel_project" "test_project_1" { name = "test-acc-project-%[1]s" - %[2]s } resource "vercel_project" "test_project_2" { name = "test-acc-project-2-%[1]s" - %[2]s } resource "vercel_microfrontend_group" "test_group" { name = "test-acc-microfrontend-group-%[1]s" default_app = { project_id = vercel_project.test_project_1.id } - %[2]s } resource "vercel_microfrontend_group_membership" "test_child" { project_id = vercel_project.test_project_2.id microfrontend_group_id = vercel_microfrontend_group.test_group.id - %[2]s } data "vercel_microfrontend_group" "test_group" { id = vercel_microfrontend_group.test_group.id - %[2]s } data "vercel_microfrontend_group_membership" "test_child" { microfrontend_group_id = vercel_microfrontend_group.test_group.id project_id = vercel_project.test_project_2.id - %[2]s - } - `, name, teamIDConfig(t)), + } + `, name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_microfrontend_group.test_group", "name", "test-acc-microfrontend-group-"+name), resource.TestCheckResourceAttrSet("data.vercel_microfrontend_group.test_group", "default_app.project_id"), diff --git a/vercel/data_source_project_deployment_retention_test.go b/vercel/data_source_project_deployment_retention_test.go index 90e0b8b1..46749508 100644 --- a/vercel/data_source_project_deployment_retention_test.go +++ b/vercel/data_source_project_deployment_retention_test.go @@ -17,7 +17,7 @@ func TestAcc_ProjectDeploymentRetentionDataSource(t *testing.T) { ), Steps: []resource.TestStep{ { - Config: testAccProjectDeploymentRetentionDataSourceConfig(nameSuffix, testGithubRepo(t), teamIDConfig(t)), + Config: cfg(testAccProjectDeploymentRetentionDataSourceConfig(nameSuffix, testGithubRepo(t))), Check: resource.ComposeAggregateTestCheckFunc( testAccProjectDeploymentRetentionExists(testClient(t), "vercel_project_deployment_retention.example", testTeam(t)), resource.TestCheckResourceAttr("data.vercel_project_deployment_retention.example", "expiration_preview", "1m"), @@ -35,11 +35,10 @@ func TestAcc_ProjectDeploymentRetentionDataSource(t *testing.T) { }) } -func testAccProjectDeploymentRetentionDataSourceConfig(projectName string, githubRepo string, teamIDConfig string) string { +func testAccProjectDeploymentRetentionDataSourceConfig(projectName string, githubRepo string) string { return fmt.Sprintf(` resource "vercel_project" "example" { name = "test-acc-example-project-%[1]s" - %[3]s git_repository = { type = "github" @@ -49,18 +48,15 @@ resource "vercel_project" "example" { resource "vercel_project_deployment_retention" "example" { project_id = vercel_project.example.id - %[3]s expiration_preview = "1m" } data "vercel_project_deployment_retention" "example" { project_id = vercel_project_deployment_retention.example.project_id - %[3]s } resource "vercel_project" "example_2" { name = "test-acc-example-project-2-%[1]s" - %[3]s git_repository = { type = "github" @@ -70,7 +66,6 @@ resource "vercel_project" "example_2" { data "vercel_project_deployment_retention" "example_2" { project_id = vercel_project.example_2.id - %[3]s } -`, projectName, githubRepo, teamIDConfig) +`, projectName, githubRepo) } diff --git a/vercel/data_source_project_directory_test.go b/vercel/data_source_project_directory_test.go index 2d120d4f..7e31cb11 100644 --- a/vercel/data_source_project_directory_test.go +++ b/vercel/data_source_project_directory_test.go @@ -12,7 +12,11 @@ func TestAcc_DataSourceProjectDirectory(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccProjectDirectoryConfig(), + Config: ` + data "vercel_project_directory" "test" { + path = "examples/one" + } + `, Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_project_directory.test", "path", "examples/one"), testChecksum("data.vercel_project_directory.test", filepath.Join("files.examples", "one", "index.html"), Checksums{ @@ -32,11 +36,3 @@ func TestAcc_DataSourceProjectDirectory(t *testing.T) { }, }) } - -func testAccProjectDirectoryConfig() string { - return ` -data "vercel_project_directory" "test" { - path = "examples/one" -} -` -} diff --git a/vercel/data_source_project_members_test.go b/vercel/data_source_project_members_test.go index 13f78418..5adcde4c 100644 --- a/vercel/data_source_project_members_test.go +++ b/vercel/data_source_project_members_test.go @@ -15,7 +15,7 @@ func TestAcc_ProjectMembersDataSource(t *testing.T) { CheckDestroy: testAccProjectDestroy(testClient(t), "vercel_project.test", testTeam(t)), Steps: []resource.TestStep{ { - Config: testAccProjectMembersDataSourceConfig(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccProjectMembersDataSourceConfig(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_project_members.test", "project_id"), resource.TestCheckResourceAttr("data.vercel_project_members.test", "members.#", "1"), @@ -25,16 +25,14 @@ func TestAcc_ProjectMembersDataSource(t *testing.T) { }) } -func testAccProjectMembersDataSourceConfig(projectSuffix string, teamIDConfig string) string { +func testAccProjectMembersDataSourceConfig(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-project-members-%[1]s" - %[2]s } resource "vercel_project_members" "test" { project_id = vercel_project.test.id - %[2]s members = [{ email = "doug+test2@vercel.com" @@ -44,7 +42,6 @@ resource "vercel_project_members" "test" { data "vercel_project_members" "test" { project_id = vercel_project_members.test.project_id - %[2]s } -`, projectSuffix, teamIDConfig) +`, projectSuffix) } diff --git a/vercel/data_source_project_test.go b/vercel/data_source_project_test.go index 2d98b506..c38054b0 100644 --- a/vercel/data_source_project_test.go +++ b/vercel/data_source_project_test.go @@ -14,7 +14,7 @@ func TestAcc_ProjectDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccProjectDataSourceConfig(name, teamIDConfig(t), testGithubRepo(t)), + Config: cfg(testAccProjectDataSourceConfig(name, testGithubRepo(t))), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_project.test", "name", "test-acc-"+name), resource.TestCheckResourceAttr("data.vercel_project.test", "build_command", "npm run build"), @@ -65,7 +65,7 @@ func TestAcc_ProjectDataSource(t *testing.T) { }) } -func testAccProjectDataSourceConfig(name, teamID, githubRepo string) string { +func testAccProjectDataSourceConfig(name, githubRepo string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-%s" @@ -99,7 +99,6 @@ resource "vercel_project" "test" { } ] } - %s environment = [ { key = "foo" @@ -124,7 +123,7 @@ resource "vercel_project" "test" { skew_protection = "7 days" git_repository = { type = "github" - repo = "%[3]s" + repo = "%[2]s" deploy_hooks = [ { ref = "main" @@ -146,7 +145,6 @@ resource "vercel_project" "test" { data "vercel_project" "test" { name = vercel_project.test.name - %[2]s } -`, name, teamID, githubRepo) +`, name, githubRepo) } diff --git a/vercel/data_source_shared_environment_variable_test.go b/vercel/data_source_shared_environment_variable_test.go index 396b38a7..daab29a2 100644 --- a/vercel/data_source_shared_environment_variable_test.go +++ b/vercel/data_source_shared_environment_variable_test.go @@ -14,7 +14,7 @@ func TestAcc_SharedEnvironmentVariableDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccSharedEnvironmentVariableDataSource(name, teamIDConfig(t)), + Config: cfg(testAccSharedEnvironmentVariableDataSource(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.vercel_shared_environment_variable.test", "key", "test_acc_"+name), resource.TestCheckResourceAttr("data.vercel_shared_environment_variable.test", "value", "foobar"), @@ -38,11 +38,10 @@ func TestAcc_SharedEnvironmentVariableDataSource(t *testing.T) { }) } -func testAccSharedEnvironmentVariableDataSource(name, teamID string) string { +func testAccSharedEnvironmentVariableDataSource(name string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-%[1]s" - %[2]s } resource "vercel_shared_environment_variable" "test" { @@ -50,23 +49,19 @@ resource "vercel_shared_environment_variable" "test" { value = "foobar" target = [ "production", "preview" ] project_ids = [ vercel_project.test.id ] - %[2]s } data "vercel_shared_environment_variable" "test" { id = vercel_shared_environment_variable.test.id - %[2]s } data "vercel_shared_environment_variable" "by_key_and_target" { key = vercel_shared_environment_variable.test.key target = vercel_shared_environment_variable.test.target - %[2]s } resource "vercel_shared_environment_variable" "sensitive" { key = "test_acc_%[1]s_sensitive" - %[2]s value = "foobar" target = [ "production" ] project_ids = [ vercel_project.test.id ] @@ -75,7 +70,6 @@ resource "vercel_shared_environment_variable" "sensitive" { data "vercel_shared_environment_variable" "sensitive" { id = vercel_shared_environment_variable.sensitive.id - %[2]s } -`, name, teamID) +`, name) } diff --git a/vercel/data_source_team_member_test.go b/vercel/data_source_team_member_test.go index eae9416a..e8613960 100644 --- a/vercel/data_source_team_member_test.go +++ b/vercel/data_source_team_member_test.go @@ -12,7 +12,7 @@ func TestAcc_TeamMemberDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccTeamMemberDataSourceConfig(teamIDConfig(t), testAdditionalUser(t)), + Config: cfg(testAccTeamMemberDataSourceConfig(testAdditionalUser(t))), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_team_member.test", "team_id"), resource.TestCheckResourceAttrSet("data.vercel_team_member.test", "user_id"), @@ -23,10 +23,9 @@ func TestAcc_TeamMemberDataSource(t *testing.T) { }) } -func testAccTeamMemberDataSourceConfig(teamIDConfig string, user string) string { +func testAccTeamMemberDataSourceConfig(user string) string { return fmt.Sprintf(` resource "vercel_team_member" "test" { - %[1]s user_id = "%[2]s" role = "MEMBER" } From 01c917bd01a0ff77ddf27cc0a7d4974a2a8a0e39 Mon Sep 17 00:00:00 2001 From: Douglas Harcourt Parsons Date: Wed, 14 May 2025 10:20:55 +0100 Subject: [PATCH 3/6] Fix build & lint errors --- Taskfile.yml | 2 +- vercel/data_source_edge_config_item_test.go | 2 +- vercel/provider_test.go | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 11fe525d..3ff637f8 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -55,7 +55,7 @@ tasks: install-staticcheck: desc: "Install the staticheck tool" cmds: - - go install honnef.co/go/tools/cmd/staticcheck@2024.1 + - go install honnef.co/go/tools/cmd/staticcheck@2025.1 status: - which staticcheck diff --git a/vercel/data_source_edge_config_item_test.go b/vercel/data_source_edge_config_item_test.go index 202e132d..9b8d7494 100644 --- a/vercel/data_source_edge_config_item_test.go +++ b/vercel/data_source_edge_config_item_test.go @@ -50,7 +50,7 @@ data "vercel_edge_config_item" "test" { `, name) } -func testAccEdgeConfigItemDataSourceConfigNoItem(name, teamID string) string { +func testAccEdgeConfigItemDataSourceConfigNoItem(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test" { name = "%[1]s" diff --git a/vercel/provider_test.go b/vercel/provider_test.go index c27c5db0..f1dbc795 100644 --- a/vercel/provider_test.go +++ b/vercel/provider_test.go @@ -28,8 +28,10 @@ func testClient(t *testing.T) *client.Client { func cfg(config string) string { team := os.Getenv("VERCEL_TERRAFORM_TESTING_TEAM") if team == "" { + //lintignore:R009 panic("Missing required environment variable VERCEL_TERRAFORM_TESTING_TEAM") } + //lintignore:AT004 return fmt.Sprintf(` provider "vercel" { team = "%[1]s" From 6e77dabb05749bef0a02e7fb7270a3d5450ea2b7 Mon Sep 17 00:00:00 2001 From: Douglas Harcourt Parsons Date: Wed, 14 May 2025 14:45:46 +0100 Subject: [PATCH 4/6] Fix failing tests (omg, bugs!) --- client/access_group.go | 22 ++++----- client/access_group_project.go | 20 ++++---- client/alias.go | 16 +++---- client/attack_challenge_mode.go | 4 +- client/client.go | 8 ++-- client/custom_environment.go | 22 ++++----- client/deploy_hooks.go | 8 ++-- client/deployment.go | 14 +++--- client/dns_record.go | 26 +++++------ client/edge_config.go | 20 ++++---- client/edge_config_item.go | 12 ++--- client/edge_config_schema.go | 16 +++---- client/edge_config_token.go | 12 ++--- client/environment_variable.go | 32 ++++++------- client/file.go | 4 +- client/firewall_bypass.go | 6 +-- client/firewall_config.go | 4 +- client/integrations.go | 24 +++++----- client/log_drain.go | 16 +++---- client/microfrontend_group.go | 28 +++++------ client/microfrontend_group_membership.go | 16 +++---- client/project.go | 46 +++++++++---------- client/project_deployment_retention.go | 18 ++++---- client/project_domain.go | 22 ++++----- client/project_function_cpu.go | 8 ++-- client/project_member.go | 16 +++---- ...protection_bypass_for_automation_update.go | 4 +- client/shared_environment_variable.go | 24 +++++----- client/webhook.go | 12 ++--- vercel/data_source_project_members.go | 2 + vercel/data_source_team_member_test.go | 9 ++-- vercel/resource_project_members.go | 3 ++ 32 files changed, 250 insertions(+), 244 deletions(-) diff --git a/client/access_group.go b/client/access_group.go index 06f731ab..abf168e5 100644 --- a/client/access_group.go +++ b/client/access_group.go @@ -20,8 +20,8 @@ type GetAccessGroupRequest struct { func (c *Client) GetAccessGroup(ctx context.Context, req GetAccessGroupRequest) (r AccessGroup, err error) { url := fmt.Sprintf("%s/v1/access-groups/%s", c.baseURL, req.AccessGroupID) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } tflog.Info(ctx, "getting access group", map[string]any{ "url": url, @@ -36,7 +36,7 @@ func (c *Client) GetAccessGroup(ctx context.Context, req GetAccessGroupRequest) return r, fmt.Errorf("unable to get access group: %w", err) } - r.TeamID = c.teamID(req.TeamID) + r.TeamID = c.TeamID(req.TeamID) return r, err } @@ -47,8 +47,8 @@ type CreateAccessGroupRequest struct { func (c *Client) CreateAccessGroup(ctx context.Context, req CreateAccessGroupRequest) (r AccessGroup, err error) { url := fmt.Sprintf("%s/v1/access-groups", c.baseURL) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } payload := string(mustMarshal( struct { @@ -70,7 +70,7 @@ func (c *Client) CreateAccessGroup(ctx context.Context, req CreateAccessGroupReq if err != nil { return r, err } - r.TeamID = c.teamID(req.TeamID) + r.TeamID = c.TeamID(req.TeamID) return r, err } @@ -82,8 +82,8 @@ type UpdateAccessGroupRequest struct { func (c *Client) UpdateAccessGroup(ctx context.Context, req UpdateAccessGroupRequest) (r AccessGroup, err error) { url := fmt.Sprintf("%s/v1/access-groups/%s", c.baseURL, req.AccessGroupID) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } payload := string(mustMarshal( struct { @@ -105,7 +105,7 @@ func (c *Client) UpdateAccessGroup(ctx context.Context, req UpdateAccessGroupReq if err != nil { return r, err } - r.TeamID = c.teamID(req.TeamID) + r.TeamID = c.TeamID(req.TeamID) return r, err } @@ -116,8 +116,8 @@ type DeleteAccessGroupRequest struct { func (c *Client) DeleteAccessGroup(ctx context.Context, req DeleteAccessGroupRequest) error { url := fmt.Sprintf("%s/v1/access-groups/%s", c.baseURL, req.AccessGroupID) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } tflog.Info(ctx, "deleting access group", map[string]any{ "url": url, diff --git a/client/access_group_project.go b/client/access_group_project.go index 5f80e91f..7675d318 100644 --- a/client/access_group_project.go +++ b/client/access_group_project.go @@ -23,8 +23,8 @@ type CreateAccessGroupProjectRequest struct { func (c *Client) CreateAccessGroupProject(ctx context.Context, req CreateAccessGroupProjectRequest) (r AccessGroupProject, err error) { url := fmt.Sprintf("%s/v1/access-groups/%s/projects", c.baseURL, req.AccessGroupID) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } payload := string(mustMarshal( struct { @@ -48,7 +48,7 @@ func (c *Client) CreateAccessGroupProject(ctx context.Context, req CreateAccessG if err != nil { return r, err } - r.TeamID = c.teamID(req.TeamID) + r.TeamID = c.TeamID(req.TeamID) return r, err } @@ -60,8 +60,8 @@ type GetAccessGroupProjectRequest struct { func (c *Client) GetAccessGroupProject(ctx context.Context, req GetAccessGroupProjectRequest) (r AccessGroupProject, err error) { url := fmt.Sprintf("%s/v1/access-groups/%s/projects/%s", c.baseURL, req.AccessGroupID, req.ProjectID) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } tflog.Info(ctx, "getting access group project", map[string]any{ "url": url, @@ -88,8 +88,8 @@ type UpdateAccessGroupProjectRequest struct { func (c *Client) UpdateAccessGroupProject(ctx context.Context, req UpdateAccessGroupProjectRequest) (r AccessGroupProject, err error) { url := fmt.Sprintf("%s/v1/access-groups/%s/projects/%s", c.baseURL, req.AccessGroupID, req.ProjectID) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } payload := string(mustMarshal( struct { @@ -111,7 +111,7 @@ func (c *Client) UpdateAccessGroupProject(ctx context.Context, req UpdateAccessG if err != nil { return r, err } - r.TeamID = c.teamID(req.TeamID) + r.TeamID = c.TeamID(req.TeamID) return r, err } @@ -123,8 +123,8 @@ type DeleteAccessGroupProjectRequest struct { func (c *Client) DeleteAccessGroupProject(ctx context.Context, req DeleteAccessGroupProjectRequest) error { url := fmt.Sprintf("%s/v1/access-groups/%s/projects/%s", c.baseURL, req.AccessGroupID, req.ProjectID) - if c.teamID(req.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(req.TeamID)) + if c.TeamID(req.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(req.TeamID)) } tflog.Info(ctx, "deleting access group project", map[string]any{ "url": url, diff --git a/client/alias.go b/client/alias.go index 5f5c133a..c1bd66f7 100644 --- a/client/alias.go +++ b/client/alias.go @@ -23,8 +23,8 @@ type createAliasResponse struct { // UpsertAlias creates an alias within Vercel. func (c *Client) UpsertAlias(ctx context.Context, request UpsertAliasRequest) (r AliasResponse, err error) { url := fmt.Sprintf("%s/v2/deployments/%s/aliases", c.baseURL, request.DeploymentID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) @@ -47,7 +47,7 @@ func (c *Client) UpsertAlias(ctx context.Context, request UpsertAliasRequest) (r UID: aliasResponse.UID, Alias: aliasResponse.Alias, DeploymentID: request.DeploymentID, - TeamID: c.teamID(request.TeamID), + TeamID: c.TeamID(request.TeamID), }, nil } @@ -59,8 +59,8 @@ type DeleteAliasResponse struct { // DeleteAlias deletes an alias within Vercel. func (c *Client) DeleteAlias(ctx context.Context, aliasUID string, teamID string) (r DeleteAliasResponse, err error) { url := fmt.Sprintf("%s/v2/aliases/%s", c.baseURL, aliasUID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting alias", map[string]any{ @@ -86,8 +86,8 @@ type AliasResponse struct { // GetAlias retrieves information about an existing alias from vercel. func (c *Client) GetAlias(ctx context.Context, alias, teamID string) (r AliasResponse, err error) { url := fmt.Sprintf("%s/v4/aliases/%s", c.baseURL, alias) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting alias", map[string]any{ "url": url, @@ -98,6 +98,6 @@ func (c *Client) GetAlias(ctx context.Context, alias, teamID string) (r AliasRes url: url, body: "", }, &r) - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } diff --git a/client/attack_challenge_mode.go b/client/attack_challenge_mode.go index df43d08b..5bb983e3 100644 --- a/client/attack_challenge_mode.go +++ b/client/attack_challenge_mode.go @@ -29,8 +29,8 @@ func (c *Client) GetAttackChallengeMode(ctx context.Context, projectID, teamID s func (c *Client) UpdateAttackChallengeMode(ctx context.Context, request AttackChallengeMode) (a AttackChallengeMode, err error) { url := fmt.Sprintf("%s/security/attack-mode", c.baseURL) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) diff --git a/client/client.go b/client/client.go index f1cff0ab..4b326d72 100644 --- a/client/client.go +++ b/client/client.go @@ -46,10 +46,10 @@ func (c *Client) Team(ctx context.Context, teamID string) (Team, error) { return c.team, nil } -// teamID is a helper method to return one of two values based on specificity. -// It will return an explicitly passed teamID if it is defined. If not defined, -// it will fall back to the teamID configured on the client. -func (c *Client) teamID(teamID string) string { +// TeamID is a helper method to return one of two values based on specificity. +// It will return an explicitly passed TeamID if it is defined. If not defined, +// it will fall back to the TeamID configured on the client. +func (c *Client) TeamID(teamID string) string { if teamID != "" { return teamID } diff --git a/client/custom_environment.go b/client/custom_environment.go index 377c7639..22d66091 100644 --- a/client/custom_environment.go +++ b/client/custom_environment.go @@ -31,8 +31,8 @@ type CustomEnvironmentResponse struct { func (c *Client) CreateCustomEnvironment(ctx context.Context, request CreateCustomEnvironmentRequest) (res CustomEnvironmentResponse, err error) { url := fmt.Sprintf("%s/v1/projects/%s/custom-environments", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating custom environment", map[string]any{ @@ -48,7 +48,7 @@ func (c *Client) CreateCustomEnvironment(ctx context.Context, request CreateCust if err != nil { return res, err } - res.TeamID = c.teamID(request.TeamID) + res.TeamID = c.TeamID(request.TeamID) res.ProjectID = request.ProjectID return res, nil } @@ -61,8 +61,8 @@ type GetCustomEnvironmentRequest struct { func (c *Client) GetCustomEnvironment(ctx context.Context, request GetCustomEnvironmentRequest) (res CustomEnvironmentResponse, err error) { url := fmt.Sprintf("%s/v1/projects/%s/custom-environments/%s", c.baseURL, request.ProjectID, request.Slug) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "getting custom environment", map[string]any{ "url": url, @@ -75,7 +75,7 @@ func (c *Client) GetCustomEnvironment(ctx context.Context, request GetCustomEnvi if err != nil { return res, err } - res.TeamID = c.teamID(request.TeamID) + res.TeamID = c.TeamID(request.TeamID) res.ProjectID = request.ProjectID return res, nil @@ -92,8 +92,8 @@ type UpdateCustomEnvironmentRequest struct { func (c *Client) UpdateCustomEnvironment(ctx context.Context, request UpdateCustomEnvironmentRequest) (res CustomEnvironmentResponse, err error) { url := fmt.Sprintf("%s/v1/projects/%s/custom-environments/%s", c.baseURL, request.ProjectID, request.OldSlug) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "updating custom environment", map[string]any{ @@ -109,7 +109,7 @@ func (c *Client) UpdateCustomEnvironment(ctx context.Context, request UpdateCust if err != nil { return res, err } - res.TeamID = c.teamID(request.TeamID) + res.TeamID = c.TeamID(request.TeamID) res.ProjectID = request.ProjectID return res, nil } @@ -122,8 +122,8 @@ type DeleteCustomEnvironmentRequest struct { func (c *Client) DeleteCustomEnvironment(ctx context.Context, request DeleteCustomEnvironmentRequest) error { url := fmt.Sprintf("%s/v1/projects/%s/custom-environments/%s", c.baseURL, request.ProjectID, request.Slug) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "deleting custom environment", map[string]any{ "url": url, diff --git a/client/deploy_hooks.go b/client/deploy_hooks.go index 037292fa..8087151b 100644 --- a/client/deploy_hooks.go +++ b/client/deploy_hooks.go @@ -24,8 +24,8 @@ type CreateDeployHookRequest struct { func (c *Client) CreateDeployHook(ctx context.Context, request CreateDeployHookRequest) (h DeployHook, err error) { url := fmt.Sprintf("%s/v2/projects/%s/deploy-hooks", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating deploy hook", map[string]any{ @@ -63,8 +63,8 @@ type DeleteDeployHookRequest struct { func (c *Client) DeleteDeployHook(ctx context.Context, request DeleteDeployHookRequest) error { url := fmt.Sprintf("%s/v2/projects/%s/deploy-hooks/%s", c.baseURL, request.ProjectID, request.ID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating deploy hook", map[string]any{ diff --git a/client/deployment.go b/client/deployment.go index 61924940..35765f71 100644 --- a/client/deployment.go +++ b/client/deployment.go @@ -196,8 +196,8 @@ func (c *Client) CreateDeployment(ctx context.Context, request CreateDeploymentR request.GitSource = &gitSource } url := fmt.Sprintf("%s/v12/now/deployments?skipAutoDetectionConfirmation=1", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s&teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s&teamId=%s", url, c.TeamID(teamID)) } payload := string(mustMarshal(request)) @@ -259,8 +259,8 @@ type DeleteDeploymentResponse struct { // DeleteDeployment deletes a deployment within Vercel. func (c *Client) DeleteDeployment(ctx context.Context, deploymentID string, teamID string) (r DeleteDeploymentResponse, err error) { url := fmt.Sprintf("%s/v13/deployments/%s", c.baseURL, deploymentID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting deployment", map[string]any{ @@ -278,8 +278,8 @@ func (c *Client) DeleteDeployment(ctx context.Context, deploymentID string, team // GetDeployment retrieves information from Vercel about an existing Deployment. func (c *Client) GetDeployment(ctx context.Context, deploymentID, teamID string) (r DeploymentResponse, err error) { url := fmt.Sprintf("%s/v13/deployments/%s", c.baseURL, deploymentID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting deployment", map[string]any{ @@ -291,6 +291,6 @@ func (c *Client) GetDeployment(ctx context.Context, deploymentID, teamID string) url: url, body: "", }, &r) - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } diff --git a/client/dns_record.go b/client/dns_record.go index 92374ffc..bb605f49 100644 --- a/client/dns_record.go +++ b/client/dns_record.go @@ -30,8 +30,8 @@ type CreateDNSRecordRequest struct { // CreateDNSRecord creates a DNS record for a specified domain name within Vercel. func (c *Client) CreateDNSRecord(ctx context.Context, teamID string, request CreateDNSRecordRequest) (r DNSRecord, err error) { url := fmt.Sprintf("%s/v4/domains/%s/records", c.baseURL, request.Domain) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } var response struct { @@ -53,8 +53,8 @@ func (c *Client) CreateDNSRecord(ctx context.Context, teamID string, request Cre // DeleteDNSRecord removes a DNS domain from Vercel. func (c *Client) DeleteDNSRecord(ctx context.Context, domain, recordID, teamID string) error { url := fmt.Sprintf("%s/v2/domains/%s/records/%s", c.baseURL, domain, recordID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } return c.doRequest(clientRequest{ @@ -82,8 +82,8 @@ type DNSRecord struct { // GetDNSRecord retrieves information about a DNS domain from Vercel. func (c *Client) GetDNSRecord(ctx context.Context, recordID, teamID string) (r DNSRecord, err error) { url := fmt.Sprintf("%s/domains/records/%s", c.baseURL, recordID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } err = c.doRequest(clientRequest{ @@ -92,7 +92,7 @@ func (c *Client) GetDNSRecord(ctx context.Context, recordID, teamID string) (r D url: url, body: "", }, &r) - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } @@ -102,8 +102,8 @@ func (c *Client) GetDNSRecord(ctx context.Context, recordID, teamID string) (r D // into a production ready function would require some refactoring. func (c *Client) ListDNSRecords(ctx context.Context, domain, teamID string) (r []DNSRecord, err error) { url := fmt.Sprintf("%s/v4/domains/%s/records?limit=100", c.baseURL, domain) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s&teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s&teamId=%s", url, c.TeamID(teamID)) } dr := struct { @@ -116,7 +116,7 @@ func (c *Client) ListDNSRecords(ctx context.Context, domain, teamID string) (r [ body: "", }, &dr) for i := 0; i < len(dr.Records); i++ { - dr.Records[i].TeamID = c.teamID(teamID) + dr.Records[i].TeamID = c.TeamID(teamID) } return dr.Records, err } @@ -142,8 +142,8 @@ type UpdateDNSRecordRequest struct { // UpdateDNSRecord updates a DNS record for a specified domain name within Vercel. func (c *Client) UpdateDNSRecord(ctx context.Context, teamID, recordID string, request UpdateDNSRecordRequest) (r DNSRecord, err error) { url := fmt.Sprintf("%s/v4/domains/records/%s", c.baseURL, recordID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } payload := string(mustMarshal(request)) @@ -157,6 +157,6 @@ func (c *Client) UpdateDNSRecord(ctx context.Context, teamID, recordID string, r url: url, body: payload, }, &r) - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } diff --git a/client/edge_config.go b/client/edge_config.go index e0dc9812..065619ee 100644 --- a/client/edge_config.go +++ b/client/edge_config.go @@ -20,8 +20,8 @@ type CreateEdgeConfigRequest struct { func (c *Client) CreateEdgeConfig(ctx context.Context, request CreateEdgeConfigRequest) (e EdgeConfig, err error) { url := fmt.Sprintf("%s/v1/edge-config", c.baseURL) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating edge config", map[string]any{ @@ -39,8 +39,8 @@ func (c *Client) CreateEdgeConfig(ctx context.Context, request CreateEdgeConfigR func (c *Client) GetEdgeConfig(ctx context.Context, id, teamID string) (e EdgeConfig, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "reading edge config", map[string]any{ "url": url, @@ -61,8 +61,8 @@ type UpdateEdgeConfigRequest struct { func (c *Client) UpdateEdgeConfig(ctx context.Context, request UpdateEdgeConfigRequest) (e EdgeConfig, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s", c.baseURL, request.ID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) @@ -81,8 +81,8 @@ func (c *Client) UpdateEdgeConfig(ctx context.Context, request UpdateEdgeConfigR func (c *Client) DeleteEdgeConfig(ctx context.Context, id, teamID string) error { url := fmt.Sprintf("%s/v1/edge-config/%s", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting edge config", map[string]any{ "url": url, @@ -97,8 +97,8 @@ func (c *Client) DeleteEdgeConfig(ctx context.Context, id, teamID string) error func (c *Client) ListEdgeConfigs(ctx context.Context, teamID string) (e []EdgeConfig, err error) { url := fmt.Sprintf("%s/v1/edge-config", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "listing edge configs", map[string]any{ "url": url, diff --git a/client/edge_config_item.go b/client/edge_config_item.go index e7f7a1ea..736894c1 100644 --- a/client/edge_config_item.go +++ b/client/edge_config_item.go @@ -29,7 +29,7 @@ type CreateEdgeConfigItemRequest struct { func (c *Client) CreateEdgeConfigItem(ctx context.Context, request CreateEdgeConfigItemRequest) (e EdgeConfigItem, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s/items", c.baseURL, request.EdgeConfigID) - teamID := c.teamID(request.TeamID) + teamID := c.TeamID(request.TeamID) if teamID != "" { url = fmt.Sprintf("%s?teamId=%s", url, teamID) } @@ -75,8 +75,8 @@ type EdgeConfigItemRequest struct { func (c *Client) DeleteEdgeConfigItem(ctx context.Context, request EdgeConfigItemRequest) error { url := fmt.Sprintf("%s/v1/edge-config/%s/items", c.baseURL, request.EdgeConfigID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal( @@ -107,8 +107,8 @@ func (c *Client) DeleteEdgeConfigItem(ctx context.Context, request EdgeConfigIte func (c *Client) GetEdgeConfigItem(ctx context.Context, request EdgeConfigItemRequest) (e EdgeConfigItem, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s/item/%s", c.baseURL, request.EdgeConfigID, request.Key) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "getting edge config token", map[string]any{ @@ -130,6 +130,6 @@ func (c *Client) GetEdgeConfigItem(ctx context.Context, request EdgeConfigItemRe } } - e.TeamID = c.teamID(request.TeamID) + e.TeamID = c.TeamID(request.TeamID) return e, err } diff --git a/client/edge_config_schema.go b/client/edge_config_schema.go index 78efbe8c..35f64e04 100644 --- a/client/edge_config_schema.go +++ b/client/edge_config_schema.go @@ -15,8 +15,8 @@ type EdgeConfigSchema struct { func (c *Client) UpsertEdgeConfigSchema(ctx context.Context, request EdgeConfigSchema) (e EdgeConfigSchema, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s/schema", c.baseURL, request.ID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating edge config schema", map[string]any{ @@ -29,15 +29,15 @@ func (c *Client) UpsertEdgeConfigSchema(ctx context.Context, request EdgeConfigS url: url, body: payload, }, &e) - e.TeamID = c.teamID(request.TeamID) + e.TeamID = c.TeamID(request.TeamID) e.ID = request.ID return e, err } func (c *Client) GetEdgeConfigSchema(ctx context.Context, id, teamID string) (e EdgeConfigSchema, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s/schema", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting edge config schema", map[string]any{ "url": url, @@ -57,15 +57,15 @@ func (c *Client) GetEdgeConfigSchema(ctx context.Context, id, teamID string) (e } } - e.TeamID = c.teamID(teamID) + e.TeamID = c.TeamID(teamID) e.ID = id return e, err } func (c *Client) DeleteEdgeConfigSchema(ctx context.Context, id, teamID string) error { url := fmt.Sprintf("%s/v1/edge-config/%s/schema", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting edge config schema", map[string]any{ "url": url, diff --git a/client/edge_config_token.go b/client/edge_config_token.go index 3f7fc58b..35193656 100644 --- a/client/edge_config_token.go +++ b/client/edge_config_token.go @@ -31,8 +31,8 @@ type CreateEdgeConfigTokenRequest struct { func (c *Client) CreateEdgeConfigToken(ctx context.Context, request CreateEdgeConfigTokenRequest) (e EdgeConfigToken, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s/token", c.baseURL, request.EdgeConfigID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating edge config token", map[string]any{ @@ -59,8 +59,8 @@ type EdgeConfigTokenRequest struct { func (c *Client) DeleteEdgeConfigToken(ctx context.Context, request EdgeConfigTokenRequest) error { url := fmt.Sprintf("%s/v1/edge-config/%s/tokens", c.baseURL, request.EdgeConfigID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal( struct { @@ -84,8 +84,8 @@ func (c *Client) DeleteEdgeConfigToken(ctx context.Context, request EdgeConfigTo func (c *Client) GetEdgeConfigToken(ctx context.Context, request EdgeConfigTokenRequest) (e EdgeConfigToken, err error) { url := fmt.Sprintf("%s/v1/edge-config/%s/token/%s", c.baseURL, request.EdgeConfigID, request.Token) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "getting edge config token", map[string]any{ diff --git a/client/environment_variable.go b/client/environment_variable.go index 55e06f2e..67c344bb 100644 --- a/client/environment_variable.go +++ b/client/environment_variable.go @@ -28,8 +28,8 @@ type CreateEnvironmentVariableRequest struct { // CreateEnvironmentVariable will create a brand new environment variable if one does not exist. func (c *Client) CreateEnvironmentVariable(ctx context.Context, request CreateEnvironmentVariableRequest) (e EnvironmentVariable, err error) { url := fmt.Sprintf("%s/v10/projects/%s/env", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request.EnvironmentVariable)) @@ -63,7 +63,7 @@ func (c *Client) CreateEnvironmentVariable(ctx context.Context, request CreateEn return e, fmt.Errorf("%w - %s", err, payload) } response.Created.Value = request.EnvironmentVariable.Value - response.Created.TeamID = c.teamID(request.TeamID) + response.Created.TeamID = c.TeamID(request.TeamID) return response.Created, err } @@ -146,8 +146,8 @@ func (c *Client) CreateEnvironmentVariables(ctx context.Context, request CreateE return []EnvironmentVariable{env}, err } url := fmt.Sprintf("%s/v10/projects/%s/env", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request.EnvironmentVariables)) @@ -212,8 +212,8 @@ type UpdateEnvironmentVariableRequest struct { // UpdateEnvironmentVariable will update an existing environment variable to the latest information. func (c *Client) UpdateEnvironmentVariable(ctx context.Context, request UpdateEnvironmentVariableRequest) (e EnvironmentVariable, err error) { url := fmt.Sprintf("%s/v10/projects/%s/env/%s", c.baseURL, request.ProjectID, request.EnvID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "updating environment variable", map[string]any{ @@ -228,15 +228,15 @@ func (c *Client) UpdateEnvironmentVariable(ctx context.Context, request UpdateEn }, &e) // The API response returns an encrypted environment variable, but we want to return the decrypted version. e.Value = request.Value - e.TeamID = c.teamID(request.TeamID) + e.TeamID = c.TeamID(request.TeamID) return e, err } // DeleteEnvironmentVariable will remove an environment variable from Vercel. func (c *Client) DeleteEnvironmentVariable(ctx context.Context, projectID, teamID, variableID string) error { url := fmt.Sprintf("%s/v8/projects/%s/env/%s", c.baseURL, projectID, variableID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting environment variable", map[string]any{ "url": url, @@ -251,8 +251,8 @@ func (c *Client) DeleteEnvironmentVariable(ctx context.Context, projectID, teamI func (c *Client) GetEnvironmentVariables(ctx context.Context, projectID, teamID string) ([]EnvironmentVariable, error) { url := fmt.Sprintf("%s/v8/projects/%s/env?decrypt=true", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s&teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s&teamId=%s", url, c.TeamID(teamID)) } envResponse := struct { @@ -268,7 +268,7 @@ func (c *Client) GetEnvironmentVariables(ctx context.Context, projectID, teamID body: "", }, &envResponse) for i := 0; i < len(envResponse.Env); i++ { - envResponse.Env[i].TeamID = c.teamID(teamID) + envResponse.Env[i].TeamID = c.TeamID(teamID) } return envResponse.Env, err } @@ -276,8 +276,8 @@ func (c *Client) GetEnvironmentVariables(ctx context.Context, projectID, teamID // GetEnvironmentVariable gets a singluar environment variable from Vercel based on its ID. func (c *Client) GetEnvironmentVariable(ctx context.Context, projectID, teamID, envID string) (e EnvironmentVariable, err error) { url := fmt.Sprintf("%s/v10/projects/%s/env/%s", c.baseURL, projectID, envID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting environment variable", map[string]any{ @@ -289,6 +289,6 @@ func (c *Client) GetEnvironmentVariable(ctx context.Context, projectID, teamID, url: url, body: "", }, &e) - e.TeamID = c.teamID(teamID) + e.TeamID = c.TeamID(teamID) return e, err } diff --git a/client/file.go b/client/file.go index 0d20abd3..4d15a1ad 100644 --- a/client/file.go +++ b/client/file.go @@ -20,8 +20,8 @@ type CreateFileRequest struct { // CreateFile will upload a file to Vercel so that it can be later used for a Deployment. func (c *Client) CreateFile(ctx context.Context, request CreateFileRequest) error { url := fmt.Sprintf("%s/v2/now/files", c.baseURL) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } req, err := http.NewRequestWithContext( ctx, diff --git a/client/firewall_bypass.go b/client/firewall_bypass.go index b4f2779a..d60c88d6 100644 --- a/client/firewall_bypass.go +++ b/client/firewall_bypass.go @@ -21,7 +21,7 @@ type FirewallBypass struct { func (c *Client) GetFirewallBypass(ctx context.Context, teamID, projectID string, request FirewallBypassRule) (a FirewallBypass, err error) { url := fmt.Sprintf("%s/v1/security/firewall/bypass?projectId=%s", c.baseURL, projectID) - if tid := c.teamID(teamID); tid != "" { + if tid := c.TeamID(teamID); tid != "" { url = fmt.Sprintf("%s&teamId=%s", url, tid) } url = fmt.Sprintf("%s&sourceIp=%s", url, request.SourceIp) @@ -47,7 +47,7 @@ func (c *Client) GetFirewallBypass(ctx context.Context, teamID, projectID string func (c *Client) CreateFirewallBypass(ctx context.Context, teamID, projectID string, request FirewallBypassRule) (a FirewallBypass, err error) { url := fmt.Sprintf("%s/v1/security/firewall/bypass?projectId=%s", c.baseURL, projectID) - if tid := c.teamID(teamID); tid != "" { + if tid := c.TeamID(teamID); tid != "" { url = fmt.Sprintf("%s&teamId=%s", url, tid) } if request.Domain == "*" { @@ -76,7 +76,7 @@ func (c *Client) CreateFirewallBypass(ctx context.Context, teamID, projectID str func (c *Client) RemoveFirewallBypass(ctx context.Context, teamID, projectID string, request FirewallBypassRule) (a FirewallBypass, err error) { url := fmt.Sprintf("%s/v1/security/firewall/bypass?projectId=%s", c.baseURL, projectID) - if tid := c.teamID(teamID); tid != "" { + if tid := c.TeamID(teamID); tid != "" { url = fmt.Sprintf("%s&teamId=%s", url, tid) } if request.Domain == "*" { diff --git a/client/firewall_config.go b/client/firewall_config.go index 51f3855a..9e200015 100644 --- a/client/firewall_config.go +++ b/client/firewall_config.go @@ -78,7 +78,7 @@ type CoreRuleSet struct { } func (c *Client) GetFirewallConfig(ctx context.Context, projectId string, teamId string) (FirewallConfig, error) { - teamId = c.teamID(teamId) + teamId = c.TeamID(teamId) url := fmt.Sprintf( "%s/v1/security/firewall/config/active?projectId=%s&teamId=%s", c.baseURL, @@ -96,7 +96,7 @@ func (c *Client) GetFirewallConfig(ctx context.Context, projectId string, teamId } func (c *Client) PutFirewallConfig(ctx context.Context, cfg FirewallConfig) (FirewallConfig, error) { - teamId := c.teamID(cfg.TeamID) + teamId := c.TeamID(cfg.TeamID) url := fmt.Sprintf( "%s/v1/security/firewall/config?projectId=%s&teamId=%s", c.baseURL, diff --git a/client/integrations.go b/client/integrations.go index 0f12281c..497bdb9e 100644 --- a/client/integrations.go +++ b/client/integrations.go @@ -14,8 +14,8 @@ type IntegrationProjectAccess struct { func (c *Client) GetIntegrationProjectAccess(ctx context.Context, integrationID, projectID, teamID string) (IntegrationProjectAccess, error) { url := fmt.Sprintf("%s/v1/integrations/configuration/%s/project/%s", c.baseURL, integrationID, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting integration project access", map[string]any{ @@ -35,19 +35,19 @@ func (c *Client) GetIntegrationProjectAccess(ctx context.Context, integrationID, }, &e); err != nil { return IntegrationProjectAccess{ Allowed: false, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, err } return IntegrationProjectAccess{ Allowed: e.Allowed, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, nil } func (c *Client) GrantIntegrationProjectAccess(ctx context.Context, integrationID, projectID, teamID string) (IntegrationProjectAccess, error) { url := fmt.Sprintf("%s/v1/integrations/configuration/%s/project/%s", c.baseURL, integrationID, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting integration project access", map[string]any{ @@ -67,19 +67,19 @@ func (c *Client) GrantIntegrationProjectAccess(ctx context.Context, integrationI }, &e); err != nil { return IntegrationProjectAccess{ Allowed: false, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, err } return IntegrationProjectAccess{ Allowed: true, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, nil } func (c *Client) RevokeIntegrationProjectAccess(ctx context.Context, integrationID, projectID, teamID string) (IntegrationProjectAccess, error) { url := fmt.Sprintf("%s/v1/integrations/configuration/%s/project/%s", c.baseURL, integrationID, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting integration project access", map[string]any{ @@ -99,11 +99,11 @@ func (c *Client) RevokeIntegrationProjectAccess(ctx context.Context, integration }, &e); err != nil { return IntegrationProjectAccess{ Allowed: false, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, err } return IntegrationProjectAccess{ Allowed: false, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, nil } diff --git a/client/log_drain.go b/client/log_drain.go index 061e861b..0b44fc94 100644 --- a/client/log_drain.go +++ b/client/log_drain.go @@ -34,8 +34,8 @@ type CreateLogDrainRequest struct { func (c *Client) CreateLogDrain(ctx context.Context, request CreateLogDrainRequest) (l LogDrain, err error) { url := fmt.Sprintf("%s/v1/log-drains", c.baseURL) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating log drain", map[string]any{ @@ -53,8 +53,8 @@ func (c *Client) CreateLogDrain(ctx context.Context, request CreateLogDrainReque func (c *Client) DeleteLogDrain(ctx context.Context, id, teamID string) error { url := fmt.Sprintf("%s/v1/log-drains/%s", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting log drain", map[string]any{ "url": url, @@ -68,8 +68,8 @@ func (c *Client) DeleteLogDrain(ctx context.Context, id, teamID string) error { func (c *Client) GetLogDrain(ctx context.Context, id, teamID string) (l LogDrain, err error) { url := fmt.Sprintf("%s/v1/log-drains/%s", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "reading log drain", map[string]any{ "url": url, @@ -84,8 +84,8 @@ func (c *Client) GetLogDrain(ctx context.Context, id, teamID string) (l LogDrain func (c *Client) GetEndpointVerificationCode(ctx context.Context, teamID string) (code string, err error) { url := fmt.Sprintf("%s/v1/verify-endpoint", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } var l struct { diff --git a/client/microfrontend_group.go b/client/microfrontend_group.go index de93cf86..a390f004 100644 --- a/client/microfrontend_group.go +++ b/client/microfrontend_group.go @@ -36,14 +36,14 @@ type MicrofrontendGroupsAPIResponse struct { } func (c *Client) CreateMicrofrontendGroup(ctx context.Context, TeamID string, Name string) (r MicrofrontendGroup, err error) { - if c.teamID(TeamID) == "" { + if c.TeamID(TeamID) == "" { return r, fmt.Errorf("team_id is required") } tflog.Info(ctx, "creating microfrontend group", map[string]any{ "microfrontend_group_name": Name, - "team_id": c.teamID(TeamID), + "team_id": c.TeamID(TeamID), }) - url := fmt.Sprintf("%s/teams/%s/microfrontends", c.baseURL, c.teamID(TeamID)) + url := fmt.Sprintf("%s/teams/%s/microfrontends", c.baseURL, c.TeamID(TeamID)) payload := string(mustMarshal(struct { NewMicrofrontendsGroupName string `json:"newMicrofrontendsGroupName"` }{ @@ -65,15 +65,15 @@ func (c *Client) CreateMicrofrontendGroup(ctx context.Context, TeamID string, Na ID: apiResponse.NewMicrofrontendGroup.ID, Name: apiResponse.NewMicrofrontendGroup.Name, Slug: apiResponse.NewMicrofrontendGroup.Slug, - TeamID: c.teamID(TeamID), + TeamID: c.TeamID(TeamID), }, nil } func (c *Client) UpdateMicrofrontendGroup(ctx context.Context, request MicrofrontendGroup) (r MicrofrontendGroup, err error) { - if c.teamID(request.TeamID) == "" { + if c.TeamID(request.TeamID) == "" { return r, fmt.Errorf("team_id is required") } - url := fmt.Sprintf("%s/teams/%s/microfrontends/%s", c.baseURL, c.teamID(request.TeamID), request.ID) + url := fmt.Sprintf("%s/teams/%s/microfrontends/%s", c.baseURL, c.TeamID(request.TeamID), request.ID) payload := string(mustMarshal(struct { Name string `json:"name"` }{ @@ -99,15 +99,15 @@ func (c *Client) UpdateMicrofrontendGroup(ctx context.Context, request Microfron ID: apiResponse.UpdatedMicrofrontendsGroup.ID, Name: apiResponse.UpdatedMicrofrontendsGroup.Name, Slug: apiResponse.UpdatedMicrofrontendsGroup.Slug, - TeamID: c.teamID(request.TeamID), + TeamID: c.TeamID(request.TeamID), }, nil } func (c *Client) DeleteMicrofrontendGroup(ctx context.Context, request MicrofrontendGroup) (r struct{}, err error) { - if c.teamID(request.TeamID) == "" { + if c.TeamID(request.TeamID) == "" { return r, fmt.Errorf("team_id is required") } - url := fmt.Sprintf("%s/teams/%s/microfrontends/%s", c.baseURL, c.teamID(request.TeamID), request.ID) + url := fmt.Sprintf("%s/teams/%s/microfrontends/%s", c.baseURL, c.TeamID(request.TeamID), request.ID) tflog.Info(ctx, "deleting microfrontend group", map[string]any{ "url": url, @@ -123,12 +123,12 @@ func (c *Client) DeleteMicrofrontendGroup(ctx context.Context, request Microfron } func (c *Client) GetMicrofrontendGroup(ctx context.Context, microfrontendGroupID string, teamID string) (r MicrofrontendGroup, err error) { - if c.teamID(teamID) == "" { + if c.TeamID(teamID) == "" { return r, fmt.Errorf("team_id is required") } url := fmt.Sprintf("%s/v1/microfrontends/groups", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting microfrontend group", map[string]any{ @@ -158,7 +158,7 @@ func (c *Client) GetMicrofrontendGroup(ctx context.Context, microfrontendGroupID projects[p.ID] = MicrofrontendGroupMembership{ MicrofrontendGroupID: microfrontendGroupID, ProjectID: p.ID, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), Enabled: p.Microfrontends.Enabled, IsDefaultApp: p.Microfrontends.IsDefaultApp, DefaultRoute: p.Microfrontends.DefaultRoute, @@ -172,7 +172,7 @@ func (c *Client) GetMicrofrontendGroup(ctx context.Context, microfrontendGroupID ID: out.Groups[i].Group.ID, Name: out.Groups[i].Group.Name, Slug: out.Groups[i].Group.Slug, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), DefaultApp: defaultApp, Projects: projects, } diff --git a/client/microfrontend_group_membership.go b/client/microfrontend_group_membership.go index de36a391..ab76713b 100644 --- a/client/microfrontend_group_membership.go +++ b/client/microfrontend_group_membership.go @@ -36,9 +36,9 @@ func (c *Client) GetMicrofrontendGroupMembership(ctx context.Context, TeamID str tflog.Info(ctx, "getting microfrontend group", map[string]any{ "project_id": ProjectID, "group_id": GroupID, - "team_id": c.teamID(TeamID), + "team_id": c.TeamID(TeamID), }) - group, err := c.GetMicrofrontendGroup(ctx, GroupID, c.teamID(TeamID)) + group, err := c.GetMicrofrontendGroup(ctx, GroupID, c.TeamID(TeamID)) if err != nil { return r, err } @@ -57,7 +57,7 @@ func (c *Client) AddOrUpdateMicrofrontendGroupMembership(ctx context.Context, re }) p, err := c.PatchMicrofrontendGroupMembership(ctx, MicrofrontendGroupMembership{ ProjectID: request.ProjectID, - TeamID: c.teamID(request.TeamID), + TeamID: c.TeamID(request.TeamID), Enabled: true, IsDefaultApp: request.IsDefaultApp, DefaultRoute: request.DefaultRoute, @@ -74,11 +74,11 @@ func (c *Client) RemoveMicrofrontendGroupMembership(ctx context.Context, request tflog.Info(ctx, "removing microfrontend project from group", map[string]any{ "project_id": request.ProjectID, "group_id": request.MicrofrontendGroupID, - "team_id": c.teamID(request.TeamID), + "team_id": c.TeamID(request.TeamID), }) p, err := c.PatchMicrofrontendGroupMembership(ctx, MicrofrontendGroupMembership{ ProjectID: request.ProjectID, - TeamID: c.teamID(request.TeamID), + TeamID: c.TeamID(request.TeamID), Enabled: false, MicrofrontendGroupID: request.MicrofrontendGroupID, }) @@ -107,8 +107,8 @@ func (c *Client) PatchMicrofrontendGroupMembership(ctx context.Context, request Enabled: request.Enabled, })) } - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "updating microfrontend group membership", map[string]any{ @@ -128,7 +128,7 @@ func (c *Client) PatchMicrofrontendGroupMembership(ctx context.Context, request return MicrofrontendGroupMembership{ MicrofrontendGroupID: request.MicrofrontendGroupID, ProjectID: request.ProjectID, - TeamID: c.teamID(request.TeamID), + TeamID: c.TeamID(request.TeamID), Enabled: apiResponse.Microfrontends.Enabled, IsDefaultApp: apiResponse.Microfrontends.IsDefaultApp, DefaultRoute: apiResponse.Microfrontends.DefaultRoute, diff --git a/client/project.go b/client/project.go index e5633e85..5b1cee76 100644 --- a/client/project.go +++ b/client/project.go @@ -66,8 +66,8 @@ type CreateProjectRequest struct { // CreateProject will create a project within Vercel. func (c *Client) CreateProject(ctx context.Context, teamID string, request CreateProjectRequest) (r ProjectResponse, err error) { url := fmt.Sprintf("%s/v8/projects", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } payload := string(mustMarshal(request)) @@ -84,7 +84,7 @@ func (c *Client) CreateProject(ctx context.Context, teamID string, request Creat if err != nil { return r, err } - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } @@ -92,8 +92,8 @@ func (c *Client) CreateProject(ctx context.Context, teamID string, request Creat // remove every environment variable, as these cease to exist when a project is removed. func (c *Client) DeleteProject(ctx context.Context, projectID, teamID string) error { url := fmt.Sprintf("%s/v8/projects/%s", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting project", map[string]any{ "url": url, @@ -237,8 +237,8 @@ type ResourceConfig struct { // GetProject retrieves information about an existing project from Vercel. func (c *Client) GetProject(ctx context.Context, projectID, teamID string) (r ProjectResponse, err error) { url := fmt.Sprintf("%s/v10/projects/%s", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting project", map[string]any{ "url": url, @@ -253,15 +253,15 @@ func (c *Client) GetProject(ctx context.Context, projectID, teamID string) (r Pr return r, fmt.Errorf("unable to get project: %w", err) } - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } // ListProjects lists the top 100 projects (no pagination) from within Vercel. func (c *Client) ListProjects(ctx context.Context, teamID string) (r []ProjectResponse, err error) { url := fmt.Sprintf("%s/v8/projects?limit=100", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s&teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s&teamId=%s", url, c.TeamID(teamID)) } pr := struct { @@ -277,7 +277,7 @@ func (c *Client) ListProjects(ctx context.Context, teamID string) (r []ProjectRe body: "", }, &pr) for i := 0; i < len(pr.Projects); i++ { - pr.Projects[i].TeamID = c.teamID(teamID) + pr.Projects[i].TeamID = c.TeamID(teamID) } return pr.Projects, err } @@ -324,8 +324,8 @@ type UpdateProjectRequest struct { // UpdateProject updates an existing projects configuration within Vercel. func (c *Client) UpdateProject(ctx context.Context, projectID, teamID string, request UpdateProjectRequest) (r ProjectResponse, err error) { url := fmt.Sprintf("%s/v9/projects/%s", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "updating project", map[string]any{ @@ -342,7 +342,7 @@ func (c *Client) UpdateProject(ctx context.Context, projectID, teamID string, re return r, err } - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } @@ -354,8 +354,8 @@ type UpdateProductionBranchRequest struct { func (c *Client) UpdateProductionBranch(ctx context.Context, request UpdateProductionBranchRequest) (r ProjectResponse, err error) { url := fmt.Sprintf("%s/v9/projects/%s/branch", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "updating project production branch", map[string]any{ @@ -371,14 +371,14 @@ func (c *Client) UpdateProductionBranch(ctx context.Context, request UpdateProdu if err != nil { return r, err } - r.TeamID = c.teamID(c.teamID(request.TeamID)) + r.TeamID = c.TeamID(c.TeamID(request.TeamID)) return r, err } func (c *Client) UnlinkGitRepoFromProject(ctx context.Context, projectID, teamID string) (r ProjectResponse, err error) { url := fmt.Sprintf("%s/v9/projects/%s/link", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "unlinking project git repo", map[string]any{ "url": url, @@ -391,7 +391,7 @@ func (c *Client) UnlinkGitRepoFromProject(ctx context.Context, projectID, teamID if err != nil { return r, fmt.Errorf("error unlinking git repo: %w", err) } - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } @@ -404,8 +404,8 @@ type LinkGitRepoToProjectRequest struct { func (c *Client) LinkGitRepoToProject(ctx context.Context, request LinkGitRepoToProjectRequest) (r ProjectResponse, err error) { url := fmt.Sprintf("%s/v9/projects/%s/link", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "linking project git repo", map[string]any{ "url": url, @@ -420,6 +420,6 @@ func (c *Client) LinkGitRepoToProject(ctx context.Context, request LinkGitRepoTo if err != nil { return r, fmt.Errorf("error linking git repo: %w", err) } - r.TeamID = c.teamID(c.teamID(request.TeamID)) + r.TeamID = c.TeamID(c.TeamID(request.TeamID)) return r, err } diff --git a/client/project_deployment_retention.go b/client/project_deployment_retention.go index 53523d5b..1b8b23aa 100644 --- a/client/project_deployment_retention.go +++ b/client/project_deployment_retention.go @@ -32,8 +32,8 @@ type DeploymentExpirationResponse struct { // DeleteDeploymentRetention will remove any existing deployment retention for a given project. func (c *Client) DeleteDeploymentRetention(ctx context.Context, projectID, teamID string) error { url := fmt.Sprintf("%s/v9/projects/%s/deployment-expiration", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } unlimited := "unlimited" payload := string(mustMarshal(DeploymentRetentionRequest{ExpirationPreview: unlimited, ExpirationProduction: unlimited, ExpirationCanceled: unlimited, ExpirationErrored: unlimited})) @@ -97,8 +97,8 @@ func (d deploymentExpirationResponse) toDeploymentExpirationResponse(teamID stri // UpdateDeploymentRetention will update an existing deployment retention to the latest information. func (c *Client) UpdateDeploymentRetention(ctx context.Context, request UpdateDeploymentRetentionRequest) (DeploymentExpirationResponse, error) { url := fmt.Sprintf("%s/v9/projects/%s/deployment-expiration", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request.DeploymentRetention)) @@ -113,14 +113,14 @@ func (c *Client) UpdateDeploymentRetention(ctx context.Context, request UpdateDe url: url, body: payload, }, &d) - return d.toDeploymentExpirationResponse(c.teamID(request.TeamID)), err + return d.toDeploymentExpirationResponse(c.TeamID(request.TeamID)), err } // GetDeploymentRetention returns the deployment retention for a given project. func (c *Client) GetDeploymentRetention(ctx context.Context, projectID, teamID string) (d DeploymentExpirationResponse, err error) { url := fmt.Sprintf("%s/v2/projects/%s", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting deployment retention", map[string]any{ @@ -141,11 +141,11 @@ func (c *Client) GetDeploymentRetention(ctx context.Context, projectID, teamID s ExpirationCanceled: 36500, ExpirationErrored: 36500, }, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, nil } return DeploymentExpirationResponse{ DeploymentExpiration: *p.DeploymentExpiration, - TeamID: c.teamID(teamID), + TeamID: c.TeamID(teamID), }, err } diff --git a/client/project_domain.go b/client/project_domain.go index 12199325..f60d1779 100644 --- a/client/project_domain.go +++ b/client/project_domain.go @@ -22,8 +22,8 @@ type CreateProjectDomainRequest struct { // CreateProjectDomain creates a project domain within Vercel. func (c *Client) CreateProjectDomain(ctx context.Context, projectID, teamID string, request CreateProjectDomainRequest) (r ProjectDomainResponse, err error) { url := fmt.Sprintf("%s/v10/projects/%s/domains", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } payload := string(mustMarshal(request)) @@ -37,15 +37,15 @@ func (c *Client) CreateProjectDomain(ctx context.Context, projectID, teamID stri url: url, body: payload, }, &r) - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } // DeleteProjectDomain removes any association of a domain name with a Vercel project. func (c *Client) DeleteProjectDomain(ctx context.Context, projectID, domain, teamID string) error { url := fmt.Sprintf("%s/v8/projects/%s/domains/%s", c.baseURL, projectID, domain) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting project domain", map[string]any{ @@ -74,8 +74,8 @@ type ProjectDomainResponse struct { // GetProjectDomain retrieves information about a project domain from Vercel. func (c *Client) GetProjectDomain(ctx context.Context, projectID, domain, teamID string) (r ProjectDomainResponse, err error) { url := fmt.Sprintf("%s/v8/projects/%s/domains/%s", c.baseURL, projectID, domain) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting project domain", map[string]any{ @@ -87,7 +87,7 @@ func (c *Client) GetProjectDomain(ctx context.Context, projectID, domain, teamID url: url, body: "", }, &r) - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } @@ -102,8 +102,8 @@ type UpdateProjectDomainRequest struct { // UpdateProjectDomain updates an existing project domain within Vercel. func (c *Client) UpdateProjectDomain(ctx context.Context, projectID, domain, teamID string, request UpdateProjectDomainRequest) (r ProjectDomainResponse, err error) { url := fmt.Sprintf("%s/v8/projects/%s/domains/%s", c.baseURL, projectID, domain) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } payload := string(mustMarshal(request)) @@ -117,6 +117,6 @@ func (c *Client) UpdateProjectDomain(ctx context.Context, projectID, domain, tea url: url, body: payload, }, &r) - r.TeamID = c.teamID(teamID) + r.TeamID = c.TeamID(teamID) return r, err } diff --git a/client/project_function_cpu.go b/client/project_function_cpu.go index 6e171734..162baf41 100644 --- a/client/project_function_cpu.go +++ b/client/project_function_cpu.go @@ -37,8 +37,8 @@ var fromCPUNetwork = map[string]string{ func (c *Client) GetProjectFunctionCPU(ctx context.Context, projectID, teamID string) (p ProjectFunctionCPU, err error) { url := fmt.Sprintf("%s/v1/projects/%s/resource-config", c.baseURL, projectID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "get project function cpu", map[string]any{ "url": url, @@ -66,8 +66,8 @@ func (c *Client) GetProjectFunctionCPU(ctx context.Context, projectID, teamID st func (c *Client) UpdateProjectFunctionCPU(ctx context.Context, request ProjectFunctionCPURequest) (p ProjectFunctionCPU, err error) { url := fmt.Sprintf("%s/v1/projects/%s/resource-config", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } v := toCPUNetwork[request.CPU] diff --git a/client/project_member.go b/client/project_member.go index f4324fa6..5c30c04d 100644 --- a/client/project_member.go +++ b/client/project_member.go @@ -22,8 +22,8 @@ type AddProjectMembersRequest struct { func (c *Client) AddProjectMembers(ctx context.Context, request AddProjectMembersRequest) error { url := fmt.Sprintf("%s/v1/projects/%s/members/batch", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "adding project members", map[string]any{ "url": url, @@ -51,8 +51,8 @@ type RemoveProjectMembersRequest struct { func (c *Client) RemoveProjectMembers(ctx context.Context, request RemoveProjectMembersRequest) error { url := fmt.Sprintf("%s/v1/projects/%s/members/batch", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "removing project members", map[string]any{ "url": url, @@ -85,8 +85,8 @@ type UpdateProjectMembersRequest struct { func (c *Client) UpdateProjectMembers(ctx context.Context, request UpdateProjectMembersRequest) error { url := fmt.Sprintf("%s/v1/projects/%s/members", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "updating project members", map[string]any{ @@ -115,8 +115,8 @@ type GetProjectMembersRequest struct { func (c *Client) ListProjectMembers(ctx context.Context, request GetProjectMembersRequest) ([]ProjectMember, error) { url := fmt.Sprintf("%s/v1/projects/%s/members", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s&limit=100", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s&limit=100", url, c.TeamID(request.TeamID)) } tflog.Info(ctx, "listing project members", map[string]any{ "url": url, diff --git a/client/project_protection_bypass_for_automation_update.go b/client/project_protection_bypass_for_automation_update.go index 11647c11..c8eb93cf 100644 --- a/client/project_protection_bypass_for_automation_update.go +++ b/client/project_protection_bypass_for_automation_update.go @@ -49,8 +49,8 @@ func getUpdateBypassProtectionRequestBody(newValue bool, secret string) string { func (c *Client) UpdateProtectionBypassForAutomation(ctx context.Context, request UpdateProtectionBypassForAutomationRequest) (s string, err error) { url := fmt.Sprintf("%s/v10/projects/%s/protection-bypass", c.baseURL, request.ProjectID) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := getUpdateBypassProtectionRequestBody(request.NewValue, request.Secret) diff --git a/client/shared_environment_variable.go b/client/shared_environment_variable.go index 2e6c5d13..f3cdacf0 100644 --- a/client/shared_environment_variable.go +++ b/client/shared_environment_variable.go @@ -61,8 +61,8 @@ func (c *Client) findConflictingSharedEnvID(ctx context.Context, request CreateS // CreateSharedEnvironmentVariable will create a brand new shared environment variable if one does not exist. func (c *Client) CreateSharedEnvironmentVariable(ctx context.Context, request CreateSharedEnvironmentVariableRequest) (e SharedEnvironmentVariableResponse, err error) { url := fmt.Sprintf("%s/v1/env", c.baseURL) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request.EnvironmentVariable)) tflog.Info(ctx, "creating shared environment variable", map[string]any{ @@ -99,8 +99,8 @@ func (c *Client) CreateSharedEnvironmentVariable(ctx context.Context, request Cr // DeleteSharedEnvironmentVariable will remove a shared environment variable from Vercel. func (c *Client) DeleteSharedEnvironmentVariable(ctx context.Context, teamID, variableID string) error { url := fmt.Sprintf("%s/v1/env", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } payload := string(mustMarshal(struct { IDs []string `json:"ids"` @@ -122,8 +122,8 @@ func (c *Client) DeleteSharedEnvironmentVariable(ctx context.Context, teamID, va func (c *Client) GetSharedEnvironmentVariable(ctx context.Context, teamID, envID string) (e SharedEnvironmentVariableResponse, err error) { url := fmt.Sprintf("%s/v1/env/%s", c.baseURL, envID) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting shared environment variable", map[string]any{ @@ -135,14 +135,14 @@ func (c *Client) GetSharedEnvironmentVariable(ctx context.Context, teamID, envID url: url, body: "", }, &e) - e.TeamID = c.teamID(teamID) + e.TeamID = c.TeamID(teamID) return e, err } func (c *Client) ListSharedEnvironmentVariables(ctx context.Context, teamID string) ([]SharedEnvironmentVariableResponse, error) { url := fmt.Sprintf("%s/v1/env/all", c.baseURL) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "listing shared environment variables", map[string]any{ @@ -158,7 +158,7 @@ func (c *Client) ListSharedEnvironmentVariables(ctx context.Context, teamID stri body: "", }, &res) for i := 0; i < len(res.Data); i++ { - res.Data[i].TeamID = c.teamID(teamID) + res.Data[i].TeamID = c.TeamID(teamID) } return res.Data, err } @@ -181,8 +181,8 @@ type UpdateSharedEnvironmentVariableRequest struct { func (c *Client) UpdateSharedEnvironmentVariable(ctx context.Context, request UpdateSharedEnvironmentVariableRequest) (e SharedEnvironmentVariableResponse, err error) { url := fmt.Sprintf("%s/v1/env", c.baseURL) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(struct { Updates map[string]UpdateSharedEnvironmentVariableRequest `json:"updates"` diff --git a/client/webhook.go b/client/webhook.go index 15153607..6ab11096 100644 --- a/client/webhook.go +++ b/client/webhook.go @@ -25,8 +25,8 @@ type Webhook struct { func (c *Client) CreateWebhook(ctx context.Context, request CreateWebhookRequest) (w Webhook, err error) { url := fmt.Sprintf("%s/v1/webhooks", c.baseURL) - if c.teamID(request.TeamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID)) + if c.TeamID(request.TeamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(request.TeamID)) } payload := string(mustMarshal(request)) tflog.Info(ctx, "creating webhook", map[string]any{ @@ -44,8 +44,8 @@ func (c *Client) CreateWebhook(ctx context.Context, request CreateWebhookRequest func (c *Client) DeleteWebhook(ctx context.Context, id, teamID string) error { url := fmt.Sprintf("%s/v1/webhooks/%s", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "deleting webhook", map[string]any{ "url": url, @@ -59,8 +59,8 @@ func (c *Client) DeleteWebhook(ctx context.Context, id, teamID string) error { func (c *Client) GetWebhook(ctx context.Context, id, teamID string) (w Webhook, err error) { url := fmt.Sprintf("%s/v1/webhooks/%s", c.baseURL, id) - if c.teamID(teamID) != "" { - url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID)) + if c.TeamID(teamID) != "" { + url = fmt.Sprintf("%s?teamId=%s", url, c.TeamID(teamID)) } tflog.Info(ctx, "getting webhook", map[string]any{ "url": url, diff --git a/vercel/data_source_project_members.go b/vercel/data_source_project_members.go index 8c8fe04a..f4342ab0 100644 --- a/vercel/data_source_project_members.go +++ b/vercel/data_source_project_members.go @@ -51,6 +51,7 @@ func (d *projectMembersDataSource) Schema(_ context.Context, _ datasource.Schema Attributes: map[string]schema.Attribute{ "team_id": schema.StringAttribute{ Optional: true, + Computed: true, Description: "The team ID to which the project belongs. Required when accessing a team project if a default team has not been set in the provider.", }, "project_id": schema.StringAttribute{ @@ -123,6 +124,7 @@ func (d *projectMembersDataSource) Read(ctx context.Context, req datasource.Read } config.Members = types.SetValueMust(memberAttrType, memberItems) + config.TeamID = types.StringValue(d.client.TeamID(config.TeamID.ValueString())) diags = resp.State.Set(ctx, &config) resp.Diagnostics.Append(diags...) } diff --git a/vercel/data_source_team_member_test.go b/vercel/data_source_team_member_test.go index e8613960..ae5c7957 100644 --- a/vercel/data_source_team_member_test.go +++ b/vercel/data_source_team_member_test.go @@ -12,7 +12,7 @@ func TestAcc_TeamMemberDataSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: cfg(testAccTeamMemberDataSourceConfig(testAdditionalUser(t))), + Config: cfg(testAccTeamMemberDataSourceConfig(testAdditionalUser(t), testTeam(t))), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.vercel_team_member.test", "team_id"), resource.TestCheckResourceAttrSet("data.vercel_team_member.test", "user_id"), @@ -23,10 +23,11 @@ func TestAcc_TeamMemberDataSource(t *testing.T) { }) } -func testAccTeamMemberDataSourceConfig(user string) string { +func testAccTeamMemberDataSourceConfig(user, teamID string) string { return fmt.Sprintf(` resource "vercel_team_member" "test" { - user_id = "%[2]s" + user_id = "%[1]s" + team_id = "%[2]s" role = "MEMBER" } @@ -34,5 +35,5 @@ data "vercel_team_member" "test" { user_id = vercel_team_member.test.user_id team_id = vercel_team_member.test.team_id } -`, teamIDConfig, user) +`, user, teamID) } diff --git a/vercel/resource_project_members.go b/vercel/resource_project_members.go index c8947a54..0e448d68 100644 --- a/vercel/resource_project_members.go +++ b/vercel/resource_project_members.go @@ -238,6 +238,7 @@ func (r *projectMembersResource) Create(ctx context.Context, req resource.Create } plan.Members = types.SetValueMust(memberAttrType, memberItems) + plan.TeamID = types.StringValue(r.client.TeamID(plan.TeamID.ValueString())) diags = resp.State.Set(ctx, &plan) resp.Diagnostics.Append(diags...) } @@ -333,6 +334,7 @@ func (r *projectMembersResource) Read(ctx context.Context, req resource.ReadRequ } state.Members = types.SetValueMust(memberAttrType, memberItems) + state.TeamID = types.StringValue(r.client.TeamID(state.TeamID.ValueString())) diags = resp.State.Set(ctx, &state) resp.Diagnostics.Append(diags...) } @@ -489,6 +491,7 @@ func (r *projectMembersResource) Update(ctx context.Context, req resource.Update } state.Members = types.SetValueMust(memberAttrType, memberItems) + state.TeamID = types.StringValue(r.client.TeamID(state.TeamID.ValueString())) diags = resp.State.Set(ctx, &state) resp.Diagnostics.Append(diags...) } From fdcd5e52abd751bce5b1106ef966c9efef045a96 Mon Sep 17 00:00:00 2001 From: Douglas Harcourt Parsons Date: Wed, 14 May 2025 15:26:07 +0100 Subject: [PATCH 5/6] Rewrite rest of tests to use configured provider --- vercel/provider_test.go | 4 - vercel/resource_access_group_project_test.go | 26 ++- vercel/resource_alias_test.go | 22 +-- vercel/resource_attack_challenge_mode_test.go | 18 +- vercel/resource_custom_environment_test.go | 19 +- vercel/resource_deployment_test.go | 69 +++----- vercel/resource_dns_record_test.go | 33 +--- vercel/resource_edge_config_item_test.go | 15 +- vercel/resource_edge_config_schema_test.go | 20 +-- vercel/resource_edge_config_test.go | 14 +- vercel/resource_edge_config_token_test.go | 8 +- vercel/resource_firewall_bypass_test.go | 23 +-- vercel/resource_firewall_config_test.go | 30 +--- ...esource_integration_project_access_test.go | 49 +----- vercel/resource_log_drain_test.go | 12 +- vercel/resource_microfrontend_group_test.go | 10 +- ...ource_project_deployment_retention_test.go | 32 ++-- vercel/resource_project_domain_test.go | 74 +++----- ...ource_project_environment_variable_test.go | 28 +-- ...urce_project_environment_variables_test.go | 20 +-- vercel/resource_project_members_test.go | 24 +-- vercel/resource_project_test.go | 163 +++++++----------- ..._environment_variable_project_link_test.go | 42 ++--- ...source_shared_environment_variable_test.go | 28 +-- vercel/resource_team_config_test.go | 4 +- vercel/resource_team_member_test.go | 31 ++-- vercel/resource_webhook_test.go | 10 +- 27 files changed, 279 insertions(+), 549 deletions(-) diff --git a/vercel/provider_test.go b/vercel/provider_test.go index f1dbc795..48ffa52d 100644 --- a/vercel/provider_test.go +++ b/vercel/provider_test.go @@ -89,10 +89,6 @@ func testAdditionalUser(t *testing.T) string { return value } -func teamIDConfig(t *testing.T) string { - return fmt.Sprintf("team_id = \"%s\"", testTeam(t)) -} - func testExistingIntegration(t *testing.T) string { value := os.Getenv("VERCEL_TERRAFORM_TESTING_EXISTING_INTEGRATION") if value == "" { diff --git a/vercel/resource_access_group_project_test.go b/vercel/resource_access_group_project_test.go index b6e729e2..6d171325 100644 --- a/vercel/resource_access_group_project_test.go +++ b/vercel/resource_access_group_project_test.go @@ -19,7 +19,7 @@ func TestAcc_AccessGroupProjectResource(t *testing.T) { CheckDestroy: testAccAccessGroupProjectDoesNotExist(testClient(t), testTeam(t), "vercel_access_group_project.test"), Steps: []resource.TestStep{ { - Config: testAccResourceAccessGroupProject(teamIDConfig(t), name), + Config: cfg(testAccResourceAccessGroupProject(name)), Check: resource.ComposeAggregateTestCheckFunc( testCheckAccessGroupProjectExists(testClient(t), testTeam(t), "vercel_access_group_project.test"), resource.TestCheckResourceAttrSet("vercel_access_group_project.test", "access_group_id"), @@ -33,7 +33,7 @@ func TestAcc_AccessGroupProjectResource(t *testing.T) { ImportStateIdFunc: getAccessGroupProjectImportID("vercel_access_group_project.test"), }, { - Config: testAccResourceAccessGroupProjectUpdated(teamIDConfig(t), name), + Config: cfg(testAccResourceAccessGroupProjectUpdated(name)), Check: resource.ComposeAggregateTestCheckFunc( testCheckAccessGroupProjectExists(testClient(t), testTeam(t), "vercel_access_group_project.test"), resource.TestCheckResourceAttrSet("vercel_access_group_project.test", "project_id"), @@ -100,44 +100,38 @@ func testAccAccessGroupProjectDoesNotExist(testClient *client.Client, teamID str } } -func testAccResourceAccessGroupProject(teamIDConfig string, name string) string { +func testAccResourceAccessGroupProject(name string) string { return fmt.Sprintf(` resource "vercel_project" "test" { - %[1]s - name = "test-acc-%[2]s" + name = "test-acc-%[1]s" } resource "vercel_access_group" "test" { - %[1]s - name = "test-acc-%[2]s" + name = "test-acc-%[1]s" } resource "vercel_access_group_project" "test" { - %[1]s project_id = vercel_project.test.id access_group_id = vercel_access_group.test.id role = "ADMIN" } -`, teamIDConfig, name) +`, name) } -func testAccResourceAccessGroupProjectUpdated(teamIDConfig string, name string) string { +func testAccResourceAccessGroupProjectUpdated(name string) string { return fmt.Sprintf(` resource "vercel_project" "test" { - %[1]s - name = "test-acc-%[2]s" + name = "test-acc-%[1]s" } resource "vercel_access_group" "test" { - %[1]s - name = "test-acc-%[2]s" + name = "test-acc-%[1]s" } resource "vercel_access_group_project" "test" { - %[1]s project_id = vercel_project.test.id access_group_id = vercel_access_group.test.id role = "PROJECT_DEVELOPER" } -`, teamIDConfig, name) +`, name) } diff --git a/vercel/resource_alias_test.go b/vercel/resource_alias_test.go index feff696f..d9696ff8 100644 --- a/vercel/resource_alias_test.go +++ b/vercel/resource_alias_test.go @@ -48,7 +48,7 @@ func TestAcc_AliasResource(t *testing.T) { CheckDestroy: testCheckAliasDestroyed(testClient(t), "vercel_alias.test", testTeam(t)), Steps: []resource.TestStep{ { - Config: testAccAliasResourceConfig(name, teamIDConfig(t), testGithubRepo(t)), + Config: cfg(testAccAliasResourceConfig(name, testGithubRepo(t))), Check: resource.ComposeAggregateTestCheckFunc( testCheckAliasExists(testClient(t), testTeam(t), fmt.Sprintf("test-acc-%s.vercel.app", name)), resource.TestCheckResourceAttr("vercel_alias.test", "alias", fmt.Sprintf("test-acc-%s.vercel.app", name)), @@ -57,7 +57,7 @@ func TestAcc_AliasResource(t *testing.T) { ), }, { - Config: testAccAliasResourceConfigUpdated(name, teamIDConfig(t), testGithubRepo(t)), + Config: cfg(testAccAliasResourceConfigUpdated(name, testGithubRepo(t))), Check: resource.ComposeAggregateTestCheckFunc( testCheckAliasExists(testClient(t), testTeam(t), fmt.Sprintf("test-acc-%s.vercel.app", name)), resource.TestCheckResourceAttr("vercel_alias.test", "alias", fmt.Sprintf("test-acc-%s.vercel.app", name)), @@ -69,52 +69,46 @@ func TestAcc_AliasResource(t *testing.T) { }) } -func testAccAliasResourceConfig(name, team string, githubRepo string) string { +func testAccAliasResourceConfig(name, githubRepo string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-%[1]s" - %[2]s git_repository = { type = "github" - repo = "%[3]s" + repo = "%[2]s" } } resource "vercel_deployment" "test" { project_id = vercel_project.test.id ref = "main" - %[2]s } resource "vercel_alias" "test" { alias = "test-acc-%[1]s.vercel.app" deployment_id = vercel_deployment.test.id - %[2]s } -`, name, team, githubRepo) +`, name, githubRepo) } -func testAccAliasResourceConfigUpdated(name, team string, githubRepo string) string { +func testAccAliasResourceConfigUpdated(name, githubRepo string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-%[1]s" - %[2]s git_repository = { type = "github" - repo = "%[3]s" + repo = "%[2]s" } } resource "vercel_deployment" "test_two" { project_id = vercel_project.test.id ref = "main" - %[2]s } resource "vercel_alias" "test" { alias = "test-acc-%[1]s.vercel.app" deployment_id = vercel_deployment.test_two.id - %[2]s } -`, name, team, githubRepo) +`, name, githubRepo) } diff --git a/vercel/resource_attack_challenge_mode_test.go b/vercel/resource_attack_challenge_mode_test.go index 0bc9c4d1..916c86cc 100644 --- a/vercel/resource_attack_challenge_mode_test.go +++ b/vercel/resource_attack_challenge_mode_test.go @@ -15,7 +15,7 @@ func TestAcc_AttackChallengeModeResource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccAttackChallengeModeConfigResource(name, teamIDConfig(t)), + Config: cfg(testAccAttackChallengeModeConfigResource(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("vercel_attack_challenge_mode.enabled", "enabled", "true"), resource.TestCheckResourceAttr("vercel_attack_challenge_mode.disabled", "enabled", "false"), @@ -44,7 +44,7 @@ func TestAcc_AttackChallengeModeResource(t *testing.T) { }, }, { - Config: testAccAttackChallengeModeConfigResourceUpdated(name, teamIDConfig(t)), + Config: cfg(testAccAttackChallengeModeConfigResourceUpdated(name)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("vercel_attack_challenge_mode.enabled", "enabled", "false"), ), @@ -53,43 +53,37 @@ func TestAcc_AttackChallengeModeResource(t *testing.T) { }) } -func testAccAttackChallengeModeConfigResource(name, teamID string) string { +func testAccAttackChallengeModeConfigResource(name string) string { return fmt.Sprintf(` resource "vercel_project" "enabled" { name = "test-acc-%[1]s-enabled" - %[2]s } resource "vercel_attack_challenge_mode" "enabled" { project_id = vercel_project.enabled.id enabled = true - %[2]s } resource "vercel_project" "disabled" { name = "test-acc-%[1]s-disabled" - %[2]s } resource "vercel_attack_challenge_mode" "disabled" { project_id = vercel_project.disabled.id enabled = false - %[2]s } -`, name, teamID) +`, name) } -func testAccAttackChallengeModeConfigResourceUpdated(name, teamID string) string { +func testAccAttackChallengeModeConfigResourceUpdated(name string) string { return fmt.Sprintf(` resource "vercel_project" "enabled" { name = "test-acc-%[1]s-enabled" - %[2]s } resource "vercel_attack_challenge_mode" "enabled" { project_id = vercel_project.enabled.id enabled = false - %[2]s } -`, name, teamID) +`, name) } diff --git a/vercel/resource_custom_environment_test.go b/vercel/resource_custom_environment_test.go index 506766aa..173fff0f 100644 --- a/vercel/resource_custom_environment_test.go +++ b/vercel/resource_custom_environment_test.go @@ -44,7 +44,7 @@ func TestAcc_CustomEnvironmentResource(t *testing.T) { CheckDestroy: testAccProjectDestroy(testClient(t), "vercel_project.test", testTeam(t)), Steps: []resource.TestStep{ { - Config: testAccCustomEnvironment(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccCustomEnvironment(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testCheckCustomEnvironmentExists(testClient(t), testTeam(t), "vercel_custom_environment.test"), resource.TestCheckResourceAttrSet("vercel_custom_environment.test", "id"), @@ -69,7 +69,7 @@ func TestAcc_CustomEnvironmentResource(t *testing.T) { ), }, { - Config: testAccCustomEnvironmentUpdated(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccCustomEnvironmentUpdated(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testCheckCustomEnvironmentExists(testClient(t), testTeam(t), "vercel_custom_environment.test"), resource.TestCheckResourceAttrSet("vercel_custom_environment.test", "id"), @@ -105,16 +105,14 @@ func getCustomEnvImportID(n string) resource.ImportStateIdFunc { } } -func testAccCustomEnvironment(projectSuffix string, teamIDConfig string) string { +func testAccCustomEnvironment(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-custom-env-%[1]s" - %[2]s } resource "vercel_custom_environment" "test" { project_id = vercel_project.test.id - %[2]s name = "test-acc-%[1]s" description = "without branch tracking" } @@ -122,7 +120,6 @@ resource "vercel_custom_environment" "test" { // Ensure project_environment_variable works resource "vercel_project_environment_variable" "test" { project_id = vercel_project.test.id - %[2]s key = "foo" value = "test-acc-env-var" custom_environment_ids = [vercel_custom_environment.test.id] @@ -131,7 +128,6 @@ resource "vercel_project_environment_variable" "test" { // Ensure project_environment_variables works resource "vercel_project_environment_variables" "test" { project_id = vercel_project.test.id - %[2]s variables = [{ key = "bar" value = "test-acc-env-var" @@ -141,7 +137,6 @@ resource "vercel_project_environment_variables" "test" { resource "vercel_custom_environment" "test_bt" { project_id = vercel_project.test.id - %[2]s name = "test-acc-bt-%[1]s" description = "with branch tracking" branch_tracking = { @@ -149,19 +144,17 @@ resource "vercel_custom_environment" "test_bt" { type = "startsWith" } } -`, projectSuffix, teamIDConfig) +`, projectSuffix) } -func testAccCustomEnvironmentUpdated(projectSuffix string, teamIDConfig string) string { +func testAccCustomEnvironmentUpdated(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-custom-env-%[1]s" - %[2]s } resource "vercel_custom_environment" "test" { project_id = vercel_project.test.id - %[2]s name = "test-acc-%[1]s-updtd" description = "without branch tracking updated" branch_tracking = { @@ -169,5 +162,5 @@ resource "vercel_custom_environment" "test" { type = "endsWith" } } -`, projectSuffix, teamIDConfig) +`, projectSuffix) } diff --git a/vercel/resource_deployment_test.go b/vercel/resource_deployment_test.go index 895ce1a7..da2d1981 100644 --- a/vercel/resource_deployment_test.go +++ b/vercel/resource_deployment_test.go @@ -82,7 +82,7 @@ func TestAcc_Deployment(t *testing.T) { CheckDestroy: noopDestroyCheck, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(t), ""), + Config: cfg(testAccDeploymentConfig(projectSuffix, "")), Check: resource.ComposeAggregateTestCheckFunc( testTeamID, testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), @@ -90,7 +90,7 @@ func TestAcc_Deployment(t *testing.T) { ), }, { - Config: deploymentWithPrebuiltProject(projectSuffix, teamIDConfig(t)), + Config: cfg(deploymentWithPrebuiltProject(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testTeamID, testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), @@ -107,11 +107,11 @@ func TestAcc_DeploymentWithEnvironment(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(t), `environment = { + Config: cfg(testAccDeploymentConfig(projectSuffix, `environment = { FOO = "baz", BAR = "qux", BAZ = null - }`), + }`)), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), testAccEnvironmentSet(testClient(t), "vercel_deployment.test", "", "FOO", "BAR"), @@ -131,9 +131,9 @@ func TestAcc_DeploymentWithProjectSettings(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(t), `project_settings = { + Config: cfg(testAccDeploymentConfig(projectSuffix, `project_settings = { output_directory = ".", - }`), + }`)), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), resource.TestCheckResourceAttr("vercel_deployment.test", "production", "true"), @@ -152,7 +152,7 @@ func TestAcc_DeploymentWithRootDirectoryOverride(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccRootDirectoryOverride(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccRootDirectoryOverride(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), resource.TestCheckResourceAttr("vercel_deployment.test", "production", "true"), @@ -169,7 +169,7 @@ func TestAcc_DeploymentWithPathPrefix(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccRootDirectoryWithPathPrefix(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccRootDirectoryWithPathPrefix(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), ), @@ -212,14 +212,14 @@ func TestAcc_DeploymentWithDeleteOnDestroy(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeploymentConfig(projectSuffix, teamIDConfig(t), extraConfig), + Config: cfg(testAccDeploymentConfig(projectSuffix, extraConfig)), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), storeDeploymentID("vercel_deployment.test", &deploymentID), ), }, { - Config: testAccDeploymentConfigWithNoDeployment(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccDeploymentConfigWithNoDeployment(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testDeploymentGone(), ), @@ -235,7 +235,7 @@ func TestAcc_DeploymentWithGitSource(t *testing.T) { ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccDeployFromGitSource(projectSuffix, teamIDConfig(t), testGithubRepo(t), testBitbucketRepo(t)), + Config: cfg(testAccDeployFromGitSource(projectSuffix, testGithubRepo(t), testBitbucketRepo(t))), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists(testClient(t), "vercel_deployment.bitbucket", testTeam(t)), testAccDeploymentExists(testClient(t), "vercel_deployment.github", testTeam(t)), @@ -278,7 +278,7 @@ func TestAcc_DeploymentWithMissingFilesPath(t *testing.T) { Steps: []resource.TestStep{ { PreConfig: func() { createRandomFilePreConfig(t) }, - Config: testAccWithDirectoryUpload(projectSuffix, teamIDConfig(t)), + Config: cfg(testAccWithDirectoryUpload(projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testAccDeploymentExists(testClient(t), "vercel_deployment.test", ""), ), @@ -287,11 +287,10 @@ func TestAcc_DeploymentWithMissingFilesPath(t *testing.T) { }) } -func testAccDeploymentConfigWithNoDeployment(projectSuffix, teamID string) string { +func testAccDeploymentConfigWithNoDeployment(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-deployment-%[1]s" - %[2]s environment = [ { key = "bar" @@ -300,14 +299,13 @@ resource "vercel_project" "test" { } ] } -`, projectSuffix, teamID) +`, projectSuffix) } -func deploymentWithPrebuiltProject(projectSuffix, teamID string) string { +func deploymentWithPrebuiltProject(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-deployment-%[1]s" - %[2]s environment = [ { key = "bar" @@ -323,19 +321,17 @@ data "vercel_prebuilt_project" "test" { resource "vercel_deployment" "test" { project_id = vercel_project.test.id - %[2]s files = data.vercel_prebuilt_project.test.output path_prefix = data.vercel_prebuilt_project.test.path } -`, projectSuffix, teamID) +`, projectSuffix) } -func testAccDeploymentConfig(projectSuffix, teamID, deploymentExtras string) string { +func testAccDeploymentConfig(projectSuffix, deploymentExtras string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-deployment-%[1]s" - %[2]s environment = [ { key = "bar" @@ -355,7 +351,6 @@ data "vercel_file" "windows_line_ending" { resource "vercel_deployment" "test" { %[2]s - %[3]s project_id = vercel_project.test.id files = merge( @@ -365,14 +360,13 @@ resource "vercel_deployment" "test" { production = true } -`, projectSuffix, teamID, deploymentExtras) +`, projectSuffix, deploymentExtras) } -func testAccRootDirectoryOverride(projectSuffix, teamID string) string { +func testAccRootDirectoryOverride(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-deployment-%[1]s" - %[2]s } data "vercel_file" "index" { @@ -381,20 +375,18 @@ 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, teamID) +}`, projectSuffix) } -func testAccRootDirectoryWithPathPrefix(projectSuffix, teamID string) string { +func testAccRootDirectoryWithPathPrefix(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-deployment-%[1]s" - %[2]s } data "vercel_file" "index" { @@ -403,13 +395,12 @@ data "vercel_file" "index" { resource "vercel_deployment" "test" { project_id = vercel_project.test.id - %[2]s files = data.vercel_file.index.file path_prefix = "../vercel/example" -}`, projectSuffix, teamID) +}`, projectSuffix) } -func testAccDeployFromGitSource(projectSuffix, teamID string, githubRepo string, bitbucketRepo string) string { +func testAccDeployFromGitSource(projectSuffix, githubRepo, bitbucketRepo string) string { return fmt.Sprintf(` resource "vercel_project" "github" { name = "test-acc-deployment-%[1]s-github" @@ -417,7 +408,6 @@ resource "vercel_project" "github" { type = "github" repo = "%[2]s" } - %[4]s } resource "vercel_project" "bitbucket" { name = "test-acc-deployment-%[1]s-bitbucket" @@ -425,36 +415,31 @@ resource "vercel_project" "bitbucket" { type = "bitbucket" repo = "%[3]s" } - %[4]s } resource "vercel_deployment" "github" { project_id = vercel_project.github.id ref = "main" - %[4]s } resource "vercel_deployment" "bitbucket" { project_id = vercel_project.bitbucket.id ref = "main" - %[4]s } -`, projectSuffix, githubRepo, bitbucketRepo, teamID) +`, projectSuffix, githubRepo, bitbucketRepo) } -func testAccWithDirectoryUpload(projectSuffix, teamID string) string { +func testAccWithDirectoryUpload(projectSuffix string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-deployment-%[1]s" - %[2]s } data "vercel_project_directory" "test" { path = "../vercel/examples/one" - } +} resource "vercel_deployment" "test" { project_id = vercel_project.test.id - %[2]s files = data.vercel_project_directory.test.files path_prefix = data.vercel_project_directory.test.path -}`, projectSuffix, teamID) +}`, projectSuffix) } diff --git a/vercel/resource_dns_record_test.go b/vercel/resource_dns_record_test.go index 12d6aaa7..7aa7716f 100644 --- a/vercel/resource_dns_record_test.go +++ b/vercel/resource_dns_record_test.go @@ -69,7 +69,7 @@ func TestAcc_DNSRecord(t *testing.T) { ), Steps: []resource.TestStep{ { - Config: testAccDNSRecordConfig(testDomain(t), nameSuffix, teamIDConfig(t)), + Config: cfg(testAccDNSRecordConfig(testDomain(t), nameSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testAccDNSRecordExists(testClient(t), "vercel_dns_record.a_without_ttl", testTeam(t)), resource.TestCheckResourceAttr("vercel_dns_record.a_without_ttl", "domain", testDomain(t)), @@ -146,7 +146,7 @@ func TestAcc_DNSRecord(t *testing.T) { ), }, { - Config: testAccDNSRecordConfigUpdated(testDomain(t), nameSuffix, teamIDConfig(t)), + Config: cfg(testAccDNSRecordConfigUpdated(testDomain(t), nameSuffix)), Check: resource.ComposeAggregateTestCheckFunc( testAccDNSRecordExists(testClient(t), "vercel_dns_record.a_without_ttl", testTeam(t)), resource.TestCheckResourceAttr("vercel_dns_record.a_without_ttl", "domain", testDomain(t)), @@ -207,7 +207,7 @@ func TestAcc_DNSRecord(t *testing.T) { }) } -func testAccDNSRecordConfig(testDomain, nameSuffix, teamID string) string { +func testAccDNSRecordConfig(testDomain, nameSuffix string) string { return fmt.Sprintf(` resource "vercel_dns_record" "a_without_ttl" { domain = "%[1]s" @@ -215,7 +215,6 @@ resource "vercel_dns_record" "a_without_ttl" { type = "A" value = "127.0.0.1" comment = "a without ttl" - %[3]s } resource "vercel_dns_record" "a" { domain = "%[1]s" @@ -224,7 +223,6 @@ resource "vercel_dns_record" "a" { ttl = 120 value = "127.0.0.1" comment = "a" - %[3]s } resource "vercel_dns_record" "aaaa" { domain = "%[1]s" @@ -233,7 +231,6 @@ resource "vercel_dns_record" "aaaa" { ttl = 120 value = "::1" comment = "aaaa" - %[3]s } resource "vercel_dns_record" "alias" { domain = "%[1]s" @@ -242,7 +239,6 @@ resource "vercel_dns_record" "alias" { ttl = 120 value = "example.com." comment = "alias" - %[3]s } resource "vercel_dns_record" "caa" { domain = "%[1]s" @@ -251,7 +247,6 @@ resource "vercel_dns_record" "caa" { ttl = 120 value = "0 issue \"letsencrypt.org\"" comment = "caa" - %[3]s } resource "vercel_dns_record" "cname" { domain = "%[1]s" @@ -260,7 +255,6 @@ resource "vercel_dns_record" "cname" { ttl = 120 value = "example.com." comment = "cname" - %[3]s } resource "vercel_dns_record" "mx" { domain = "%[1]s" @@ -270,7 +264,6 @@ resource "vercel_dns_record" "mx" { mx_priority = 123 value = "example.com." comment = "mx" - %[3]s } resource "vercel_dns_record" "srv" { domain = "%[1]s" @@ -284,7 +277,6 @@ resource "vercel_dns_record" "srv" { target = "example.com." } comment = "srv" - %[3]s } resource "vercel_dns_record" "srv_no_target" { domain = "%[1]s" @@ -298,7 +290,6 @@ resource "vercel_dns_record" "srv_no_target" { target = "" } comment = "srv no target" - %[3]s } resource "vercel_dns_record" "txt" { domain = "%[1]s" @@ -307,7 +298,6 @@ resource "vercel_dns_record" "txt" { ttl = 120 value = "terraform testing" comment = "txt" - %[3]s } resource "vercel_dns_record" "ns" { domain = "%[1]s" @@ -316,19 +306,17 @@ resource "vercel_dns_record" "ns" { ttl = 120 value = "example.com." comment = "ns" - %[3]s } -`, testDomain, nameSuffix, teamID) +`, testDomain, nameSuffix) } -func testAccDNSRecordConfigUpdated(testDomain, nameSuffix, teamID string) string { +func testAccDNSRecordConfigUpdated(testDomain, nameSuffix string) string { return fmt.Sprintf(` resource "vercel_dns_record" "a_without_ttl" { domain = "%[1]s" name = "test-acc-%[2]s-a-without-ttl-record" type = "A" value = "127.0.0.1" - %[3]s } resource "vercel_dns_record" "a" { domain = "%[1]s" @@ -336,7 +324,6 @@ resource "vercel_dns_record" "a" { type = "A" ttl = 60 value = "192.168.0.1" - %[3]s } resource "vercel_dns_record" "aaaa" { domain = "%[1]s" @@ -344,7 +331,6 @@ resource "vercel_dns_record" "aaaa" { type = "AAAA" ttl = 60 value = "::0" - %[3]s } resource "vercel_dns_record" "alias" { domain = "%[1]s" @@ -352,7 +338,6 @@ resource "vercel_dns_record" "alias" { type = "ALIAS" ttl = 60 value = "example2.com." - %[3]s } resource "vercel_dns_record" "caa" { domain = "%[1]s" @@ -360,7 +345,6 @@ resource "vercel_dns_record" "caa" { type = "CAA" ttl = 60 value = "1 issue \"letsencrypt.org\"" - %[3]s } resource "vercel_dns_record" "cname" { domain = "%[1]s" @@ -368,7 +352,6 @@ resource "vercel_dns_record" "cname" { type = "CNAME" ttl = 60 value = "example2.com." - %[3]s } resource "vercel_dns_record" "mx" { domain = "%[1]s" @@ -377,7 +360,6 @@ resource "vercel_dns_record" "mx" { ttl = 60 mx_priority = 333 value = "example2.com." - %[3]s } resource "vercel_dns_record" "srv" { domain = "%[1]s" @@ -390,7 +372,6 @@ resource "vercel_dns_record" "srv" { priority = 127 target = "example2.com." } - %[3]s } resource "vercel_dns_record" "txt" { domain = "%[1]s" @@ -398,7 +379,6 @@ resource "vercel_dns_record" "txt" { type = "TXT" ttl = 60 value = "terraform testing two" - %[3]s } resource "vercel_dns_record" "ns" { domain = "%[1]s" @@ -406,7 +386,6 @@ resource "vercel_dns_record" "ns" { type = "NS" ttl = 60 value = "example2.com." - %[3]s } -`, testDomain, nameSuffix, teamID) +`, testDomain, nameSuffix) } diff --git a/vercel/resource_edge_config_item_test.go b/vercel/resource_edge_config_item_test.go index 4dd22f46..933d1da3 100644 --- a/vercel/resource_edge_config_item_test.go +++ b/vercel/resource_edge_config_item_test.go @@ -60,7 +60,7 @@ func TestAcc_EdgeConfigItemResource(t *testing.T) { CheckDestroy: testCheckEdgeConfigDeleted(testClient(t), "vercel_edge_config.test_item", testTeam(t)), Steps: []resource.TestStep{ { - Config: testAccResourceEdgeConfigItem(name, teamIDConfig(t)), + Config: cfg(testAccResourceEdgeConfigItem(name)), Check: resource.ComposeAggregateTestCheckFunc( testCheckEdgeConfigExists(testClient(t), testTeam(t), "vercel_edge_config.test_item"), resource.TestCheckResourceAttr("vercel_edge_config_item.test", "key", "foobar"), @@ -73,7 +73,7 @@ func TestAcc_EdgeConfigItemResource(t *testing.T) { ImportStateIdFunc: getEdgeConfigItemImportID("vercel_edge_config_item.test"), }, { - Config: testAccResourceEdgeConfigItemDeleted(name, teamIDConfig(t)), + Config: cfg(testAccResourceEdgeConfigItemDeleted(name)), Check: resource.ComposeAggregateTestCheckFunc( testCheckEdgeConfigExists(testClient(t), testTeam(t), "vercel_edge_config.test_item"), testCheckEdgeConfigItemDeleted(testClient(t), "vercel_edge_config.test_item", "foobar", testTeam(t)), @@ -83,27 +83,24 @@ func TestAcc_EdgeConfigItemResource(t *testing.T) { }) } -func testAccResourceEdgeConfigItem(name, team string) string { +func testAccResourceEdgeConfigItem(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test_item" { name = "%[1]s" - %[2]s } resource "vercel_edge_config_item" "test" { edge_config_id = vercel_edge_config.test_item.id key = "foobar" value = "baz" - %[2]s } -`, name, team) +`, name) } -func testAccResourceEdgeConfigItemDeleted(name, team string) string { +func testAccResourceEdgeConfigItemDeleted(name string) string { return fmt.Sprintf(` resource "vercel_edge_config" "test_item" { name = "%[1]s" - %[2]s } -`, name, team) +`, name) } diff --git a/vercel/resource_edge_config_schema_test.go b/vercel/resource_edge_config_schema_test.go index 175bf420..eb252f60 100644 --- a/vercel/resource_edge_config_schema_test.go +++ b/vercel/resource_edge_config_schema_test.go @@ -61,7 +61,7 @@ func TestAcc_EdgeConfigSchemaResource(t *testing.T) { CheckDestroy: testCheckEdgeConfigSchemaDeleted(testClient(t), "vercel_edge_config_schema.test", testTeam(t)), Steps: []resource.TestStep{ { - Config: ` + Config: cfg(` resource "vercel_edge_config_schema" "test" { id = "shouldnt-matter" definition = < Date: Wed, 14 May 2025 17:13:11 +0100 Subject: [PATCH 6/6] Fix failing tests due to missing team ID and `cfg` usage --- vercel/resource_project_test.go | 16 ++++++++-------- vercel/resource_team_member_test.go | 27 +++++++++++++++------------ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/vercel/resource_project_test.go b/vercel/resource_project_test.go index 47c430f0..52e879de 100644 --- a/vercel/resource_project_test.go +++ b/vercel/resource_project_test.go @@ -139,7 +139,7 @@ func TestAcc_ProjectFluidCompute(t *testing.T) { Steps: []resource.TestStep{ { // check we get a sensible error if fluid + invalid CPU combination. - Config: fmt.Sprintf(` + Config: cfg(fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-fluid-%[1]s" resource_config = { @@ -147,12 +147,12 @@ func TestAcc_ProjectFluidCompute(t *testing.T) { function_default_cpu_type = "standard_legacy" } } - `, projectSuffix), + `, projectSuffix)), ExpectError: regexp.MustCompile(strings.ReplaceAll("\"standard_legacy\" is not a valid memory type for Fluid compute", " ", `\s*`)), }, { // check creating a project with Fluid - Config: fmt.Sprintf(` + Config: cfg(fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-fluid-%[1]s" @@ -160,7 +160,7 @@ func TestAcc_ProjectFluidCompute(t *testing.T) { fluid = true } } - `, projectSuffix), + `, projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("vercel_project.test", "name", fmt.Sprintf("test-acc-fluid-%s", projectSuffix)), resource.TestCheckResourceAttr("vercel_project.test", "resource_config.fluid", "true"), @@ -168,7 +168,7 @@ func TestAcc_ProjectFluidCompute(t *testing.T) { }, { // check updating Fluid on a project - Config: fmt.Sprintf(` + Config: cfg(fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-fluid-%[1]s" @@ -176,7 +176,7 @@ func TestAcc_ProjectFluidCompute(t *testing.T) { fluid = false } } - `, projectSuffix), + `, projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("vercel_project.test", "name", fmt.Sprintf("test-acc-fluid-%s", projectSuffix)), resource.TestCheckResourceAttr("vercel_project.test", "resource_config.fluid", "false"), @@ -184,11 +184,11 @@ func TestAcc_ProjectFluidCompute(t *testing.T) { }, { // check new projects without fluid specified shows fluid as false - Config: fmt.Sprintf(` + Config: cfg(fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-fluid-disabled-%[1]s" } - `, projectSuffix), + `, projectSuffix)), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("vercel_project.test", "name", fmt.Sprintf("test-acc-fluid-disabled-%s", projectSuffix)), resource.TestCheckResourceAttr("vercel_project.test", "resource_config.fluid", "false"), diff --git a/vercel/resource_team_member_test.go b/vercel/resource_team_member_test.go index 6032b85c..72019676 100644 --- a/vercel/resource_team_member_test.go +++ b/vercel/resource_team_member_test.go @@ -27,7 +27,7 @@ func TestAcc_TeamMemberResource(t *testing.T) { Steps: []resource.TestStep{ // Create and Read testing { - Config: cfg(testAccTeamMemberResourceConfig("MEMBER", testAdditionalUser(t))), + Config: cfg(testAccTeamMemberResourceConfig("MEMBER", testAdditionalUser(t), testTeam(t))), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("vercel_team_member.test", "team_id"), resource.TestCheckResourceAttrSet("vercel_team_member.test", "user_id"), @@ -44,7 +44,7 @@ func TestAcc_TeamMemberResource(t *testing.T) { }, // Update testing { - Config: cfg(testAccTeamMemberResourceConfig("VIEWER", testAdditionalUser(t))), + Config: cfg(testAccTeamMemberResourceConfig("VIEWER", testAdditionalUser(t), testTeam(t))), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("vercel_team_member.test", "team_id"), resource.TestCheckResourceAttrSet("vercel_team_member.test", "user_id"), @@ -53,7 +53,7 @@ func TestAcc_TeamMemberResource(t *testing.T) { }, // Test with projects { - Config: cfg(testAccTeamMemberResourceConfigWithProjects(randomSuffix, testAdditionalUser(t))), + Config: cfg(testAccTeamMemberResourceConfigWithProjects(randomSuffix, testAdditionalUser(t), testTeam(t))), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("vercel_team_member.test", "team_id"), resource.TestCheckResourceAttrSet("vercel_team_member.test", "user_id"), @@ -63,7 +63,7 @@ func TestAcc_TeamMemberResource(t *testing.T) { }, // Test with access groups { - Config: cfg(testAccTeamMemberResourceConfigWithAccessGroups(randomSuffix, testAdditionalUser(t))), + Config: cfg(testAccTeamMemberResourceConfigWithAccessGroups(randomSuffix, testAdditionalUser(t), testTeam(t))), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("vercel_team_member.test", "team_id"), resource.TestCheckResourceAttrSet("vercel_team_member.test", "user_id"), @@ -75,16 +75,17 @@ func TestAcc_TeamMemberResource(t *testing.T) { }) } -func testAccTeamMemberResourceConfig(role string, user string) string { +func testAccTeamMemberResourceConfig(role, user, teamID string) string { return fmt.Sprintf(` resource "vercel_team_member" "test" { - user_id = "%s" - role = "%s" + user_id = "%[1]s" + team_id = "%[2]s" + role = "%[3]s" } -`, user, role) +`, user, teamID, role) } -func testAccTeamMemberResourceConfigWithProjects(randomSuffix string, user string) string { +func testAccTeamMemberResourceConfigWithProjects(randomSuffix, user, teamID string) string { return fmt.Sprintf(` resource "vercel_project" "test" { name = "test-acc-example-project-%[1]s" @@ -92,16 +93,17 @@ resource "vercel_project" "test" { resource "vercel_team_member" "test" { user_id = "%[2]s" + team_id = "%[3]s" role = "CONTRIBUTOR" projects = [{ project_id = vercel_project.test.id role = "PROJECT_VIEWER" }] } -`, randomSuffix, user) +`, randomSuffix, user, teamID) } -func testAccTeamMemberResourceConfigWithAccessGroups(randomSuffix string, user string) string { +func testAccTeamMemberResourceConfigWithAccessGroups(randomSuffix, user, teamID string) string { return fmt.Sprintf(` resource "vercel_access_group" "test" { name = "test-acc-access-group-%[2]s" @@ -109,9 +111,10 @@ resource "vercel_access_group" "test" { resource "vercel_team_member" "test" { user_id = "%[1]s" + team_id = "%[3]s" role = "CONTRIBUTOR" access_groups = [vercel_access_group.test.id] } -`, user, randomSuffix) +`, user, randomSuffix, teamID) }