@@ -54,6 +54,28 @@ func TestAccBackupVaultPolicy_basic(t *testing.T) {
54
54
})
55
55
}
56
56
57
+ func TestAccBackupVaultPolicy_eventualConsistency (t * testing.T ) {
58
+ ctx := acctest .Context (t )
59
+ var vault backup.GetBackupVaultAccessPolicyOutput
60
+ rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
61
+ resourceName := "aws_backup_vault_policy.test"
62
+
63
+ resource .ParallelTest (t , resource.TestCase {
64
+ PreCheck : func () { acctest .PreCheck (ctx , t ); testAccPreCheck (ctx , t ) },
65
+ ErrorCheck : acctest .ErrorCheck (t , backup .EndpointsID ),
66
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
67
+ CheckDestroy : testAccCheckVaultPolicyDestroy (ctx ),
68
+ Steps : []resource.TestStep {
69
+ {
70
+ Config : testAccVaultPolicyConfig_eventualConsistency (rName ),
71
+ Check : resource .ComposeTestCheckFunc (
72
+ testAccCheckVaultPolicyExists (ctx , resourceName , & vault ),
73
+ resource .TestMatchResourceAttr (resourceName , "policy" , regexache .MustCompile ("^{\" Id\" :\" default\" .+" ))),
74
+ },
75
+ },
76
+ })
77
+ }
78
+
57
79
func TestAccBackupVaultPolicy_disappears (t * testing.T ) {
58
80
ctx := acctest .Context (t )
59
81
var vault backup.GetBackupVaultAccessPolicyOutput
@@ -285,3 +307,63 @@ resource "aws_backup_vault_policy" "test" {
285
307
}
286
308
` , rName )
287
309
}
310
+
311
+ func testAccVaultPolicyConfig_eventualConsistency (rName string ) string {
312
+ return acctest .ConfigCompose (
313
+ fmt .Sprintf (`
314
+ data "aws_partition" "current" {}
315
+
316
+ resource "aws_iam_role" "test" {
317
+ name = %[1]q
318
+ assume_role_policy = jsonencode({
319
+ Version = "2012-10-17"
320
+ Statement = [
321
+ {
322
+ Action = "sts:AssumeRole"
323
+ Effect = "Allow"
324
+ Sid = ""
325
+ Principal = {
326
+ Service = "backup.amazonaws.com"
327
+ }
328
+ },
329
+ ]
330
+ })
331
+ }
332
+
333
+ resource "aws_iam_role_policy_attachment" "test" {
334
+ role = aws_iam_role.test.name
335
+ policy_arn = "arn:${data.aws_partition.current.partition}:iam::${data.aws_partition.current.partition}:policy/service-role/AWSBackupServiceRolePolicyForBackup"
336
+ }
337
+
338
+ resource "aws_backup_vault" "test" {
339
+ name = %[1]q
340
+ }
341
+
342
+ resource "aws_backup_vault_policy" "test" {
343
+ backup_vault_name = aws_backup_vault.test.name
344
+
345
+ policy = jsonencode({
346
+ Version = "2012-10-17"
347
+ Id = "default"
348
+ Statement = [{
349
+ Sid = "default"
350
+ Effect = "Allow"
351
+ Principal = {
352
+ AWS = "${aws_iam_role.test.arn}"
353
+ }
354
+ Action = [
355
+ "backup:DescribeBackupVault",
356
+ "backup:DeleteBackupVault",
357
+ "backup:PutBackupVaultAccessPolicy",
358
+ "backup:DeleteBackupVaultAccessPolicy",
359
+ "backup:GetBackupVaultAccessPolicy",
360
+ "backup:StartBackupJob",
361
+ "backup:GetBackupVaultNotifications",
362
+ "backup:PutBackupVaultNotifications",
363
+ ]
364
+ Resource = aws_backup_vault.test.arn
365
+ }]
366
+ })
367
+ }
368
+ ` , rName ))
369
+ }
0 commit comments