provider/google: enchance storage acctests to avoid collisions

Generate bucket names and object names per test instead of once at the
top level. Should help avoid failures like this one:

https://travis-ci.org/hashicorp/terraform/jobs/100254008

All storage tests checked on this commit:

```
TF_ACC=1 go test -v ./builtin/providers/google -run TestAccGoogleStorage
=== RUN   TestAccGoogleStorageBucketAcl_basic
--- PASS: TestAccGoogleStorageBucketAcl_basic (8.90s)
=== RUN   TestAccGoogleStorageBucketAcl_upgrade
--- PASS: TestAccGoogleStorageBucketAcl_upgrade (14.18s)
=== RUN   TestAccGoogleStorageBucketAcl_downgrade
--- PASS: TestAccGoogleStorageBucketAcl_downgrade (12.83s)
=== RUN   TestAccGoogleStorageBucketAcl_predefined
--- PASS: TestAccGoogleStorageBucketAcl_predefined (4.51s)
=== RUN   TestAccGoogleStorageObject_basic
--- PASS: TestAccGoogleStorageObject_basic (3.77s)
=== RUN   TestAccGoogleStorageObjectAcl_basic
--- PASS: TestAccGoogleStorageObjectAcl_basic (4.85s)
=== RUN   TestAccGoogleStorageObjectAcl_upgrade
--- PASS: TestAccGoogleStorageObjectAcl_upgrade (7.68s)
=== RUN   TestAccGoogleStorageObjectAcl_downgrade
--- PASS: TestAccGoogleStorageObjectAcl_downgrade (7.37s)
=== RUN   TestAccGoogleStorageObjectAcl_predefined
--- PASS: TestAccGoogleStorageObjectAcl_predefined (4.16s)
PASS
ok      github.com/hashicorp/terraform/builtin/providers/google 68.275s
```
This commit is contained in:
Paul Hinze 2016-01-05 09:06:32 -06:00
parent 5c6304ed57
commit e916bd1527
4 changed files with 178 additions and 125 deletions

View File

@ -4,6 +4,7 @@ import (
"fmt"
"testing"
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
@ -18,19 +19,22 @@ var roleEntityBasic3_owner = "OWNER:user-yetanotheremail@gmail.com"
var roleEntityBasic3_reader = "READER:user-yetanotheremail@gmail.com"
var testAclBucketName = fmt.Sprintf("%s-%d", "tf-test-acl-bucket", genRandInt())
func testAclBucketName() string {
return fmt.Sprintf("%s-%d", "tf-test-acl-bucket", acctest.RandInt())
}
func TestAccGoogleStorageBucketAcl_basic(t *testing.T) {
bucketName := testAclBucketName()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccGoogleStorageBucketAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsAclBasic1,
Config: testGoogleStorageBucketsAclBasic1(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic2),
),
},
},
@ -38,33 +42,34 @@ func TestAccGoogleStorageBucketAcl_basic(t *testing.T) {
}
func TestAccGoogleStorageBucketAcl_upgrade(t *testing.T) {
bucketName := testAclBucketName()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccGoogleStorageBucketAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsAclBasic1,
Config: testGoogleStorageBucketsAclBasic1(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic2),
),
},
resource.TestStep{
Config: testGoogleStorageBucketsAclBasic2,
Config: testGoogleStorageBucketsAclBasic2(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic3_owner),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic3_owner),
),
},
resource.TestStep{
Config: testGoogleStorageBucketsAclBasicDelete,
Config: testGoogleStorageBucketsAclBasicDelete(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageBucketAclDelete(testAclBucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAclDelete(testAclBucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAclDelete(testAclBucketName, roleEntityBasic3_owner),
testAccCheckGoogleStorageBucketAclDelete(bucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAclDelete(bucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAclDelete(bucketName, roleEntityBasic3_owner),
),
},
},
@ -72,33 +77,34 @@ func TestAccGoogleStorageBucketAcl_upgrade(t *testing.T) {
}
func TestAccGoogleStorageBucketAcl_downgrade(t *testing.T) {
bucketName := testAclBucketName()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccGoogleStorageBucketAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsAclBasic2,
Config: testGoogleStorageBucketsAclBasic2(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic3_owner),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic3_owner),
),
},
resource.TestStep{
Config: testGoogleStorageBucketsAclBasic3,
Config: testGoogleStorageBucketsAclBasic3(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(testAclBucketName, roleEntityBasic3_reader),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAcl(bucketName, roleEntityBasic3_reader),
),
},
resource.TestStep{
Config: testGoogleStorageBucketsAclBasicDelete,
Config: testGoogleStorageBucketsAclBasicDelete(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageBucketAclDelete(testAclBucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAclDelete(testAclBucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAclDelete(testAclBucketName, roleEntityBasic3_owner),
testAccCheckGoogleStorageBucketAclDelete(bucketName, roleEntityBasic1),
testAccCheckGoogleStorageBucketAclDelete(bucketName, roleEntityBasic2),
testAccCheckGoogleStorageBucketAclDelete(bucketName, roleEntityBasic3_owner),
),
},
},
@ -112,7 +118,7 @@ func TestAccGoogleStorageBucketAcl_predefined(t *testing.T) {
CheckDestroy: testAccGoogleStorageBucketAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsAclPredefined,
Config: testGoogleStorageBucketsAclPredefined(bucketName),
},
},
})
@ -172,7 +178,8 @@ func testAccGoogleStorageBucketAclDestroy(s *terraform.State) error {
return nil
}
var testGoogleStorageBucketsAclBasic1 = fmt.Sprintf(`
func testGoogleStorageBucketsAclBasic1(bucketName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -181,9 +188,11 @@ resource "google_storage_bucket_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = ["%s", "%s"]
}
`, testAclBucketName, roleEntityBasic1, roleEntityBasic2)
`, bucketName, roleEntityBasic1, roleEntityBasic2)
}
var testGoogleStorageBucketsAclBasic2 = fmt.Sprintf(`
func testGoogleStorageBucketsAclBasic2(bucketName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -192,9 +201,11 @@ resource "google_storage_bucket_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = ["%s", "%s"]
}
`, testAclBucketName, roleEntityBasic2, roleEntityBasic3_owner)
`, bucketName, roleEntityBasic2, roleEntityBasic3_owner)
}
var testGoogleStorageBucketsAclBasicDelete = fmt.Sprintf(`
func testGoogleStorageBucketsAclBasicDelete(bucketName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -203,9 +214,11 @@ resource "google_storage_bucket_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = []
}
`, testAclBucketName)
`, bucketName)
}
var testGoogleStorageBucketsAclBasic3 = fmt.Sprintf(`
func testGoogleStorageBucketsAclBasic3(bucketName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -214,9 +227,11 @@ resource "google_storage_bucket_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = ["%s", "%s"]
}
`, testAclBucketName, roleEntityBasic2, roleEntityBasic3_reader)
`, bucketName, roleEntityBasic2, roleEntityBasic3_reader)
}
var testGoogleStorageBucketsAclPredefined = fmt.Sprintf(`
func testGoogleStorageBucketsAclPredefined(bucketName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -226,4 +241,5 @@ resource "google_storage_bucket_acl" "acl" {
predefined_acl = "projectPrivate"
default_acl = "projectPrivate"
}
`, testAclBucketName)
`, bucketName)
}

View File

@ -5,6 +5,7 @@ import (
"fmt"
"testing"
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
@ -13,7 +14,7 @@ import (
)
func TestAccStorage_basic(t *testing.T) {
var bucketName string
bucketName := fmt.Sprintf("tf-test-acl-bucket-%d", acctest.RandInt())
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
@ -21,10 +22,10 @@ func TestAccStorage_basic(t *testing.T) {
CheckDestroy: testAccGoogleStorageDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsReaderDefaults,
Config: testGoogleStorageBucketsReaderDefaults(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckCloudStorageBucketExists(
"google_storage_bucket.bucket", &bucketName),
"google_storage_bucket.bucket", bucketName),
resource.TestCheckResourceAttr(
"google_storage_bucket.bucket", "location", "US"),
resource.TestCheckResourceAttr(
@ -36,7 +37,7 @@ func TestAccStorage_basic(t *testing.T) {
}
func TestAccStorageCustomAttributes(t *testing.T) {
var bucketName string
bucketName := fmt.Sprintf("tf-test-acl-bucket-%d", acctest.RandInt())
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
@ -44,10 +45,10 @@ func TestAccStorageCustomAttributes(t *testing.T) {
CheckDestroy: testAccGoogleStorageDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsReaderCustomAttributes,
Config: testGoogleStorageBucketsReaderCustomAttributes(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckCloudStorageBucketExists(
"google_storage_bucket.bucket", &bucketName),
"google_storage_bucket.bucket", bucketName),
resource.TestCheckResourceAttr(
"google_storage_bucket.bucket", "location", "EU"),
resource.TestCheckResourceAttr(
@ -59,7 +60,7 @@ func TestAccStorageCustomAttributes(t *testing.T) {
}
func TestAccStorageBucketUpdate(t *testing.T) {
var bucketName string
bucketName := fmt.Sprintf("tf-test-acl-bucket-%d", acctest.RandInt())
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
@ -67,10 +68,10 @@ func TestAccStorageBucketUpdate(t *testing.T) {
CheckDestroy: testAccGoogleStorageDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsReaderDefaults,
Config: testGoogleStorageBucketsReaderDefaults(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckCloudStorageBucketExists(
"google_storage_bucket.bucket", &bucketName),
"google_storage_bucket.bucket", bucketName),
resource.TestCheckResourceAttr(
"google_storage_bucket.bucket", "location", "US"),
resource.TestCheckResourceAttr(
@ -78,10 +79,10 @@ func TestAccStorageBucketUpdate(t *testing.T) {
),
},
resource.TestStep{
Config: testGoogleStorageBucketsReaderCustomAttributes,
Config: testGoogleStorageBucketsReaderCustomAttributes(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckCloudStorageBucketExists(
"google_storage_bucket.bucket", &bucketName),
"google_storage_bucket.bucket", bucketName),
resource.TestCheckResourceAttr(
"google_storage_bucket.bucket", "predefined_acl", "publicReadWrite"),
resource.TestCheckResourceAttr(
@ -95,7 +96,7 @@ func TestAccStorageBucketUpdate(t *testing.T) {
}
func TestAccStorageForceDestroy(t *testing.T) {
var bucketName string
bucketName := fmt.Sprintf("tf-test-acl-bucket-%d", acctest.RandInt())
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
@ -103,29 +104,29 @@ func TestAccStorageForceDestroy(t *testing.T) {
CheckDestroy: testAccGoogleStorageDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageBucketsReaderCustomAttributes,
Config: testGoogleStorageBucketsReaderCustomAttributes(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckCloudStorageBucketExists(
"google_storage_bucket.bucket", &bucketName),
"google_storage_bucket.bucket", bucketName),
),
},
resource.TestStep{
Config: testGoogleStorageBucketsReaderCustomAttributes,
Config: testGoogleStorageBucketsReaderCustomAttributes(bucketName),
Check: resource.ComposeTestCheckFunc(
testAccCheckCloudStorageBucketPutItem(&bucketName),
testAccCheckCloudStorageBucketPutItem(bucketName),
),
},
resource.TestStep{
Config: "",
Check: resource.ComposeTestCheckFunc(
testAccCheckCloudStorageBucketMissing(&bucketName),
testAccCheckCloudStorageBucketMissing(bucketName),
),
},
},
})
}
func testAccCheckCloudStorageBucketExists(n string, bucketName *string) resource.TestCheckFunc {
func testAccCheckCloudStorageBucketExists(n string, bucketName string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
@ -147,12 +148,14 @@ func testAccCheckCloudStorageBucketExists(n string, bucketName *string) resource
return fmt.Errorf("Bucket not found")
}
*bucketName = found.Name
if found.Name != bucketName {
return fmt.Errorf("expected name %s, got %s", bucketName, found.Name)
}
return nil
}
}
func testAccCheckCloudStorageBucketPutItem(bucketName *string) resource.TestCheckFunc {
func testAccCheckCloudStorageBucketPutItem(bucketName string) resource.TestCheckFunc {
return func(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
@ -161,7 +164,7 @@ func testAccCheckCloudStorageBucketPutItem(bucketName *string) resource.TestChec
object := &storage.Object{Name: "bucketDestroyTestFile"}
// This needs to use Media(io.Reader) call, otherwise it does not go to /upload API and fails
if res, err := config.clientStorage.Objects.Insert(*bucketName, object).Media(dataReader).Do(); err == nil {
if res, err := config.clientStorage.Objects.Insert(bucketName, object).Media(dataReader).Do(); err == nil {
fmt.Printf("Created object %v at location %v\n\n", res.Name, res.SelfLink)
} else {
return fmt.Errorf("Objects.Insert failed: %v", err)
@ -171,20 +174,20 @@ func testAccCheckCloudStorageBucketPutItem(bucketName *string) resource.TestChec
}
}
func testAccCheckCloudStorageBucketMissing(bucketName *string) resource.TestCheckFunc {
func testAccCheckCloudStorageBucketMissing(bucketName string) resource.TestCheckFunc {
return func(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
_, err := config.clientStorage.Buckets.Get(*bucketName).Do()
_, err := config.clientStorage.Buckets.Get(bucketName).Do()
if err == nil {
return fmt.Errorf("Found %s", *bucketName)
return fmt.Errorf("Found %s", bucketName)
}
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
return nil
} else {
return err
}
return err
}
}
@ -205,19 +208,21 @@ func testAccGoogleStorageDestroy(s *terraform.State) error {
return nil
}
var randInt = genRandInt()
var testGoogleStorageBucketsReaderDefaults = fmt.Sprintf(`
func testGoogleStorageBucketsReaderDefaults(bucketName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "tf-test-bucket-%d"
name = "%s"
}
`, bucketName)
}
`, randInt)
var testGoogleStorageBucketsReaderCustomAttributes = fmt.Sprintf(`
func testGoogleStorageBucketsReaderCustomAttributes(bucketName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "tf-test-bucket-%d"
name = "%s"
predefined_acl = "publicReadWrite"
location = "EU"
force_destroy = "true"
}
`, randInt)
`, bucketName)
}

View File

@ -14,10 +14,15 @@ import (
)
var tfObjectAcl, errObjectAcl = ioutil.TempFile("", "tf-gce-test")
var testAclObjectName = fmt.Sprintf("%s-%d", "tf-test-acl-object",
rand.New(rand.NewSource(time.Now().UnixNano())).Int())
func testAclObjectName() string {
return fmt.Sprintf("%s-%d", "tf-test-acl-object",
rand.New(rand.NewSource(time.Now().UnixNano())).Int())
}
func TestAccGoogleStorageObjectAcl_basic(t *testing.T) {
bucketName := testAclBucketName()
objectName := testAclObjectName()
objectData := []byte("data data data")
ioutil.WriteFile(tfObjectAcl.Name(), objectData, 0644)
resource.Test(t, resource.TestCase{
@ -31,12 +36,12 @@ func TestAccGoogleStorageObjectAcl_basic(t *testing.T) {
CheckDestroy: testAccGoogleStorageObjectAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageObjectsAclBasic1,
Config: testGoogleStorageObjectsAclBasic1(bucketName, objectName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic2),
),
},
},
@ -44,6 +49,8 @@ func TestAccGoogleStorageObjectAcl_basic(t *testing.T) {
}
func TestAccGoogleStorageObjectAcl_upgrade(t *testing.T) {
bucketName := testAclBucketName()
objectName := testAclObjectName()
objectData := []byte("data data data")
ioutil.WriteFile(tfObjectAcl.Name(), objectData, 0644)
resource.Test(t, resource.TestCase{
@ -57,34 +64,34 @@ func TestAccGoogleStorageObjectAcl_upgrade(t *testing.T) {
CheckDestroy: testAccGoogleStorageObjectAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageObjectsAclBasic1,
Config: testGoogleStorageObjectsAclBasic1(bucketName, objectName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic2),
),
},
resource.TestStep{
Config: testGoogleStorageObjectsAclBasic2,
Config: testGoogleStorageObjectsAclBasic2(bucketName, objectName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic3_owner),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic3_owner),
),
},
resource.TestStep{
Config: testGoogleStorageObjectsAclBasicDelete,
Config: testGoogleStorageObjectsAclBasicDelete(bucketName, objectName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageObjectAclDelete(testAclBucketName,
testAclObjectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAclDelete(testAclBucketName,
testAclObjectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAclDelete(testAclBucketName,
testAclObjectName, roleEntityBasic3_reader),
testAccCheckGoogleStorageObjectAclDelete(bucketName,
objectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAclDelete(bucketName,
objectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAclDelete(bucketName,
objectName, roleEntityBasic3_reader),
),
},
},
@ -92,6 +99,8 @@ func TestAccGoogleStorageObjectAcl_upgrade(t *testing.T) {
}
func TestAccGoogleStorageObjectAcl_downgrade(t *testing.T) {
bucketName := testAclBucketName()
objectName := testAclObjectName()
objectData := []byte("data data data")
ioutil.WriteFile(tfObjectAcl.Name(), objectData, 0644)
resource.Test(t, resource.TestCase{
@ -105,34 +114,34 @@ func TestAccGoogleStorageObjectAcl_downgrade(t *testing.T) {
CheckDestroy: testAccGoogleStorageObjectAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageObjectsAclBasic2,
Config: testGoogleStorageObjectsAclBasic2(bucketName, objectName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic3_owner),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic3_owner),
),
},
resource.TestStep{
Config: testGoogleStorageObjectsAclBasic3,
Config: testGoogleStorageObjectsAclBasic3(bucketName, objectName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(testAclBucketName,
testAclObjectName, roleEntityBasic3_reader),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAcl(bucketName,
objectName, roleEntityBasic3_reader),
),
},
resource.TestStep{
Config: testGoogleStorageObjectsAclBasicDelete,
Config: testGoogleStorageObjectsAclBasicDelete(bucketName, objectName),
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleStorageObjectAclDelete(testAclBucketName,
testAclObjectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAclDelete(testAclBucketName,
testAclObjectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAclDelete(testAclBucketName,
testAclObjectName, roleEntityBasic3_reader),
testAccCheckGoogleStorageObjectAclDelete(bucketName,
objectName, roleEntityBasic1),
testAccCheckGoogleStorageObjectAclDelete(bucketName,
objectName, roleEntityBasic2),
testAccCheckGoogleStorageObjectAclDelete(bucketName,
objectName, roleEntityBasic3_reader),
),
},
},
@ -140,6 +149,8 @@ func TestAccGoogleStorageObjectAcl_downgrade(t *testing.T) {
}
func TestAccGoogleStorageObjectAcl_predefined(t *testing.T) {
bucketName := testAclBucketName()
objectName := testAclObjectName()
objectData := []byte("data data data")
ioutil.WriteFile(tfObjectAcl.Name(), objectData, 0644)
resource.Test(t, resource.TestCase{
@ -153,7 +164,7 @@ func TestAccGoogleStorageObjectAcl_predefined(t *testing.T) {
CheckDestroy: testAccGoogleStorageObjectAclDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testGoogleStorageObjectsAclPredefined,
Config: testGoogleStorageObjectsAclPredefined(bucketName, objectName),
},
},
})
@ -216,7 +227,8 @@ func testAccGoogleStorageObjectAclDestroy(s *terraform.State) error {
return nil
}
var testGoogleStorageObjectsAclBasicDelete = fmt.Sprintf(`
func testGoogleStorageObjectsAclBasicDelete(bucketName string, objectName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -232,9 +244,11 @@ resource "google_storage_object_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = []
}
`, testAclBucketName, testAclObjectName, tfObjectAcl.Name())
`, bucketName, objectName, tfObjectAcl.Name())
}
var testGoogleStorageObjectsAclBasic1 = fmt.Sprintf(`
func testGoogleStorageObjectsAclBasic1(bucketName string, objectName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -250,10 +264,12 @@ resource "google_storage_object_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = ["%s", "%s"]
}
`, testAclBucketName, testAclObjectName, tfObjectAcl.Name(),
roleEntityBasic1, roleEntityBasic2)
`, bucketName, objectName, tfObjectAcl.Name(),
roleEntityBasic1, roleEntityBasic2)
}
var testGoogleStorageObjectsAclBasic2 = fmt.Sprintf(`
func testGoogleStorageObjectsAclBasic2(bucketName string, objectName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -269,10 +285,12 @@ resource "google_storage_object_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = ["%s", "%s"]
}
`, testAclBucketName, testAclObjectName, tfObjectAcl.Name(),
roleEntityBasic2, roleEntityBasic3_owner)
`, bucketName, objectName, tfObjectAcl.Name(),
roleEntityBasic2, roleEntityBasic3_owner)
}
var testGoogleStorageObjectsAclBasic3 = fmt.Sprintf(`
func testGoogleStorageObjectsAclBasic3(bucketName string, objectName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -288,10 +306,12 @@ resource "google_storage_object_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
role_entity = ["%s", "%s"]
}
`, testAclBucketName, testAclObjectName, tfObjectAcl.Name(),
roleEntityBasic2, roleEntityBasic3_reader)
`, bucketName, objectName, tfObjectAcl.Name(),
roleEntityBasic2, roleEntityBasic3_reader)
}
var testGoogleStorageObjectsAclPredefined = fmt.Sprintf(`
func testGoogleStorageObjectsAclPredefined(bucketName string, objectName string) string {
return fmt.Sprintf(`
resource "google_storage_bucket" "bucket" {
name = "%s"
}
@ -307,4 +327,5 @@ resource "google_storage_object_acl" "acl" {
bucket = "${google_storage_bucket.bucket.name}"
predefined_acl = "projectPrivate"
}
`, testAclBucketName, testAclObjectName, tfObjectAcl.Name())
`, bucketName, objectName, tfObjectAcl.Name())
}

View File

@ -8,6 +8,12 @@ import (
// Helpers for generating random tidbits for use in identifiers to prevent
// collisions in acceptance tests.
// RandInt generates a random integer
func RandInt() int {
reseed()
return rand.New(rand.NewSource(time.Now().UnixNano())).Int()
}
// RandString generates a random alphanumeric string of the length specified
func RandString(strlen int) string {
return RandStringFromCharSet(strlen, CharSetAlphaNum)
@ -16,7 +22,7 @@ func RandString(strlen int) string {
// RandStringFromCharSet generates a random string by selecting characters from
// the charset provided
func RandStringFromCharSet(strlen int, charSet string) string {
rand.Seed(time.Now().UTC().UnixNano())
reseed()
result := make([]byte, strlen)
for i := 0; i < strlen; i++ {
result[i] = charSet[rand.Intn(len(charSet))]
@ -24,6 +30,11 @@ func RandStringFromCharSet(strlen int, charSet string) string {
return string(result)
}
// Seeds random with current timestamp
func reseed() {
rand.Seed(time.Now().UTC().UnixNano())
}
const (
// CharSetAlphaNum is the alphanumeric character set for use with
// RandStringFromCharSet