Skip to content

Commit 15a8341

Browse files
committed
test: more robust assertions
1 parent 2813b73 commit 15a8341

4 files changed

+62
-40
lines changed

provider/pro/testdata/pro_subscription_public_endpoint_disabled.tf

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ resource "rediscloud_subscription" "example" {
3333

3434
resource "rediscloud_subscription_database" "example" {
3535
subscription_id = rediscloud_subscription.example.id
36-
name = "example"
36+
name = local.rediscloud_subscription_name
3737
protocol = "redis"
3838
dataset_size_in_gb = 1
3939
data_persistence = "none"
@@ -59,7 +59,3 @@ data "rediscloud_database" "example" {
5959
subscription_id = rediscloud_subscription.example.id
6060
name = rediscloud_subscription_database.example.name
6161
}
62-
63-
output "db_source_ips" {
64-
value = rediscloud_subscription_database.example.source_ips
65-
}

provider/pro/testdata/pro_subscription_public_endpoint_enabled.tf

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ resource "rediscloud_subscription" "example" {
3232

3333
resource "rediscloud_subscription_database" "example" {
3434
subscription_id = rediscloud_subscription.example.id
35-
name = "example"
35+
name = local.rediscloud_subscription_name
3636
protocol = "redis"
3737
dataset_size_in_gb = 1
3838
data_persistence = "none"
@@ -58,7 +58,3 @@ data "rediscloud_database" "example" {
5858
subscription_id = rediscloud_subscription.example.id
5959
name = rediscloud_subscription_database.example.name
6060
}
61-
62-
output "db_source_ips" {
63-
value = rediscloud_subscription_database.example.source_ips
64-
}

provider/rediscloud_active_active_database_block_public_endpoints_test.go

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,54 @@ func TestAccActiveActiveSubscriptionDatabaseBlockPublicEndpoints(t *testing.T) {
3232
{
3333
Config: configDisabled,
3434
Check: resource.ComposeAggregateTestCheckFunc(
35+
// Verify the subscription has public_endpoint_access disabled
36+
resource.TestCheckResourceAttr("rediscloud_active_active_subscription.example", "public_endpoint_access", "false"),
37+
38+
// Database resource checks
3539
resource.TestCheckResourceAttr(databaseResource, "name", subscriptionName),
36-
resource.TestCheckResourceAttr(databaseResource, "dataset_size_in_gb", "1"),
37-
resource.TestCheckResourceAttr(databaseResource, "global_data_persistence", "aof-every-1-second"),
38-
resource.TestCheckResourceAttr(databaseResource, "global_modules.#", "1"),
39-
resource.TestCheckResourceAttr(databaseResource, "global_modules.0", "RedisJSON"),
40-
resource.TestCheckResourceAttr(databaseResource, "global_alert.#", "1"),
41-
resource.TestCheckResourceAttr(databaseResource, "global_alert.0.name", "dataset-size"),
42-
resource.TestCheckResourceAttr(databaseResource, "global_alert.0.value", "40"),
40+
41+
// Global source IPs should be explicitly set
4342
resource.TestCheckResourceAttr(databaseResource, "global_source_ips.#", "1"),
44-
resource.TestCheckResourceAttr(databaseResource, "global_source_ips.0", "192.168.0.0/16"),
45-
resource.TestCheckResourceAttrSet(databaseResource, "override_region.0.source_ips"),
43+
resource.TestCheckTypeSetElemAttr(databaseResource, "global_source_ips.*", "192.168.0.0/16"),
44+
45+
// Override region 0 (us-east-2) has explicit override of source_ips
46+
resource.TestCheckResourceAttr(databaseResource, "override_region.0.override_global_source_ips.#", "1"),
47+
resource.TestCheckTypeSetElemAttr(databaseResource, "override_region.0.override_global_source_ips.*", "172.16.0.0/16"),
48+
resource.TestCheckResourceAttr(databaseResource, "override_region.0.source_ips.#", "1"),
49+
resource.TestCheckTypeSetElemAttr(databaseResource, "override_region.0.source_ips.*", "172.16.0.0/16"),
50+
51+
// Override region 1 (us-east-1) has no override, should inherit global
52+
resource.TestCheckResourceAttr(databaseResource, "override_region.1.override_global_source_ips.#", "0"),
53+
resource.TestCheckResourceAttr(databaseResource, "override_region.1.source_ips.#", "1"),
54+
resource.TestCheckTypeSetElemAttr(databaseResource, "override_region.1.source_ips.*", "192.168.0.0/16"),
55+
4656
// Data source checks
4757
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionName),
4858
resource.TestCheckResourceAttr(datasourceName, "dataset_size_in_gb", "1"),
49-
resource.TestCheckResourceAttrSet(datasourceName, "global_source_ips.#"),
59+
resource.TestCheckResourceAttr(datasourceName, "global_source_ips.#", "1"),
60+
resource.TestCheckTypeSetElemAttr(datasourceName, "global_source_ips.*", "192.168.0.0/16"),
5061
),
5162
},
5263
{
5364
Config: configEnabled,
5465
Check: resource.ComposeAggregateTestCheckFunc(
66+
// Verify the subscription has public_endpoint_access enabled
67+
resource.TestCheckResourceAttr("rediscloud_active_active_subscription.example", "public_endpoint_access", "true"),
68+
// Database resource checks
5569
resource.TestCheckResourceAttr(databaseResource, "name", subscriptionName),
56-
resource.TestCheckResourceAttr(databaseResource, "dataset_size_in_gb", "1"),
57-
resource.TestCheckResourceAttrSet(databaseResource, "global_source_ips.#"),
70+
71+
// Global source IPs should be the same (explicitly set in testdata)
72+
resource.TestCheckResourceAttr(databaseResource, "global_source_ips.#", "1"),
73+
resource.TestCheckTypeSetElemAttr(databaseResource, "global_source_ips.*", "192.168.0.0/16"),
74+
// Override regions should have the same overrides
75+
resource.TestCheckResourceAttr(databaseResource, "override_region.0.override_global_source_ips.#", "1"),
76+
resource.TestCheckTypeSetElemAttr(databaseResource, "override_region.0.override_global_source_ips.*", "172.16.0.0/16"),
77+
resource.TestCheckResourceAttr(databaseResource, "override_region.0.source_ips.#", "1"),
78+
resource.TestCheckTypeSetElemAttr(databaseResource, "override_region.0.source_ips.*", "172.16.0.0/16"),
5879
// Data source checks after update
5980
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionName),
60-
resource.TestCheckResourceAttrSet(datasourceName, "global_source_ips.#"),
81+
resource.TestCheckResourceAttr(datasourceName, "global_source_ips.#", "1"),
82+
resource.TestCheckTypeSetElemAttr(datasourceName, "global_source_ips.*", "192.168.0.0/16"),
6183
),
6284
},
6385
},

provider/rediscloud_pro_database_block_public_endpoints_test.go

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,34 +33,42 @@ func TestAccRedisCloudProDatabaseBlockPublicEndpoints(t *testing.T) {
3333
{
3434
Config: configDisabled,
3535
Check: resource.ComposeAggregateTestCheckFunc(
36-
resource.TestCheckResourceAttr(databaseResource, "name", "example"),
37-
resource.TestCheckResourceAttr(databaseResource, "protocol", "redis"),
38-
resource.TestCheckResourceAttr(databaseResource, "dataset_size_in_gb", "1"),
39-
resource.TestCheckResourceAttr(databaseResource, "support_oss_cluster_api", "false"),
40-
resource.TestCheckResourceAttr(databaseResource, "data_persistence", "none"),
41-
resource.TestCheckResourceAttr(databaseResource, "data_eviction", "allkeys-random"),
42-
resource.TestCheckResourceAttr(databaseResource, "replication", "false"),
43-
resource.TestCheckResourceAttr(databaseResource, "throughput_measurement_by", "operations-per-second"),
44-
resource.TestCheckResourceAttr(databaseResource, "throughput_measurement_value", "1000"),
45-
resource.TestCheckResourceAttr(databaseResource, "password", password),
46-
resource.TestCheckResourceAttr(databaseResource, "enable_default_user", "true"),
47-
resource.TestCheckResourceAttr(databaseResource, "redis_version", "8.2"),
48-
resource.TestCheckResourceAttrSet(databaseResource, "source_ips"),
36+
// Verify subscription has public_endpoint_access disabled
37+
resource.TestCheckResourceAttr("rediscloud_subscription.example", "public_endpoint_access", "false"),
38+
// Database resource checks
39+
resource.TestCheckResourceAttr(databaseResource, "name", subscriptionName),
40+
41+
// Source IPs should default to RFC1918 private ranges when public_endpoint_access=false
42+
resource.TestCheckResourceAttr(databaseResource, "source_ips.#", "4"),
43+
resource.TestCheckTypeSetElemAttr(databaseResource, "source_ips.*", "10.0.0.0/8"),
44+
resource.TestCheckTypeSetElemAttr(databaseResource, "source_ips.*", "172.16.0.0/12"),
45+
resource.TestCheckTypeSetElemAttr(databaseResource, "source_ips.*", "192.168.0.0/16"),
46+
resource.TestCheckTypeSetElemAttr(databaseResource, "source_ips.*", "100.64.0.0/10"),
4947
// Data source checks
50-
resource.TestCheckResourceAttr(datasourceName, "name", "example"),
48+
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionName),
5149
resource.TestCheckResourceAttr(datasourceName, "protocol", "redis"),
52-
resource.TestCheckResourceAttrSet(datasourceName, "source_ips"),
50+
resource.TestCheckResourceAttr(datasourceName, "source_ips.#", "4"),
51+
resource.TestCheckTypeSetElemAttr(datasourceName, "source_ips.*", "10.0.0.0/8"),
52+
resource.TestCheckTypeSetElemAttr(datasourceName, "source_ips.*", "172.16.0.0/12"),
53+
resource.TestCheckTypeSetElemAttr(datasourceName, "source_ips.*", "192.168.0.0/16"),
54+
resource.TestCheckTypeSetElemAttr(datasourceName, "source_ips.*", "100.64.0.0/10"),
5355
),
5456
},
5557
{
5658
Config: configEnabled,
5759
Check: resource.ComposeAggregateTestCheckFunc(
60+
// Verify subscription has public_endpoint_access enabled
61+
resource.TestCheckResourceAttr("rediscloud_subscription.example", "public_endpoint_access", "true"),
62+
// Database resource checks
5863
resource.TestCheckResourceAttr(databaseResource, "name", "example"),
5964
resource.TestCheckResourceAttr(databaseResource, "data_persistence", "none"),
60-
resource.TestCheckResourceAttrSet(databaseResource, "source_ips"),
65+
// Source IPs should default to public access when public_endpoint_access=true
66+
resource.TestCheckResourceAttr(databaseResource, "source_ips.#", "1"),
67+
resource.TestCheckTypeSetElemAttr(databaseResource, "source_ips.*", "0.0.0.0/0"),
6168
// Data source checks after update
6269
resource.TestCheckResourceAttr(datasourceName, "name", "example"),
63-
resource.TestCheckResourceAttrSet(datasourceName, "source_ips"),
70+
resource.TestCheckResourceAttr(datasourceName, "source_ips.#", "1"),
71+
resource.TestCheckTypeSetElemAttr(datasourceName, "source_ips.*", "0.0.0.0/0"),
6472
),
6573
},
6674
},

0 commit comments

Comments
 (0)