diff --git a/internal/services/load_balancer_pool/resource_test.go b/internal/services/load_balancer_pool/resource_test.go index a4742e9787..5dea251999 100644 --- a/internal/services/load_balancer_pool/resource_test.go +++ b/internal/services/load_balancer_pool/resource_test.go @@ -198,6 +198,64 @@ func TestAccCloudflareLoadBalancerPool_VirtualNetworkID(t *testing.T) { }) } +func TestAccCloudflareLoadBalancerPool_PatchBehavior(t *testing.T) { + t.Parallel() + testStartTime := time.Now().UTC() + var loadBalancerPool cfold.LoadBalancerPool + rnd := utils.GenerateRandomResourceName() + name := "cloudflare_load_balancer_pool." + rnd + accountID := os.Getenv("CLOUDFLARE_ACCOUNT_ID") + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.TestAccPreCheck(t) }, + ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckCloudflareLoadBalancerPoolDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckCloudflareLoadBalancerPoolConfigBasic(rnd, accountID), + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudflareLoadBalancerPoolExists(name, &loadBalancerPool), + resource.TestCheckResourceAttr(name, "name", fmt.Sprintf("my-tf-pool-basic-%s", rnd)), + resource.TestCheckResourceAttr(name, "enabled", "true"), + resource.TestCheckResourceAttr(name, "latitude", "12.3"), + resource.TestCheckResourceAttr(name, "longitude", "55"), + resource.TestCheckResourceAttr(name, "origins.#", "1"), + resource.TestCheckResourceAttr(name, "origins.0.name", "example-1"), + resource.TestCheckResourceAttr(name, "origins.0.address", "192.0.2.1"), + testAccCheckCloudflareLoadBalancerPoolDates(name, &loadBalancerPool, testStartTime), + ), + }, + { + // Patch the load balancer pool with updated properties + Config: testAccCheckCloudflareLoadBalancerPoolConfigPatched(rnd, accountID), + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudflareLoadBalancerPoolExists(name, &loadBalancerPool), + // Verify patched properties + resource.TestCheckResourceAttr(name, "name", fmt.Sprintf("my-tf-pool-patched-%s", rnd)), + resource.TestCheckResourceAttr(name, "description", "Patched load balancer pool"), + resource.TestCheckResourceAttr(name, "enabled", "false"), + resource.TestCheckResourceAttr(name, "latitude", "37.7749"), + resource.TestCheckResourceAttr(name, "longitude", "-122.4194"), + resource.TestCheckResourceAttr(name, "minimum_origins", "2"), + resource.TestCheckResourceAttr(name, "check_regions.#", "1"), + resource.TestCheckResourceAttr(name, "check_regions.0", "WEU"), + resource.TestCheckResourceAttr(name, "origins.#", "2"), + resource.TestCheckResourceAttr(name, "origins.0.name", "patched-origin-1"), + resource.TestCheckResourceAttr(name, "origins.0.address", "192.0.2.2"), + resource.TestCheckResourceAttr(name, "origins.1.name", "patched-origin-2"), + resource.TestCheckResourceAttr(name, "origins.1.address", "192.0.2.3"), + resource.TestCheckResourceAttr(name, "load_shedding.%", "4"), + resource.TestCheckResourceAttr(name, "load_shedding.default_percent", "25"), + resource.TestCheckResourceAttr(name, "load_shedding.default_policy", "random"), + resource.TestCheckResourceAttr(name, "origin_steering.%", "1"), + resource.TestCheckResourceAttr(name, "origin_steering.policy", "random"), + testAccCheckCloudflareLoadBalancerPoolDates(name, &loadBalancerPool, testStartTime), + ), + }, + }, + }) +} + func TestAccCloudflareLoadBalancerPool_FullySpecified(t *testing.T) { t.Parallel() var loadBalancerPool cfold.LoadBalancerPool @@ -421,6 +479,10 @@ func testAccCheckCloudflareLoadBalancerPoolConfigFullySpecified(id, headerValue, // TODO add field to config after creating monitor resource } +func testAccCheckCloudflareLoadBalancerPoolConfigPatched(id, accountID string) string { + return acctest.LoadTestCase("loadbalancerpoolconfigpatched.tf", id, accountID) +} + func testAccCheckCloudflareTunnelVirtualNetworkExists(name string, virtualNetwork *cfold.TunnelVirtualNetwork) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[name] diff --git a/internal/services/load_balancer_pool/testdata/loadbalancerpoolconfigpatched.tf b/internal/services/load_balancer_pool/testdata/loadbalancerpoolconfigpatched.tf new file mode 100644 index 0000000000..07754bf2d5 --- /dev/null +++ b/internal/services/load_balancer_pool/testdata/loadbalancerpoolconfigpatched.tf @@ -0,0 +1,36 @@ +resource "cloudflare_load_balancer_pool" "%[1]s" { + account_id = "%[2]s" + name = "my-tf-pool-patched-%[1]s" + description = "Patched load balancer pool" + enabled = false + latitude = 37.7749 + longitude = -122.4194 + minimum_origins = 2 + check_regions = ["WEU"] + + load_shedding { + default_percent = 25 + default_policy = "random" + session_percent = 10 + session_policy = "hash" + } + + origin_steering { + policy = "random" + } + + origins = [ + { + name = "patched-origin-1" + address = "192.0.2.2" + enabled = true + weight = 0.5 + }, + { + name = "patched-origin-2" + address = "192.0.2.3" + enabled = true + weight = 0.5 + } + ] +}