@@ -368,6 +368,49 @@ func TestAccResourceRedisCloudEssentialsDatabase_RedisVersion(t *testing.T) {
368368 })
369369}
370370
371+ // Test redis_version upgrade - ensures version can be upgraded after database creation
372+ func TestAccResourceRedisCloudEssentialsDatabase_RedisVersionUpgrade (t * testing.T ) {
373+ utils .AccRequiresEnvVar (t , "EXECUTE_TESTS" )
374+
375+ subscriptionName := acctest .RandomWithPrefix (testResourcePrefix )
376+ databaseName := subscriptionName + "-db"
377+ password := "test-password-123!"
378+
379+ const resourceName = "rediscloud_essentials_database.example"
380+
381+ resource .Test (t , resource.TestCase {
382+ PreCheck : func () { testAccPreCheck (t ) },
383+ ProviderFactories : providerFactories ,
384+ CheckDestroy : testAccCheckEssentialsSubscriptionDestroy ,
385+ Steps : []resource.TestStep {
386+ // Step 1: Create database with Redis 7.2
387+ {
388+ Config : getEssentialsDatabaseConfigWithVersion (t , subscriptionName , databaseName , password , "7.2" ),
389+ Check : resource .ComposeAggregateTestCheckFunc (
390+ resource .TestMatchResourceAttr (resourceName , "id" , regexp .MustCompile ("^\\ d+/\\ d+$" )),
391+ resource .TestCheckResourceAttrSet (resourceName , "subscription_id" ),
392+ resource .TestCheckResourceAttrSet (resourceName , "db_id" ),
393+ resource .TestCheckResourceAttr (resourceName , "name" , databaseName ),
394+ resource .TestCheckResourceAttr (resourceName , "redis_version" , "7.2" ),
395+ resource .TestCheckResourceAttr (resourceName , "data_persistence" , "none" ),
396+ ),
397+ },
398+ // Step 2: Upgrade to Redis 7.4 with updated data_persistence
399+ {
400+ Config : getEssentialsDatabaseConfigWithVersionUpdated (t , subscriptionName , databaseName , password , "7.4" ),
401+ Check : resource .ComposeAggregateTestCheckFunc (
402+ resource .TestMatchResourceAttr (resourceName , "id" , regexp .MustCompile ("^\\ d+/\\ d+$" )),
403+ resource .TestCheckResourceAttr (resourceName , "name" , databaseName ),
404+ resource .TestCheckResourceAttr (resourceName , "redis_version" , "7.4" ),
405+ resource .TestCheckResourceAttr (resourceName , "data_persistence" , "aof-every-write" ),
406+ // Verify database is still active and accessible
407+ resource .TestCheckResourceAttrSet (resourceName , "public_endpoint" ),
408+ ),
409+ },
410+ },
411+ })
412+ }
413+
371414const testAccResourceRedisCloudEssentialsDatabaseDisableDefaultUserCreate = `
372415
373416data "rediscloud_payment_method" "card" {
@@ -452,6 +495,18 @@ resource "rediscloud_essentials_database" "example" {
452495}
453496`
454497
498+ // Helper function to load basic essentials database config with version
499+ func getEssentialsDatabaseConfigWithVersion (t * testing.T , subscriptionName , databaseName , password , redisVersion string ) string {
500+ content := utils .GetTestConfig (t , "./essentials/testdata/essentials_database_basic.tf" )
501+ return fmt .Sprintf (content , subscriptionName , databaseName , redisVersion , password )
502+ }
503+
504+ // Helper function to load updated essentials database config with new version
505+ func getEssentialsDatabaseConfigWithVersionUpdated (t * testing.T , subscriptionName , databaseName , password , redisVersion string ) string {
506+ content := utils .GetTestConfig (t , "./essentials/testdata/essentials_database_updated_version.tf" )
507+ return fmt .Sprintf (content , subscriptionName , databaseName , redisVersion , password )
508+ }
509+
455510const testAccResourceRedisCloudEssentialsDatabaseRedisVersion = `
456511
457512data "rediscloud_payment_method" "card" {
0 commit comments