mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
In order to fix the failing test in the preceding commit when optional params are changed from their default "computed" values. These weren't working well with `HttpHealthCheck.Patch()` because it was attempting to set all unspecified params to Go's type defaults (eg. 0 for int64) which the API rejected. Changing the call to `HttpHealthCheck.Update()` seemed to fix this but it still didn't allow you to reset a param back to it's default by no longer specifying it. Settings defaults like this, which match the Terraform docs, seems like the best all round solution. Includes two additional tests for the acceptance tests which verify the params are really getting set correctly.
172 lines
4.8 KiB
Go
172 lines
4.8 KiB
Go
package google
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform/helper/resource"
|
|
"github.com/hashicorp/terraform/terraform"
|
|
"google.golang.org/api/compute/v1"
|
|
)
|
|
|
|
func TestAccComputeHttpHealthCheck_basic(t *testing.T) {
|
|
var healthCheck compute.HttpHealthCheck
|
|
|
|
resource.Test(t, resource.TestCase{
|
|
PreCheck: func() { testAccPreCheck(t) },
|
|
Providers: testAccProviders,
|
|
CheckDestroy: testAccCheckComputeHttpHealthCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
resource.TestStep{
|
|
Config: testAccComputeHttpHealthCheck_basic,
|
|
Check: resource.ComposeTestCheckFunc(
|
|
testAccCheckComputeHttpHealthCheckExists(
|
|
"google_compute_http_health_check.foobar", &healthCheck),
|
|
testAccCheckComputeHttpHealthCheckRequestPath(
|
|
"/health_check", &healthCheck),
|
|
testAccCheckComputeHttpHealthCheckThresholds(
|
|
3, 3, &healthCheck),
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccComputeHttpHealthCheck_update(t *testing.T) {
|
|
var healthCheck compute.HttpHealthCheck
|
|
|
|
resource.Test(t, resource.TestCase{
|
|
PreCheck: func() { testAccPreCheck(t) },
|
|
Providers: testAccProviders,
|
|
CheckDestroy: testAccCheckComputeHttpHealthCheckDestroy,
|
|
Steps: []resource.TestStep{
|
|
resource.TestStep{
|
|
Config: testAccComputeHttpHealthCheck_update1,
|
|
Check: resource.ComposeTestCheckFunc(
|
|
testAccCheckComputeHttpHealthCheckExists(
|
|
"google_compute_http_health_check.foobar", &healthCheck),
|
|
testAccCheckComputeHttpHealthCheckRequestPath(
|
|
"/not_default", &healthCheck),
|
|
testAccCheckComputeHttpHealthCheckThresholds(
|
|
2, 2, &healthCheck),
|
|
),
|
|
},
|
|
resource.TestStep{
|
|
Config: testAccComputeHttpHealthCheck_update2,
|
|
Check: resource.ComposeTestCheckFunc(
|
|
testAccCheckComputeHttpHealthCheckExists(
|
|
"google_compute_http_health_check.foobar", &healthCheck),
|
|
testAccCheckComputeHttpHealthCheckRequestPath(
|
|
"/", &healthCheck),
|
|
testAccCheckComputeHttpHealthCheckThresholds(
|
|
10, 10, &healthCheck),
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func testAccCheckComputeHttpHealthCheckDestroy(s *terraform.State) error {
|
|
config := testAccProvider.Meta().(*Config)
|
|
|
|
for _, rs := range s.RootModule().Resources {
|
|
if rs.Type != "google_compute_http_health_check" {
|
|
continue
|
|
}
|
|
|
|
_, err := config.clientCompute.HttpHealthChecks.Get(
|
|
config.Project, rs.Primary.ID).Do()
|
|
if err == nil {
|
|
return fmt.Errorf("HttpHealthCheck still exists")
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckComputeHttpHealthCheckExists(n string, healthCheck *compute.HttpHealthCheck) resource.TestCheckFunc {
|
|
return func(s *terraform.State) error {
|
|
rs, ok := s.RootModule().Resources[n]
|
|
if !ok {
|
|
return fmt.Errorf("Not found: %s", n)
|
|
}
|
|
|
|
if rs.Primary.ID == "" {
|
|
return fmt.Errorf("No ID is set")
|
|
}
|
|
|
|
config := testAccProvider.Meta().(*Config)
|
|
|
|
found, err := config.clientCompute.HttpHealthChecks.Get(
|
|
config.Project, rs.Primary.ID).Do()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if found.Name != rs.Primary.ID {
|
|
return fmt.Errorf("HttpHealthCheck not found")
|
|
}
|
|
|
|
*healthCheck = *found
|
|
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func testAccCheckComputeHttpHealthCheckRequestPath(path string, healthCheck *compute.HttpHealthCheck) resource.TestCheckFunc {
|
|
return func(s *terraform.State) error {
|
|
if healthCheck.RequestPath != path {
|
|
return fmt.Errorf("RequestPath doesn't match: expected %d, got %d", path, healthCheck.RequestPath)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func testAccCheckComputeHttpHealthCheckThresholds(healthy, unhealthy int64, healthCheck *compute.HttpHealthCheck) resource.TestCheckFunc {
|
|
return func(s *terraform.State) error {
|
|
if healthCheck.HealthyThreshold != healthy {
|
|
return fmt.Errorf("HealthyThreshold doesn't match: expected %d, got %d", healthy, healthCheck.HealthyThreshold)
|
|
}
|
|
|
|
if healthCheck.UnhealthyThreshold != unhealthy {
|
|
return fmt.Errorf("UnhealthyThreshold doesn't match: expected %d, got %d", unhealthy, healthCheck.UnhealthyThreshold)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
}
|
|
|
|
const testAccComputeHttpHealthCheck_basic = `
|
|
resource "google_compute_http_health_check" "foobar" {
|
|
check_interval_sec = 3
|
|
description = "Resource created for Terraform acceptance testing"
|
|
healthy_threshold = 3
|
|
host = "foobar"
|
|
name = "terraform-test"
|
|
port = "80"
|
|
request_path = "/health_check"
|
|
timeout_sec = 2
|
|
unhealthy_threshold = 3
|
|
}
|
|
`
|
|
|
|
const testAccComputeHttpHealthCheck_update1 = `
|
|
resource "google_compute_http_health_check" "foobar" {
|
|
name = "terraform-test"
|
|
description = "Resource created for Terraform acceptance testing"
|
|
request_path = "/not_default"
|
|
}
|
|
`
|
|
|
|
/* Change description, restore request_path to default, and change
|
|
* thresholds from defaults */
|
|
const testAccComputeHttpHealthCheck_update2 = `
|
|
resource "google_compute_http_health_check" "foobar" {
|
|
name = "terraform-test"
|
|
description = "Resource updated for Terraform acceptance testing"
|
|
healthy_threshold = 10
|
|
unhealthy_threshold = 10
|
|
}
|
|
`
|