@@ -318,6 +318,31 @@ func TestAccRecoveryServicesVault_softDelete(t *testing.T) {
318318 })
319319}
320320
321+ func TestAccRecoveryServicesVault_softDeleteAlwaysOn (t * testing.T ) {
322+ data := acceptance .BuildTestData (t , "azurerm_recovery_services_vault" , "test" )
323+ r := RecoveryServicesVaultResource {}
324+
325+ data .ResourceTest (t , r , []acceptance.TestStep {
326+ {
327+ // Create in an AlwaysON region — provider must not attempt to downgrade
328+ // EnhancedSecurityState or SoftDeleteFeatureState (Azure rejects both).
329+ Config : r .softDeleteAlwaysOnEnabled (data ),
330+ Check : acceptance .ComposeTestCheckFunc (
331+ check .That (data .ResourceName ).ExistsInAzure (r ),
332+ check .That (data .ResourceName ).Key ("soft_delete_enabled" ).HasValue ("true" ),
333+ ),
334+ },
335+ // ImportStep verifies the Read path: AlwaysON state must map to soft_delete_enabled=true
336+ // so there is no perpetual diff after import.
337+ data .ImportStep (),
338+ {
339+ // Attempting to disable soft delete in an AlwaysON region must return a clear error.
340+ Config : r .softDeleteAlwaysOnDisabled (data ),
341+ ExpectError : regexp .MustCompile (`soft delete cannot be disabled for .+: Azure has enforced 'Always On' soft delete in this region` ),
342+ },
343+ })
344+ }
345+
321346func TestAccRecoveryServicesVault_storageModeType (t * testing.T ) {
322347 data := acceptance .BuildTestData (t , "azurerm_recovery_services_vault" , "test" )
323348 r := RecoveryServicesVaultResource {}
@@ -1244,6 +1269,50 @@ resource "azurerm_recovery_services_vault" "test" {
12441269` , data .RandomInteger , data .Locations .Primary , data .RandomInteger )
12451270}
12461271
1272+ func (RecoveryServicesVaultResource ) softDeleteAlwaysOnEnabled (data acceptance.TestData ) string {
1273+ return fmt .Sprintf (`
1274+ provider "azurerm" {
1275+ features {}
1276+ }
1277+
1278+ resource "azurerm_resource_group" "test" {
1279+ name = "acctestRG-recovery-%d"
1280+ location = "australiaeast"
1281+ }
1282+
1283+ resource "azurerm_recovery_services_vault" "test" {
1284+ name = "acctest-Vault-%d"
1285+ location = azurerm_resource_group.test.location
1286+ resource_group_name = azurerm_resource_group.test.name
1287+ sku = "Standard"
1288+
1289+ soft_delete_enabled = true
1290+ }
1291+ ` , data .RandomInteger , data .RandomInteger )
1292+ }
1293+
1294+ func (RecoveryServicesVaultResource ) softDeleteAlwaysOnDisabled (data acceptance.TestData ) string {
1295+ return fmt .Sprintf (`
1296+ provider "azurerm" {
1297+ features {}
1298+ }
1299+
1300+ resource "azurerm_resource_group" "test" {
1301+ name = "acctestRG-recovery-%d"
1302+ location = "australiaeast"
1303+ }
1304+
1305+ resource "azurerm_recovery_services_vault" "test" {
1306+ name = "acctest-Vault-%d"
1307+ location = azurerm_resource_group.test.location
1308+ resource_group_name = azurerm_resource_group.test.name
1309+ sku = "Standard"
1310+
1311+ soft_delete_enabled = false
1312+ }
1313+ ` , data .RandomInteger , data .RandomInteger )
1314+ }
1315+
12471316func (RecoveryServicesVaultResource ) crossRegionRestoreDefault (data acceptance.TestData ) string {
12481317 return fmt .Sprintf (`
12491318provider "azurerm" {
0 commit comments