github.com/atsaki/terraform@v0.4.3-0.20150919165407-25bba5967654/builtin/providers/google/resource_storage_bucket_object_test.go (about) 1 package google 2 3 import ( 4 "fmt" 5 "testing" 6 "io/ioutil" 7 "crypto/md5" 8 "encoding/base64" 9 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 13 "google.golang.org/api/storage/v1" 14 ) 15 16 var tf, err = ioutil.TempFile("", "tf-gce-test") 17 var bucketName = "tf-gce-bucket-test" 18 var objectName = "tf-gce-test" 19 20 func TestAccGoogleStorageObject_basic(t *testing.T) { 21 data := []byte("data data data") 22 h := md5.New() 23 h.Write(data) 24 data_md5 := base64.StdEncoding.EncodeToString(h.Sum(nil)) 25 26 ioutil.WriteFile(tf.Name(), data, 0644) 27 resource.Test(t, resource.TestCase{ 28 PreCheck: func() { 29 if err != nil { 30 panic(err) 31 } 32 testAccPreCheck(t) 33 }, 34 Providers: testAccProviders, 35 CheckDestroy: testAccGoogleStorageObjectDestroy, 36 Steps: []resource.TestStep{ 37 resource.TestStep{ 38 Config: testGoogleStorageBucketsObjectBasic, 39 Check: testAccCheckGoogleStorageObject(bucketName, objectName, data_md5), 40 }, 41 }, 42 }) 43 } 44 45 func testAccCheckGoogleStorageObject(bucket, object, md5 string) resource.TestCheckFunc { 46 return func(s *terraform.State) error { 47 config := testAccProvider.Meta().(*Config) 48 49 objectsService := storage.NewObjectsService(config.clientStorage) 50 51 52 getCall := objectsService.Get(bucket, object) 53 res, err := getCall.Do() 54 55 if err != nil { 56 return fmt.Errorf("Error retrieving contents of object %s: %s", object, err) 57 } 58 59 if (md5 != res.Md5Hash) { 60 return fmt.Errorf("Error contents of %s garbled, md5 hashes don't match (%s, %s)", object, md5, res.Md5Hash) 61 } 62 63 return nil 64 } 65 } 66 67 func testAccGoogleStorageObjectDestroy(s *terraform.State) error { 68 config := testAccProvider.Meta().(*Config) 69 70 for _, rs := range s.RootModule().Resources { 71 if rs.Type != "google_storage_bucket_object" { 72 continue 73 } 74 75 bucket := rs.Primary.Attributes["bucket"] 76 name := rs.Primary.Attributes["name"] 77 78 objectsService := storage.NewObjectsService(config.clientStorage) 79 80 getCall := objectsService.Get(bucket, name) 81 _, err := getCall.Do() 82 83 if err == nil { 84 return fmt.Errorf("Object %s still exists", name) 85 } 86 } 87 88 return nil 89 } 90 91 var testGoogleStorageBucketsObjectBasic = fmt.Sprintf(` 92 resource "google_storage_bucket" "bucket" { 93 name = "%s" 94 } 95 96 resource "google_storage_bucket_object" "object" { 97 name = "%s" 98 bucket = "${google_storage_bucket.bucket.name}" 99 source = "%s" 100 predefined_acl = "projectPrivate" 101 } 102 `, bucketName, objectName, tf.Name())