github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/google/resource_compute_https_health_check_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 TestAccComputeHttpsHealthCheck_basic(t *testing.T) { 14 var healthCheck compute.HttpsHealthCheck 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckComputeHttpsHealthCheckDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccComputeHttpsHealthCheck_basic, 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckComputeHttpsHealthCheckExists( 25 "google_compute_https_health_check.foobar", &healthCheck), 26 testAccCheckComputeHttpsHealthCheckRequestPath( 27 "/health_check", &healthCheck), 28 testAccCheckComputeHttpsHealthCheckThresholds( 29 3, 3, &healthCheck), 30 ), 31 }, 32 }, 33 }) 34 } 35 36 func TestAccComputeHttpsHealthCheck_update(t *testing.T) { 37 var healthCheck compute.HttpsHealthCheck 38 39 resource.Test(t, resource.TestCase{ 40 PreCheck: func() { testAccPreCheck(t) }, 41 Providers: testAccProviders, 42 CheckDestroy: testAccCheckComputeHttpsHealthCheckDestroy, 43 Steps: []resource.TestStep{ 44 resource.TestStep{ 45 Config: testAccComputeHttpsHealthCheck_update1, 46 Check: resource.ComposeTestCheckFunc( 47 testAccCheckComputeHttpsHealthCheckExists( 48 "google_compute_https_health_check.foobar", &healthCheck), 49 testAccCheckComputeHttpsHealthCheckRequestPath( 50 "/not_default", &healthCheck), 51 testAccCheckComputeHttpsHealthCheckThresholds( 52 2, 2, &healthCheck), 53 ), 54 }, 55 resource.TestStep{ 56 Config: testAccComputeHttpsHealthCheck_update2, 57 Check: resource.ComposeTestCheckFunc( 58 testAccCheckComputeHttpsHealthCheckExists( 59 "google_compute_https_health_check.foobar", &healthCheck), 60 testAccCheckComputeHttpsHealthCheckRequestPath( 61 "/", &healthCheck), 62 testAccCheckComputeHttpsHealthCheckThresholds( 63 10, 10, &healthCheck), 64 ), 65 }, 66 }, 67 }) 68 } 69 70 func testAccCheckComputeHttpsHealthCheckDestroy(s *terraform.State) error { 71 config := testAccProvider.Meta().(*Config) 72 73 for _, rs := range s.RootModule().Resources { 74 if rs.Type != "google_compute_https_health_check" { 75 continue 76 } 77 78 _, err := config.clientCompute.HttpsHealthChecks.Get( 79 config.Project, rs.Primary.ID).Do() 80 if err == nil { 81 return fmt.Errorf("HttpsHealthCheck still exists") 82 } 83 } 84 85 return nil 86 } 87 88 func testAccCheckComputeHttpsHealthCheckExists(n string, healthCheck *compute.HttpsHealthCheck) resource.TestCheckFunc { 89 return func(s *terraform.State) error { 90 rs, ok := s.RootModule().Resources[n] 91 if !ok { 92 return fmt.Errorf("Not found: %s", n) 93 } 94 95 if rs.Primary.ID == "" { 96 return fmt.Errorf("No ID is set") 97 } 98 99 config := testAccProvider.Meta().(*Config) 100 101 found, err := config.clientCompute.HttpsHealthChecks.Get( 102 config.Project, rs.Primary.ID).Do() 103 if err != nil { 104 return err 105 } 106 107 if found.Name != rs.Primary.ID { 108 return fmt.Errorf("HttpsHealthCheck not found") 109 } 110 111 *healthCheck = *found 112 113 return nil 114 } 115 } 116 117 func testAccCheckComputeHttpsHealthCheckRequestPath(path string, healthCheck *compute.HttpsHealthCheck) resource.TestCheckFunc { 118 return func(s *terraform.State) error { 119 if healthCheck.RequestPath != path { 120 return fmt.Errorf("RequestPath doesn't match: expected %s, got %s", path, healthCheck.RequestPath) 121 } 122 123 return nil 124 } 125 } 126 127 func testAccCheckComputeHttpsHealthCheckThresholds(healthy, unhealthy int64, healthCheck *compute.HttpsHealthCheck) resource.TestCheckFunc { 128 return func(s *terraform.State) error { 129 if healthCheck.HealthyThreshold != healthy { 130 return fmt.Errorf("HealthyThreshold doesn't match: expected %d, got %d", healthy, healthCheck.HealthyThreshold) 131 } 132 133 if healthCheck.UnhealthyThreshold != unhealthy { 134 return fmt.Errorf("UnhealthyThreshold doesn't match: expected %d, got %d", unhealthy, healthCheck.UnhealthyThreshold) 135 } 136 137 return nil 138 } 139 } 140 141 var testAccComputeHttpsHealthCheck_basic = fmt.Sprintf(` 142 resource "google_compute_https_health_check" "foobar" { 143 check_interval_sec = 3 144 description = "Resource created for Terraform acceptance testing" 145 healthy_threshold = 3 146 host = "foobar" 147 name = "httpshealth-test-%s" 148 port = "80" 149 request_path = "/health_check" 150 timeout_sec = 2 151 unhealthy_threshold = 3 152 } 153 `, acctest.RandString(10)) 154 155 var testAccComputeHttpsHealthCheck_update1 = fmt.Sprintf(` 156 resource "google_compute_https_health_check" "foobar" { 157 name = "httpshealth-test-%s" 158 description = "Resource created for Terraform acceptance testing" 159 request_path = "/not_default" 160 } 161 `, acctest.RandString(10)) 162 163 /* Change description, restore request_path to default, and change 164 * thresholds from defaults */ 165 var testAccComputeHttpsHealthCheck_update2 = fmt.Sprintf(` 166 resource "google_compute_https_health_check" "foobar" { 167 name = "httpshealth-test-%s" 168 description = "Resource updated for Terraform acceptance testing" 169 healthy_threshold = 10 170 unhealthy_threshold = 10 171 } 172 `, acctest.RandString(10))