Skip to content

Commit 1ef48cb

Browse files
Merge pull request #629 from RedisLabs/bugfix/OPCR-3-cannot-disable-default-user
OPCR-3: cannot disable default user and password at the same time
2 parents eb96236 + 566874a commit 1ef48cb

File tree

2 files changed

+155
-0
lines changed

2 files changed

+155
-0
lines changed

provider/resource_rediscloud_essentials_database.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,11 @@ func resourceRedisCloudEssentialsDatabaseUpdate(ctx context.Context, d *schema.R
652652
updateDatabaseRequest.Password = redis.String(password)
653653
}
654654

655+
// can't update the password and disable the default user at once
656+
if !d.Get("enable_default_user").(bool) {
657+
updateDatabaseRequest.Password = nil
658+
}
659+
655660
createAlerts := make([]*databases.Alert, 0)
656661
alerts := d.Get("alert").(*schema.Set)
657662
for _, alert := range alerts.List() {

provider/resource_rediscloud_essentials_database_test.go

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ resource "rediscloud_essentials_database" "example" {
208208
"department" = "finance"
209209
}
210210
}
211+
211212
data "rediscloud_essentials_database" "example" {
212213
subscription_id = rediscloud_essentials_subscription.example.id
213214
name = rediscloud_essentials_database.example.name
@@ -249,8 +250,157 @@ resource "rediscloud_essentials_database" "example" {
249250
"department" = "finance"
250251
}
251252
}
253+
252254
data "rediscloud_essentials_database" "example" {
253255
subscription_id = rediscloud_essentials_subscription.example.id
254256
name = rediscloud_essentials_database.example.name
255257
}
256258
`
259+
260+
// there was a bug where removing the default user would cause issues with passwords
261+
func TestAccResourceRedisCloudEssentialsDatabase_DisableDefaultUser(t *testing.T) {
262+
testAccRequiresEnvVar(t, "EXECUTE_TESTS")
263+
264+
subscriptionName := acctest.RandomWithPrefix(testResourcePrefix)
265+
databaseName := subscriptionName + "-db"
266+
databaseNameUpdated := databaseName + "-updated"
267+
268+
const resourceName = "rediscloud_essentials_database.example"
269+
const datasourceName = "data.rediscloud_essentials_database.example"
270+
271+
resource.ParallelTest(t, resource.TestCase{
272+
PreCheck: func() { testAccPreCheck(t) },
273+
ProviderFactories: providerFactories,
274+
CheckDestroy: testAccCheckEssentialsSubscriptionDestroy,
275+
Steps: []resource.TestStep{
276+
{
277+
Config: fmt.Sprintf(testAccResourceRedisCloudEssentialsDatabaseDisableDefaultUserCreate, subscriptionName, databaseName),
278+
Check: resource.ComposeAggregateTestCheckFunc(
279+
// Test creating resource
280+
resource.TestMatchResourceAttr(resourceName, "id", regexp.MustCompile("^\\d+/\\d+$")),
281+
resource.TestCheckResourceAttrSet(resourceName, "subscription_id"),
282+
resource.TestCheckResourceAttrSet(resourceName, "db_id"),
283+
resource.TestCheckResourceAttr(resourceName, "name", databaseName),
284+
resource.TestCheckResourceAttr(resourceName, "enable_default_user", "true"),
285+
resource.TestCheckResourceAttr(resourceName, "password", "j43589rhe39f"),
286+
287+
// Test the datasource
288+
resource.TestMatchResourceAttr(datasourceName, "id", regexp.MustCompile("^\\d+/\\d+$")),
289+
resource.TestCheckResourceAttrSet(datasourceName, "subscription_id"),
290+
resource.TestCheckResourceAttrSet(datasourceName, "db_id"),
291+
resource.TestCheckResourceAttr(datasourceName, "name", databaseName),
292+
resource.TestCheckResourceAttr(datasourceName, "enable_default_user", "true"),
293+
resource.TestCheckResourceAttr(datasourceName, "password", "j43589rhe39f"),
294+
),
295+
},
296+
{
297+
// test update
298+
Config: fmt.Sprintf(testAccResourceRedisCloudEssentialsDatabaseDisableDefaultUserUpdate, subscriptionName, databaseNameUpdated),
299+
Check: resource.ComposeAggregateTestCheckFunc(
300+
// Test the resource
301+
resource.TestMatchResourceAttr(resourceName, "id", regexp.MustCompile("^\\d+/\\d+$")),
302+
resource.TestCheckResourceAttrSet(resourceName, "subscription_id"),
303+
resource.TestCheckResourceAttrSet(resourceName, "db_id"),
304+
resource.TestCheckResourceAttr(resourceName, "name", databaseNameUpdated),
305+
resource.TestCheckResourceAttr(resourceName, "enable_default_user", "false"),
306+
resource.TestCheckResourceAttr(resourceName, "password", ""),
307+
308+
// Test the datasource
309+
resource.TestMatchResourceAttr(datasourceName, "id", regexp.MustCompile("^\\d+/\\d+$")),
310+
resource.TestCheckResourceAttrSet(datasourceName, "subscription_id"),
311+
resource.TestCheckResourceAttrSet(datasourceName, "db_id"),
312+
resource.TestCheckResourceAttr(datasourceName, "name", databaseNameUpdated),
313+
resource.TestCheckResourceAttr(datasourceName, "enable_default_user", "false"),
314+
),
315+
},
316+
{
317+
Config: fmt.Sprintf(testAccResourceRedisCloudEssentialsDatabaseDisableDefaultUserUpdate, subscriptionName, databaseName),
318+
ResourceName: resourceName,
319+
ImportState: true,
320+
ImportStateVerify: true,
321+
ImportStateVerifyIgnore: []string{"password", "enable_payg_features"},
322+
},
323+
},
324+
})
325+
}
326+
327+
const testAccResourceRedisCloudEssentialsDatabaseDisableDefaultUserCreate = `
328+
329+
data "rediscloud_payment_method" "card" {
330+
card_type = "Visa"
331+
}
332+
333+
data "rediscloud_essentials_plan" "example" {
334+
name = "Single-Zone_1GB"
335+
cloud_provider = "AWS"
336+
region = "eu-west-1"
337+
}
338+
339+
data "rediscloud_essentials_database" "example" {
340+
subscription_id = rediscloud_essentials_subscription.example.id
341+
name = rediscloud_essentials_database.example.name
342+
}
343+
344+
resource "rediscloud_essentials_subscription" "example" {
345+
name = "%s"
346+
plan_id = data.rediscloud_essentials_plan.example.id
347+
payment_method_id = data.rediscloud_payment_method.card.id
348+
}
349+
350+
resource "rediscloud_essentials_database" "example" {
351+
subscription_id = rediscloud_essentials_subscription.example.id
352+
name = "%s"
353+
enable_default_user = true
354+
password = "j43589rhe39f"
355+
356+
data_persistence = "none"
357+
replication = false
358+
359+
alert {
360+
name = "throughput-higher-than"
361+
value = 80
362+
}
363+
tags = {
364+
"envaaaa" = "qaaaa"
365+
}
366+
}
367+
`
368+
369+
const testAccResourceRedisCloudEssentialsDatabaseDisableDefaultUserUpdate = `
370+
data "rediscloud_payment_method" "card" {
371+
card_type = "Visa"
372+
}
373+
374+
data "rediscloud_essentials_plan" "example" {
375+
name = "Single-Zone_1GB"
376+
cloud_provider = "AWS"
377+
region = "eu-west-1"
378+
}
379+
380+
data "rediscloud_essentials_database" "example" {
381+
subscription_id = rediscloud_essentials_subscription.example.id
382+
name = rediscloud_essentials_database.example.name
383+
}
384+
385+
resource "rediscloud_essentials_subscription" "example" {
386+
name = "%s"
387+
plan_id = data.rediscloud_essentials_plan.example.id
388+
payment_method_id = data.rediscloud_payment_method.card.id
389+
}
390+
391+
resource "rediscloud_essentials_database" "example" {
392+
subscription_id = rediscloud_essentials_subscription.example.id
393+
name = "%s"
394+
enable_default_user = false
395+
data_persistence = "none"
396+
replication = false
397+
398+
alert {
399+
name = "throughput-higher-than"
400+
value = 80
401+
}
402+
tags = {
403+
"envaaaa" = "qaaaa"
404+
}
405+
}
406+
`

0 commit comments

Comments
 (0)