Skip to content

Commit 6c687d5

Browse files
committed
test: refactoring test to use simpler checks
1 parent 49e7d77 commit 6c687d5

File tree

2 files changed

+42
-165
lines changed

2 files changed

+42
-165
lines changed

provider/datasource_rediscloud_essentials_database.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package provider
22

33
import (
44
"context"
5+
56
"github.com/RedisLabs/rediscloud-go-api/redis"
67
fixedDatabases "github.com/RedisLabs/rediscloud-go-api/service/fixed/databases"
78
"github.com/RedisLabs/terraform-provider-rediscloud/provider/client"
@@ -439,7 +440,7 @@ func dataSourceRedisCloudEssentialsDatabaseRead(ctx context.Context, d *schema.R
439440
if err := d.Set("data_eviction", redis.StringValue(db.DataEvictionPolicy)); err != nil {
440441
return diag.FromErr(err)
441442
}
442-
if err := d.Set("replication", redis.BoolValue(db.Replication)); err != nil {
443+
if err := d.Set("replication", *db.Replication); err != nil {
443444
return diag.FromErr(err)
444445
}
445446
if err := d.Set("activated_on", db.ActivatedOn.String()); err != nil {
Lines changed: 40 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
package provider
22

33
import (
4-
"context"
54
"fmt"
6-
"strconv"
75
"testing"
86

9-
"github.com/RedisLabs/rediscloud-go-api/redis"
10-
"github.com/RedisLabs/rediscloud-go-api/service/databases"
11-
"github.com/RedisLabs/terraform-provider-rediscloud/provider/client"
127
"github.com/RedisLabs/terraform-provider-rediscloud/provider/utils"
138
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
149
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
15-
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1610
)
1711

1812
// TestAccResourceRedisCloudActiveActiveDatabase_enableDefaultUser tests the enable_default_user
@@ -25,10 +19,6 @@ func TestAccResourceRedisCloudActiveActiveDatabase_enableDefaultUser(t *testing.
2519
password := acctest.RandString(20)
2620

2721
const resourceName = "rediscloud_active_active_subscription_database.test"
28-
const subscriptionResourceName = "rediscloud_active_active_subscription.test"
29-
30-
var subId int
31-
var dbId int
3222

3323
resource.ParallelTest(t, resource.TestCase{
3424
PreCheck: func() { testAccPreCheck(t); testAccAwsPreExistingCloudAccountPreCheck(t) },
@@ -46,54 +36,13 @@ func TestAccResourceRedisCloudActiveActiveDatabase_enableDefaultUser(t *testing.
4636
resource.TestCheckResourceAttr(resourceName, "global_enable_default_user", "true"),
4737
resource.TestCheckResourceAttr(resourceName, "override_region.#", "2"),
4838

49-
// Capture subscription and database IDs for API verification
50-
func(s *terraform.State) error {
51-
r := s.RootModule().Resources[subscriptionResourceName]
52-
var err error
53-
subId, err = strconv.Atoi(r.Primary.ID)
54-
if err != nil {
55-
return fmt.Errorf("couldn't parse subscription ID: %s", r.Primary.ID)
56-
}
57-
58-
dbResource := s.RootModule().Resources[resourceName]
59-
dbIdStr := dbResource.Primary.Attributes["db_id"]
60-
dbId, err = strconv.Atoi(dbIdStr)
61-
if err != nil {
62-
return fmt.Errorf("couldn't parse database ID: %s", dbIdStr)
63-
}
64-
65-
return nil
66-
},
67-
68-
// Verify API state - regions should inherit global (not send enableDefaultUser)
69-
func(s *terraform.State) error {
70-
apiClient := testProvider.Meta().(*client.ApiClient)
71-
db, err := apiClient.Client.Database.GetActiveActive(context.TODO(), subId, dbId)
72-
if err != nil {
73-
return fmt.Errorf("failed to get database from API: %w", err)
74-
}
75-
76-
// Verify global setting
77-
if db.GlobalEnableDefaultUser == nil || !*db.GlobalEnableDefaultUser {
78-
return fmt.Errorf("expected GlobalEnableDefaultUser to be true, got: %v", db.GlobalEnableDefaultUser)
79-
}
80-
81-
// Verify regions - they should have enableDefaultUser=true (effective value from global)
82-
// What's important is that all regions show true (not false from bad override)
83-
for _, regionDb := range db.CrdbDatabases {
84-
region := redis.StringValue(regionDb.Region)
85-
enableDefaultUser := redis.BoolValue(regionDb.Security.EnableDefaultUser)
86-
t.Logf("Region %s: EnableDefaultUser = %v", region, enableDefaultUser)
87-
88-
// All regions should have effective value of true (from global)
89-
if !enableDefaultUser {
90-
return fmt.Errorf("region %s has enableDefaultUser=%v, expected true (inherited from global)",
91-
region, enableDefaultUser)
92-
}
93-
}
94-
95-
return nil
96-
},
39+
// Both regions inherit global (no explicit enable_default_user set)
40+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
41+
"name": "us-east-1",
42+
}),
43+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
44+
"name": "us-east-2",
45+
}),
9746
),
9847
},
9948

@@ -104,45 +53,18 @@ func TestAccResourceRedisCloudActiveActiveDatabase_enableDefaultUser(t *testing.
10453
subscriptionName, databaseName, password),
10554
Check: resource.ComposeAggregateTestCheckFunc(
10655
resource.TestCheckResourceAttr(resourceName, "global_enable_default_user", "true"),
56+
resource.TestCheckResourceAttr(resourceName, "override_region.#", "2"),
10757

10858
// us-east-1: explicitly false (override)
109-
// Note: Terraform state won't show enable_default_user for override_region unless we check differently
110-
111-
// Verify API state
112-
func(s *terraform.State) error {
113-
apiClient := testProvider.Meta().(*client.ApiClient)
114-
db, err := apiClient.Client.Database.GetActiveActive(context.TODO(), subId, dbId)
115-
if err != nil {
116-
return fmt.Errorf("failed to get database from API: %w", err)
117-
}
118-
119-
// Verify global is still true
120-
if !redis.BoolValue(db.GlobalEnableDefaultUser) {
121-
return fmt.Errorf("expected GlobalEnableDefaultUser=true")
122-
}
123-
124-
// Verify us-east-1 is explicitly false
125-
usEast1 := findRegionInActiveActiveDB(db, "us-east-1")
126-
if usEast1 == nil {
127-
return fmt.Errorf("us-east-1 region not found")
128-
}
129-
if redis.BoolValue(usEast1.Security.EnableDefaultUser) != false {
130-
return fmt.Errorf("us-east-1 should have enableDefaultUser=false, got: %v",
131-
usEast1.Security.EnableDefaultUser)
132-
}
133-
134-
// Verify us-east-2 inherits (true)
135-
usEast2 := findRegionInActiveActiveDB(db, "us-east-2")
136-
if usEast2 == nil {
137-
return fmt.Errorf("us-east-2 region not found")
138-
}
139-
if redis.BoolValue(usEast2.Security.EnableDefaultUser) != true {
140-
return fmt.Errorf("us-east-2 should inherit enableDefaultUser=true, got: %v",
141-
usEast2.Security.EnableDefaultUser)
142-
}
143-
144-
return nil
145-
},
59+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
60+
"name": "us-east-1",
61+
"enable_default_user": "false",
62+
}),
63+
64+
// us-east-2: inherits global (no enable_default_user set)
65+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
66+
"name": "us-east-2",
67+
}),
14668
),
14769
},
14870

@@ -153,42 +75,18 @@ func TestAccResourceRedisCloudActiveActiveDatabase_enableDefaultUser(t *testing.
15375
subscriptionName, databaseName, password),
15476
Check: resource.ComposeAggregateTestCheckFunc(
15577
resource.TestCheckResourceAttr(resourceName, "global_enable_default_user", "false"),
78+
resource.TestCheckResourceAttr(resourceName, "override_region.#", "2"),
79+
80+
// us-east-1: explicitly true (override global false)
81+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
82+
"name": "us-east-1",
83+
"enable_default_user": "true",
84+
}),
15685

157-
// Verify API state
158-
func(s *terraform.State) error {
159-
apiClient := testProvider.Meta().(*client.ApiClient)
160-
db, err := apiClient.Client.Database.GetActiveActive(context.TODO(), subId, dbId)
161-
if err != nil {
162-
return fmt.Errorf("failed to get database from API: %w", err)
163-
}
164-
165-
// Verify global is false
166-
if redis.BoolValue(db.GlobalEnableDefaultUser) != false {
167-
return fmt.Errorf("expected GlobalEnableDefaultUser=false, got: %v", db.GlobalEnableDefaultUser)
168-
}
169-
170-
// Verify us-east-1 overrides to true
171-
usEast1 := findRegionInActiveActiveDB(db, "us-east-1")
172-
if usEast1 == nil {
173-
return fmt.Errorf("us-east-1 region not found")
174-
}
175-
if redis.BoolValue(usEast1.Security.EnableDefaultUser) != true {
176-
return fmt.Errorf("us-east-1 should override to enableDefaultUser=true, got: %v",
177-
usEast1.Security.EnableDefaultUser)
178-
}
179-
180-
// Verify us-east-2 inherits false
181-
usEast2 := findRegionInActiveActiveDB(db, "us-east-2")
182-
if usEast2 == nil {
183-
return fmt.Errorf("us-east-2 region not found")
184-
}
185-
if redis.BoolValue(usEast2.Security.EnableDefaultUser) != false {
186-
return fmt.Errorf("us-east-2 should inherit enableDefaultUser=false, got: %v",
187-
usEast2.Security.EnableDefaultUser)
188-
}
189-
190-
return nil
191-
},
86+
// us-east-2: inherits global false (no enable_default_user set)
87+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
88+
"name": "us-east-2",
89+
}),
19290
),
19391
},
19492

@@ -199,43 +97,21 @@ func TestAccResourceRedisCloudActiveActiveDatabase_enableDefaultUser(t *testing.
19997
subscriptionName, databaseName, password),
20098
Check: resource.ComposeAggregateTestCheckFunc(
20199
resource.TestCheckResourceAttr(resourceName, "global_enable_default_user", "true"),
100+
resource.TestCheckResourceAttr(resourceName, "override_region.#", "2"),
202101

203-
// Verify API state
204-
func(s *terraform.State) error {
205-
apiClient := testProvider.Meta().(*client.ApiClient)
206-
db, err := apiClient.Client.Database.GetActiveActive(context.TODO(), subId, dbId)
207-
if err != nil {
208-
return fmt.Errorf("failed to get database from API: %w", err)
209-
}
210-
211-
usEast1 := findRegionInActiveActiveDB(db, "us-east-1")
212-
if redis.BoolValue(usEast1.Security.EnableDefaultUser) != true {
213-
return fmt.Errorf("us-east-1 should be true")
214-
}
215-
216-
usEast2 := findRegionInActiveActiveDB(db, "us-east-2")
217-
if redis.BoolValue(usEast2.Security.EnableDefaultUser) != false {
218-
return fmt.Errorf("us-east-2 should be false")
219-
}
220-
221-
return nil
222-
},
102+
// us-east-1: explicitly true
103+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
104+
"name": "us-east-1",
105+
"enable_default_user": "true",
106+
}),
107+
108+
// us-east-2: explicitly false
109+
resource.TestCheckTypeSetElemNestedAttrs(resourceName, "override_region.*", map[string]string{
110+
"name": "us-east-2",
111+
"enable_default_user": "false",
112+
}),
223113
),
224114
},
225115
},
226116
})
227117
}
228-
229-
// Helper function to find a specific region in the ActiveActive database API response
230-
func findRegionInActiveActiveDB(db *databases.ActiveActiveDatabase, regionName string) *databases.CrdbDatabase {
231-
if db == nil {
232-
return nil
233-
}
234-
235-
for _, regionDb := range db.CrdbDatabases {
236-
if redis.StringValue(regionDb.Region) == regionName {
237-
return regionDb
238-
}
239-
}
240-
return nil
241-
}

0 commit comments

Comments
 (0)