github.com/nathanielks/terraform@v0.6.1-0.20170509030759-13e1a62319dc/builtin/providers/google/resource_compute_backend_bucket_test.go (about) 1 package google 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/acctest" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 "google.golang.org/api/compute/v1" 11 ) 12 13 func TestAccComputeBackendBucket_basic(t *testing.T) { 14 backendName := fmt.Sprintf("tf-test-%s", acctest.RandString(10)) 15 storageName := fmt.Sprintf("tf-test-%s", acctest.RandString(10)) 16 var svc compute.BackendBucket 17 18 resource.Test(t, resource.TestCase{ 19 PreCheck: func() { testAccPreCheck(t) }, 20 Providers: testAccProviders, 21 CheckDestroy: testAccCheckComputeBackendBucketDestroy, 22 Steps: []resource.TestStep{ 23 resource.TestStep{ 24 Config: testAccComputeBackendBucket_basic(backendName, storageName), 25 Check: resource.ComposeTestCheckFunc( 26 testAccCheckComputeBackendBucketExists( 27 "google_compute_backend_bucket.foobar", &svc), 28 ), 29 }, 30 }, 31 }) 32 33 if svc.BucketName != storageName { 34 t.Errorf("Expected BucketName to be %q, got %q", storageName, svc.BucketName) 35 } 36 } 37 38 func TestAccComputeBackendBucket_basicModified(t *testing.T) { 39 backendName := fmt.Sprintf("tf-test-%s", acctest.RandString(10)) 40 storageName := fmt.Sprintf("tf-test-%s", acctest.RandString(10)) 41 secondStorageName := fmt.Sprintf("tf-test-%s", acctest.RandString(10)) 42 var svc compute.BackendBucket 43 44 resource.Test(t, resource.TestCase{ 45 PreCheck: func() { testAccPreCheck(t) }, 46 Providers: testAccProviders, 47 CheckDestroy: testAccCheckComputeBackendBucketDestroy, 48 Steps: []resource.TestStep{ 49 resource.TestStep{ 50 Config: testAccComputeBackendBucket_basic(backendName, storageName), 51 Check: resource.ComposeTestCheckFunc( 52 testAccCheckComputeBackendBucketExists( 53 "google_compute_backend_bucket.foobar", &svc), 54 ), 55 }, 56 resource.TestStep{ 57 Config: testAccComputeBackendBucket_basicModified( 58 backendName, storageName, secondStorageName), 59 Check: resource.ComposeTestCheckFunc( 60 testAccCheckComputeBackendBucketExists( 61 "google_compute_backend_bucket.foobar", &svc), 62 ), 63 }, 64 }, 65 }) 66 67 if svc.BucketName != secondStorageName { 68 t.Errorf("Expected BucketName to be %q, got %q", secondStorageName, svc.BucketName) 69 } 70 } 71 72 func testAccCheckComputeBackendBucketDestroy(s *terraform.State) error { 73 config := testAccProvider.Meta().(*Config) 74 75 for _, rs := range s.RootModule().Resources { 76 if rs.Type != "google_compute_backend_bucket" { 77 continue 78 } 79 80 _, err := config.clientCompute.BackendBuckets.Get( 81 config.Project, rs.Primary.ID).Do() 82 if err == nil { 83 return fmt.Errorf("Backend bucket %s still exists", rs.Primary.ID) 84 } 85 } 86 87 return nil 88 } 89 90 func testAccCheckComputeBackendBucketExists(n string, svc *compute.BackendBucket) resource.TestCheckFunc { 91 return func(s *terraform.State) error { 92 rs, ok := s.RootModule().Resources[n] 93 if !ok { 94 return fmt.Errorf("Not found: %s", n) 95 } 96 97 if rs.Primary.ID == "" { 98 return fmt.Errorf("No ID is set") 99 } 100 101 config := testAccProvider.Meta().(*Config) 102 103 found, err := config.clientCompute.BackendBuckets.Get( 104 config.Project, rs.Primary.ID).Do() 105 if err != nil { 106 return err 107 } 108 109 if found.Name != rs.Primary.ID { 110 return fmt.Errorf("Backend bucket %s not found", rs.Primary.ID) 111 } 112 113 *svc = *found 114 115 return nil 116 } 117 } 118 119 func TestAccComputeBackendBucket_withCdnEnabled(t *testing.T) { 120 backendName := fmt.Sprintf("tf-test-%s", acctest.RandString(10)) 121 storageName := fmt.Sprintf("tf-test-%s", acctest.RandString(10)) 122 var svc compute.BackendBucket 123 124 resource.Test(t, resource.TestCase{ 125 PreCheck: func() { testAccPreCheck(t) }, 126 Providers: testAccProviders, 127 CheckDestroy: testAccCheckComputeBackendBucketDestroy, 128 Steps: []resource.TestStep{ 129 resource.TestStep{ 130 Config: testAccComputeBackendBucket_withCdnEnabled( 131 backendName, storageName), 132 Check: resource.ComposeTestCheckFunc( 133 testAccCheckComputeBackendBucketExists( 134 "google_compute_backend_bucket.foobar", &svc), 135 ), 136 }, 137 }, 138 }) 139 140 if svc.EnableCdn != true { 141 t.Errorf("Expected EnableCdn == true, got %t", svc.EnableCdn) 142 } 143 } 144 145 func testAccComputeBackendBucket_basic(backendName, storageName string) string { 146 return fmt.Sprintf(` 147 resource "google_compute_backend_bucket" "foobar" { 148 name = "%s" 149 bucket_name = "${google_storage_bucket.bucket_one.name}" 150 } 151 152 resource "google_storage_bucket" "bucket_one" { 153 name = "%s" 154 location = "EU" 155 } 156 `, backendName, storageName) 157 } 158 159 func testAccComputeBackendBucket_basicModified(backendName, bucketOne, bucketTwo string) string { 160 return fmt.Sprintf(` 161 resource "google_compute_backend_bucket" "foobar" { 162 name = "%s" 163 bucket_name = "${google_storage_bucket.bucket_two.name}" 164 } 165 166 resource "google_storage_bucket" "bucket_one" { 167 name = "%s" 168 location = "EU" 169 } 170 171 resource "google_storage_bucket" "bucket_two" { 172 name = "%s" 173 location = "EU" 174 } 175 `, backendName, bucketOne, bucketTwo) 176 } 177 178 func testAccComputeBackendBucket_withCdnEnabled(backendName, storageName string) string { 179 return fmt.Sprintf(` 180 resource "google_compute_backend_bucket" "foobar" { 181 name = "%s" 182 bucket_name = "${google_storage_bucket.bucket.name}" 183 enable_cdn = true 184 } 185 186 resource "google_storage_bucket" "bucket" { 187 name = "%s" 188 location = "EU" 189 } 190 `, backendName, storageName) 191 }