Skip to content

Commit dfe18ba

Browse files
committed
added more load_balancer resource tests
1 parent 14d34c7 commit dfe18ba

15 files changed

+491
-8
lines changed

internal/services/load_balancer/resource_test.go

Lines changed: 276 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"time"
1010

1111
cfold "github.com/cloudflare/cloudflare-go"
12-
"github.com/cloudflare/cloudflare-go/v4"
1312
"github.com/cloudflare/cloudflare-go/v4/load_balancers"
1413
"github.com/cloudflare/terraform-provider-cloudflare/internal/acctest"
1514
"github.com/cloudflare/terraform-provider-cloudflare/internal/consts"
@@ -487,6 +486,237 @@ func TestAccCloudflareLoadBalancer_LeastConnectionsBalanced(t *testing.T) {
487486
})
488487
}
489488

489+
func TestAccCloudflareLoadBalancer_Account(t *testing.T) {
490+
var loadBalancer cfold.LoadBalancer
491+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
492+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
493+
rnd := utils.GenerateRandomResourceName()
494+
name := "cloudflare_load_balancer." + rnd
495+
496+
resource.Test(t, resource.TestCase{
497+
PreCheck: func() { acctest.TestAccPreCheck(t) },
498+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
499+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
500+
Steps: []resource.TestStep{ {
501+
Config: testAccCheckCloudflareLoadBalancerConfigAccount(zoneID, zone, rnd),
502+
Check: resource.ComposeTestCheckFunc(
503+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
504+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
505+
),
506+
} },
507+
})
508+
}
509+
510+
func TestAccCloudflareLoadBalancer_AdaptiveRoutingFailoverFalse(t *testing.T) {
511+
var loadBalancer cfold.LoadBalancer
512+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
513+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
514+
rnd := utils.GenerateRandomResourceName()
515+
name := "cloudflare_load_balancer." + rnd
516+
517+
resource.Test(t, resource.TestCase{
518+
PreCheck: func() { acctest.TestAccPreCheck(t) },
519+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
520+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
521+
Steps: []resource.TestStep{ {
522+
Config: testAccCheckCloudflareLoadBalancerConfigAdaptiveRoutingFailoverFalse(zoneID, zone, rnd),
523+
Check: resource.ComposeTestCheckFunc(
524+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
525+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
526+
),
527+
} },
528+
})
529+
}
530+
531+
func TestAccCloudflareLoadBalancer_AdaptiveRoutingFailoverTrue(t *testing.T) {
532+
var loadBalancer cfold.LoadBalancer
533+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
534+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
535+
rnd := utils.GenerateRandomResourceName()
536+
name := "cloudflare_load_balancer." + rnd
537+
538+
resource.Test(t, resource.TestCase{
539+
PreCheck: func() { acctest.TestAccPreCheck(t) },
540+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
541+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
542+
Steps: []resource.TestStep{ {
543+
Config: testAccCheckCloudflareLoadBalancerConfigAdaptiveRoutingFailoverTrue(zoneID, zone, rnd),
544+
Check: resource.ComposeTestCheckFunc(
545+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
546+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
547+
),
548+
} },
549+
})
550+
}
551+
552+
func TestAccCloudflareLoadBalancer_CountryPools(t *testing.T) {
553+
var loadBalancer cfold.LoadBalancer
554+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
555+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
556+
rnd := utils.GenerateRandomResourceName()
557+
name := "cloudflare_load_balancer." + rnd
558+
559+
resource.Test(t, resource.TestCase{
560+
PreCheck: func() { acctest.TestAccPreCheck(t) },
561+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
562+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
563+
Steps: []resource.TestStep{ {
564+
Config: testAccCheckCloudflareLoadBalancerConfigCountryPools(zoneID, zone, rnd),
565+
Check: resource.ComposeTestCheckFunc(
566+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
567+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
568+
),
569+
} },
570+
})
571+
}
572+
573+
func TestAccCloudflareLoadBalancer_CustomLocationStrategy(t *testing.T) {
574+
var loadBalancer cfold.LoadBalancer
575+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
576+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
577+
rnd := utils.GenerateRandomResourceName()
578+
name := "cloudflare_load_balancer." + rnd
579+
580+
resource.Test(t, resource.TestCase{
581+
PreCheck: func() { acctest.TestAccPreCheck(t) },
582+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
583+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
584+
Steps: []resource.TestStep{ {
585+
Config: testAccCheckCloudflareLoadBalancerConfigCustomLocationStrategy(zoneID, zone, rnd),
586+
Check: resource.ComposeTestCheckFunc(
587+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
588+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
589+
),
590+
} },
591+
})
592+
}
593+
594+
func TestAccCloudflareLoadBalancer_CustomPort(t *testing.T) {
595+
var loadBalancer cfold.LoadBalancer
596+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
597+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
598+
rnd := utils.GenerateRandomResourceName()
599+
name := "cloudflare_load_balancer." + rnd
600+
601+
resource.Test(t, resource.TestCase{
602+
PreCheck: func() { acctest.TestAccPreCheck(t) },
603+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
604+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
605+
Steps: []resource.TestStep{ {
606+
Config: testAccCheckCloudflareLoadBalancerConfigCustomPort(zoneID, zone, rnd),
607+
Check: resource.ComposeTestCheckFunc(
608+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
609+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
610+
),
611+
} },
612+
})
613+
}
614+
615+
func TestAccCloudflareLoadBalancer_CustomSessionAffinityAttributes(t *testing.T) {
616+
var loadBalancer cfold.LoadBalancer
617+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
618+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
619+
rnd := utils.GenerateRandomResourceName()
620+
name := "cloudflare_load_balancer." + rnd
621+
622+
resource.Test(t, resource.TestCase{
623+
PreCheck: func() { acctest.TestAccPreCheck(t) },
624+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
625+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
626+
Steps: []resource.TestStep{ {
627+
Config: testAccCheckCloudflareLoadBalancerConfigCustomSessionAffinityAttributes(zoneID, zone, rnd),
628+
Check: resource.ComposeTestCheckFunc(
629+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
630+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
631+
),
632+
} },
633+
})
634+
}
635+
636+
func TestAccCloudflareLoadBalancer_CustomTTL(t *testing.T) {
637+
var loadBalancer cfold.LoadBalancer
638+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
639+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
640+
rnd := utils.GenerateRandomResourceName()
641+
name := "cloudflare_load_balancer." + rnd
642+
643+
resource.Test(t, resource.TestCase{
644+
PreCheck: func() { acctest.TestAccPreCheck(t) },
645+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
646+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
647+
Steps: []resource.TestStep{ {
648+
Config: testAccCheckCloudflareLoadBalancerConfigCustomTTL(zoneID, zone, rnd),
649+
Check: resource.ComposeTestCheckFunc(
650+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
651+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
652+
),
653+
} },
654+
})
655+
}
656+
657+
func TestAccCloudflareLoadBalancer_LocationStrategyAlwaysResolverIP(t *testing.T) {
658+
var loadBalancer cfold.LoadBalancer
659+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
660+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
661+
rnd := utils.GenerateRandomResourceName()
662+
name := "cloudflare_load_balancer." + rnd
663+
664+
resource.Test(t, resource.TestCase{
665+
PreCheck: func() { acctest.TestAccPreCheck(t) },
666+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
667+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
668+
Steps: []resource.TestStep{ {
669+
Config: testAccCheckCloudflareLoadBalancerConfigLocationStrategyAlwaysResolverIP(zoneID, zone, rnd),
670+
Check: resource.ComposeTestCheckFunc(
671+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
672+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
673+
),
674+
} },
675+
})
676+
}
677+
678+
func TestAccCloudflareLoadBalancer_LocationStrategyNeverPop(t *testing.T) {
679+
var loadBalancer cfold.LoadBalancer
680+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
681+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
682+
rnd := utils.GenerateRandomResourceName()
683+
name := "cloudflare_load_balancer." + rnd
684+
685+
resource.Test(t, resource.TestCase{
686+
PreCheck: func() { acctest.TestAccPreCheck(t) },
687+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
688+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
689+
Steps: []resource.TestStep{ {
690+
Config: testAccCheckCloudflareLoadBalancerConfigLocationStrategyNeverPop(zoneID, zone, rnd),
691+
Check: resource.ComposeTestCheckFunc(
692+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
693+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
694+
),
695+
} },
696+
})
697+
}
698+
699+
func TestAccCloudflareLoadBalancer_StandardZone(t *testing.T) {
700+
var loadBalancer cfold.LoadBalancer
701+
zone := os.Getenv("CLOUDFLARE_DOMAIN")
702+
zoneID := os.Getenv("CLOUDFLARE_ZONE_ID")
703+
rnd := utils.GenerateRandomResourceName()
704+
name := "cloudflare_load_balancer." + rnd
705+
706+
resource.Test(t, resource.TestCase{
707+
PreCheck: func() { acctest.TestAccPreCheck(t) },
708+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
709+
CheckDestroy: testAccCheckCloudflareLoadBalancerDestroy,
710+
Steps: []resource.TestStep{ {
711+
Config: testAccCheckCloudflareLoadBalancerConfigStandardZone(zoneID, zone, rnd),
712+
Check: resource.ComposeTestCheckFunc(
713+
testAccCheckCloudflareLoadBalancerExists(name, &loadBalancer),
714+
testAccCheckCloudflareLoadBalancerIDIsValid(name, zoneID),
715+
),
716+
} },
717+
})
718+
}
719+
490720
func TestAccCloudflareLoadBalancer_Rules(t *testing.T) {
491721
var loadBalancer cfold.LoadBalancer
492722
zone := os.Getenv("CLOUDFLARE_DOMAIN")
@@ -671,7 +901,7 @@ func testAccManuallyDeleteLoadBalancer(name string, loadBalancerID string, initi
671901
context.Background(),
672902
loadBalancerID,
673903
load_balancers.LoadBalancerDeleteParams{
674-
ZoneID: cloudflare.F(rs.Primary.Attributes[consts.ZoneIDSchemaKey]),
904+
ZoneID: rs.Primary.Attributes[consts.ZoneIDSchemaKey],
675905
},
676906
)
677907
if err != nil {
@@ -741,6 +971,50 @@ func testAccCheckCloudflareLoadBalancerConfigDuplicatePool(zoneID, zone, id stri
741971
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigduplicatepool.tf", zoneID, zone, id)
742972
}
743973

974+
func testAccCheckCloudflareLoadBalancerConfigAccount(zoneID, zone, id string) string {
975+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigaccount.tf", zoneID, zone, id)
976+
}
977+
978+
func testAccCheckCloudflareLoadBalancerConfigAdaptiveRoutingFailoverFalse(zoneID, zone, id string) string {
979+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigadaptiveroutingfailoverfalse.tf", zoneID, zone, id)
980+
}
981+
982+
func testAccCheckCloudflareLoadBalancerConfigAdaptiveRoutingFailoverTrue(zoneID, zone, id string) string {
983+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigadaptiveroutingfailovertrue.tf", zoneID, zone, id)
984+
}
985+
986+
func testAccCheckCloudflareLoadBalancerConfigCountryPools(zoneID, zone, id string) string {
987+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigcountrypools.tf", zoneID, zone, id)
988+
}
989+
990+
func testAccCheckCloudflareLoadBalancerConfigCustomLocationStrategy(zoneID, zone, id string) string {
991+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigcustomlocationstrategy.tf", zoneID, zone, id)
992+
}
993+
994+
func testAccCheckCloudflareLoadBalancerConfigCustomPort(zoneID, zone, id string) string {
995+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigcustomport.tf", zoneID, zone, id)
996+
}
997+
998+
func testAccCheckCloudflareLoadBalancerConfigCustomSessionAffinityAttributes(zoneID, zone, id string) string {
999+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigcustomsessionaffinityattributes.tf", zoneID, zone, id)
1000+
}
1001+
1002+
func testAccCheckCloudflareLoadBalancerConfigCustomTTL(zoneID, zone, id string) string {
1003+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigcustomttl.tf", zoneID, zone, id)
1004+
}
1005+
1006+
func testAccCheckCloudflareLoadBalancerConfigLocationStrategyAlwaysResolverIP(zoneID, zone, id string) string {
1007+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfiglocationstrategyalwaysresolverip.tf", zoneID, zone, id)
1008+
}
1009+
1010+
func testAccCheckCloudflareLoadBalancerConfigLocationStrategyNeverPop(zoneID, zone, id string) string {
1011+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfiglocationstrategyneverpop.tf", zoneID, zone, id)
1012+
}
1013+
1014+
func testAccCheckCloudflareLoadBalancerConfigStandardZone(zoneID, zone, id string) string {
1015+
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigstandardzone.tf", zoneID, zone, id)
1016+
}
1017+
7441018
func testAccCheckCloudflareLoadBalancerConfigRules(zoneID, zone, id string) string {
7451019
return testAccCheckCloudflareLoadBalancerPoolConfigBasic(id, accountID) + acctest.LoadTestCase("loadbalancerconfigrules.tf", zoneID, zone, id)
7461020
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
resource "cloudflare_load_balancer" "%[3]s" {
2+
# Account-level LB (no zone_id)
3+
name = "tf-testacc-lb-account-%[3]s"
4+
5+
default_pools = ["${cloudflare_load_balancer_pool.%[1]s.id}"]
6+
fallback_pool = "${cloudflare_load_balancer_pool.%[1]s.id}"
7+
8+
region_pools = {
9+
WNAM = ["${cloudflare_load_balancer_pool.%[1]s.id}"]
10+
SSAM = ["${cloudflare_load_balancer_pool.%[1]s.id}"]
11+
}
12+
pop_pools = {
13+
LHR = ["${cloudflare_load_balancer_pool.%[1]s.id}"]
14+
}
15+
steering_policy = "geo"
16+
proxied = true
17+
random_steering = {
18+
default_weight = 1.00
19+
}
20+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
resource "cloudflare_load_balancer" "%[3]s" {
2+
zone_id = "%[1]s"
3+
name = "%[3]s.%[2]s"
4+
fallback_pool = "${cloudflare_load_balancer_pool.%[1]s.id}"
5+
default_pools = ["${cloudflare_load_balancer_pool.%[1]s.id}"]
6+
description = "Load Balancer for %[2]s"
7+
ttl = 30
8+
proxied = false
9+
steering_policy = "off"
10+
11+
adaptive_routing {
12+
failover_across_pools = false
13+
}
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
resource "cloudflare_load_balancer" "%[3]s" {
2+
zone_id = "%[1]s"
3+
name = "%[3]s.%[2]s"
4+
fallback_pool = "${cloudflare_load_balancer_pool.%[1]s.id}"
5+
default_pools = ["${cloudflare_load_balancer_pool.%[1]s.id}"]
6+
description = "Load Balancer for %[2]s"
7+
ttl = 30
8+
proxied = false
9+
steering_policy = "off"
10+
11+
adaptive_routing {
12+
failover_across_pools = true
13+
}
14+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
resource "cloudflare_load_balancer" "%[3]s" {
2+
zone_id = "%[1]s"
3+
name = "tf-testacc-lb-country-pools-%[3]s.%[2]s"
4+
5+
fallback_pool = "${cloudflare_load_balancer_pool.%[3]s.id}"
6+
default_pools = ["${cloudflare_load_balancer_pool.%[3]s.id}"]
7+
8+
region_pools = {
9+
WNAM = ["${cloudflare_load_balancer_pool.%[3]s.id}"]
10+
IN = ["${cloudflare_load_balancer_pool.%[3]s.id}"]
11+
}
12+
country_pools = {
13+
IN = ["${cloudflare_load_balancer_pool.%[3]s.id}"]
14+
}
15+
pop_pools = {
16+
LHR = ["{cloudflare_load_balancer_pool.%[3]s.id}"]
17+
}
18+
session_affinity = "cookie"
19+
steering_policy = "geo"
20+
proxied = true
21+
session_affinity_attributes = {
22+
samesite = "Auto"
23+
secure = "Auto"
24+
drain_duration = 0
25+
zero_downtime_failover = "none"
26+
}
27+
random_steering = {
28+
default_weight = 1.00
29+
}
30+
}

0 commit comments

Comments
 (0)