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  }