mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-28 22:16:04 +00:00
Refactor tests to defer to common method when looking up project (#410)
This commit is contained in:
parent
9ede711538
commit
204201a5be
@ -36,7 +36,7 @@ func TestAccSpannerDatabase_importProjectInstanceDatabase(t *testing.T) {
|
|||||||
resourceName := "google_spanner_database.basic"
|
resourceName := "google_spanner_database.basic"
|
||||||
instanceName := fmt.Sprintf("span-iname-%s", acctest.RandString(10))
|
instanceName := fmt.Sprintf("span-iname-%s", acctest.RandString(10))
|
||||||
dbName := fmt.Sprintf("span-dbname-%s", acctest.RandString(10))
|
dbName := fmt.Sprintf("span-dbname-%s", acctest.RandString(10))
|
||||||
var projectId = multiEnvSearch([]string{"GOOGLE_PROJECT", "GCLOUD_PROJECT", "CLOUDSDK_CORE_PROJECT"})
|
projectId := getTestProjectFromEnv()
|
||||||
|
|
||||||
resource.Test(t, resource.TestCase{
|
resource.Test(t, resource.TestCase{
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
@ -34,7 +34,7 @@ func TestAccSpannerInstance_importInstance(t *testing.T) {
|
|||||||
func TestAccSpannerInstance_importProjectInstance(t *testing.T) {
|
func TestAccSpannerInstance_importProjectInstance(t *testing.T) {
|
||||||
resourceName := "google_spanner_instance.basic"
|
resourceName := "google_spanner_instance.basic"
|
||||||
instanceName := fmt.Sprintf("span-itest-%s", acctest.RandString(10))
|
instanceName := fmt.Sprintf("span-itest-%s", acctest.RandString(10))
|
||||||
var projectId = multiEnvSearch([]string{"GOOGLE_PROJECT", "GCLOUD_PROJECT", "CLOUDSDK_CORE_PROJECT"})
|
projectId := getTestProjectFromEnv()
|
||||||
if projectId == "" {
|
if projectId == "" {
|
||||||
t.Skip("Unable to locate projectId via environment variables ... skipping ")
|
t.Skip("Unable to locate projectId via environment variables ... skipping ")
|
||||||
return
|
return
|
||||||
|
@ -14,6 +14,25 @@ import (
|
|||||||
var testAccProviders map[string]terraform.ResourceProvider
|
var testAccProviders map[string]terraform.ResourceProvider
|
||||||
var testAccProvider *schema.Provider
|
var testAccProvider *schema.Provider
|
||||||
|
|
||||||
|
var credsEnvVars = []string{
|
||||||
|
"GOOGLE_CREDENTIALS",
|
||||||
|
"GOOGLE_CLOUD_KEYFILE_JSON",
|
||||||
|
"GCLOUD_KEYFILE_JSON",
|
||||||
|
"GOOGLE_USE_DEFAULT_CREDENTIALS",
|
||||||
|
}
|
||||||
|
|
||||||
|
var projectEnvVars = []string{
|
||||||
|
"GOOGLE_PROJECT",
|
||||||
|
"GCLOUD_PROJECT",
|
||||||
|
"CLOUDSDK_CORE_PROJECT",
|
||||||
|
}
|
||||||
|
|
||||||
|
var regionEnvVars = []string{
|
||||||
|
"GOOGLE_REGION",
|
||||||
|
"GCLOUD_REGION",
|
||||||
|
"CLOUDSDK_COMPUTE_REGION",
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
testAccProvider = Provider().(*schema.Provider)
|
testAccProvider = Provider().(*schema.Provider)
|
||||||
testAccProviders = map[string]terraform.ResourceProvider{
|
testAccProviders = map[string]terraform.ResourceProvider{
|
||||||
@ -40,41 +59,16 @@ func testAccPreCheck(t *testing.T) {
|
|||||||
os.Setenv("GOOGLE_CREDENTIALS", string(creds))
|
os.Setenv("GOOGLE_CREDENTIALS", string(creds))
|
||||||
}
|
}
|
||||||
|
|
||||||
multiEnvSearch := func(ks []string) string {
|
if v := multiEnvSearch(credsEnvVars); v == "" {
|
||||||
for _, k := range ks {
|
t.Fatalf("One of %s must be set for acceptance tests", strings.Join(credsEnvVars, ", "))
|
||||||
if v := os.Getenv(k); v != "" {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
creds := []string{
|
if v := multiEnvSearch(projectEnvVars); v == "" {
|
||||||
"GOOGLE_CREDENTIALS",
|
t.Fatalf("One of %s must be set for acceptance tests", strings.Join(projectEnvVars, ", "))
|
||||||
"GOOGLE_CLOUD_KEYFILE_JSON",
|
|
||||||
"GCLOUD_KEYFILE_JSON",
|
|
||||||
"GOOGLE_USE_DEFAULT_CREDENTIALS",
|
|
||||||
}
|
|
||||||
if v := multiEnvSearch(creds); v == "" {
|
|
||||||
t.Fatalf("One of %s must be set for acceptance tests", strings.Join(creds, ", "))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
projs := []string{
|
if v := multiEnvSearch(regionEnvVars); v != "us-central1" {
|
||||||
"GOOGLE_PROJECT",
|
t.Fatalf("One of %s must be set to us-central1 for acceptance tests", strings.Join(regionEnvVars, ", "))
|
||||||
"GCLOUD_PROJECT",
|
|
||||||
"CLOUDSDK_CORE_PROJECT",
|
|
||||||
}
|
|
||||||
if v := multiEnvSearch(projs); v == "" {
|
|
||||||
t.Fatalf("One of %s must be set for acceptance tests", strings.Join(projs, ", "))
|
|
||||||
}
|
|
||||||
|
|
||||||
regs := []string{
|
|
||||||
"GOOGLE_REGION",
|
|
||||||
"GCLOUD_REGION",
|
|
||||||
"CLOUDSDK_COMPUTE_REGION",
|
|
||||||
}
|
|
||||||
if v := multiEnvSearch(regs); v != "us-central1" {
|
|
||||||
t.Fatalf("One of %s must be set to us-central1 for acceptance tests", strings.Join(regs, ", "))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if v := os.Getenv("GOOGLE_XPN_HOST_PROJECT"); v == "" {
|
if v := os.Getenv("GOOGLE_XPN_HOST_PROJECT"); v == "" {
|
||||||
@ -111,3 +105,17 @@ func getTestProject(is *terraform.InstanceState, config *Config) (string, error)
|
|||||||
}
|
}
|
||||||
return "", fmt.Errorf("%q: required field is not set", "project")
|
return "", fmt.Errorf("%q: required field is not set", "project")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getTestProjectFromEnv returns the current configured project from environment variables.
|
||||||
|
func getTestProjectFromEnv() string {
|
||||||
|
return multiEnvSearch(projectEnvVars)
|
||||||
|
}
|
||||||
|
|
||||||
|
func multiEnvSearch(ks []string) string {
|
||||||
|
for _, k := range ks {
|
||||||
|
if v := os.Getenv(k); v != "" {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
@ -21,15 +21,6 @@ var (
|
|||||||
originalPolicy *cloudresourcemanager.Policy
|
originalPolicy *cloudresourcemanager.Policy
|
||||||
)
|
)
|
||||||
|
|
||||||
func multiEnvSearch(ks []string) string {
|
|
||||||
for _, k := range ks {
|
|
||||||
if v := os.Getenv(k); v != "" {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test that a Project resource can be created and an IAM policy
|
// Test that a Project resource can be created and an IAM policy
|
||||||
// associated
|
// associated
|
||||||
func TestAccGoogleProject_create(t *testing.T) {
|
func TestAccGoogleProject_create(t *testing.T) {
|
||||||
|
@ -9,14 +9,6 @@ import (
|
|||||||
"github.com/hashicorp/terraform/terraform"
|
"github.com/hashicorp/terraform/terraform"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
projectId = multiEnvSearch([]string{
|
|
||||||
"GOOGLE_PROJECT",
|
|
||||||
"GCLOUD_PROJECT",
|
|
||||||
"CLOUDSDK_CORE_PROJECT",
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
// Test that a service account resource can be created, updated, and destroyed
|
// Test that a service account resource can be created, updated, and destroyed
|
||||||
func TestAccGoogleServiceAccount_basic(t *testing.T) {
|
func TestAccGoogleServiceAccount_basic(t *testing.T) {
|
||||||
accountId := "a" + acctest.RandString(10)
|
accountId := "a" + acctest.RandString(10)
|
||||||
@ -55,7 +47,7 @@ func TestAccGoogleServiceAccount_createPolicy(t *testing.T) {
|
|||||||
Steps: []resource.TestStep{
|
Steps: []resource.TestStep{
|
||||||
// The first step creates a basic service account with an IAM policy
|
// The first step creates a basic service account with an IAM policy
|
||||||
resource.TestStep{
|
resource.TestStep{
|
||||||
Config: testAccGoogleServiceAccountPolicy(accountId, projectId),
|
Config: testAccGoogleServiceAccountPolicy(accountId, getTestProjectFromEnv()),
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckGoogleServiceAccountPolicyCount("google_service_account.acceptance", 1),
|
testAccCheckGoogleServiceAccountPolicyCount("google_service_account.acceptance", 1),
|
||||||
),
|
),
|
||||||
@ -69,7 +61,7 @@ func TestAccGoogleServiceAccount_createPolicy(t *testing.T) {
|
|||||||
},
|
},
|
||||||
// The final step re-applies the IAM policy
|
// The final step re-applies the IAM policy
|
||||||
resource.TestStep{
|
resource.TestStep{
|
||||||
Config: testAccGoogleServiceAccountPolicy(accountId, projectId),
|
Config: testAccGoogleServiceAccountPolicy(accountId, getTestProjectFromEnv()),
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckGoogleServiceAccountPolicyCount("google_service_account.acceptance", 1),
|
testAccCheckGoogleServiceAccountPolicyCount("google_service_account.acceptance", 1),
|
||||||
),
|
),
|
||||||
@ -147,5 +139,5 @@ data "google_iam_policy" "service_account" {
|
|||||||
}
|
}
|
||||||
}`
|
}`
|
||||||
|
|
||||||
return fmt.Sprintf(t, account, name, account, projectId)
|
return fmt.Sprintf(t, account, name, account, getTestProjectFromEnv())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user