Skip to content

Commit 0b1b4c6

Browse files
Sharon NamSharon Nam
Sharon Nam
authored and
Sharon Nam
committed
add test
1 parent 912fb6f commit 0b1b4c6

File tree

2 files changed

+67
-3
lines changed

2 files changed

+67
-3
lines changed

internal/service/backup/vault_policy.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,15 @@ func resourceVaultPolicyPut(ctx context.Context, d *schema.ResourceData, meta in
7575
Policy: aws.String(policy),
7676
}
7777

78-
outputRaw, err := tfresource.RetryWhenAWSErrMessageContains(ctx, iamPropagationTimeout,
78+
_, err = tfresource.RetryWhenAWSErrMessageContains(ctx, iamPropagationTimeout,
7979
func() (interface{}, error) {
8080
return conn.PutBackupVaultAccessPolicyWithContext(ctx, input)
8181
},
8282
errCodeInvalidVaultPolicyConfig, "VaultPolicyyConfig.IamBackupRole",
8383
)
8484

8585
if err != nil {
86-
return sdkdiag.AppendErrorf(diags, "creating Backup Vault Policy (%s): %s", outputRaw.(d.)
87-
, err)
86+
return sdkdiag.AppendErrorf(diags, "creating Backup Vault Policy (%s): %s", name, err)
8887
}
8988

9089
d.SetId(name)

internal/service/backup/vault_policy_test.go

+65
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,41 @@ func TestAccBackupVaultPolicy_basic(t *testing.T) {
5454
})
5555
}
5656

57+
func TestAccBackupVaultPolicy_eventual_consistency(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_eventual_consistency(rName),
71+
Check: resource.ComposeTestCheckFunc(
72+
testAccCheckVaultPolicyExists(ctx, resourceName, &vault),
73+
resource.TestMatchResourceAttr(resourceName, "policy", regexache.MustCompile("^{\"Id\":\"default\".+"))),
74+
},
75+
{
76+
ResourceName: resourceName,
77+
ImportState: true,
78+
ImportStateVerify: true,
79+
},
80+
{
81+
Config: testAccVaultPolicyConfig_updated(rName),
82+
Check: resource.ComposeTestCheckFunc(
83+
testAccCheckVaultPolicyExists(ctx, resourceName, &vault),
84+
resource.TestMatchResourceAttr(resourceName, "policy", regexache.MustCompile("^{\"Id\":\"default\".+")),
85+
resource.TestMatchResourceAttr(resourceName, "policy", regexache.MustCompile("backup:ListRecoveryPointsByBackupVault")),
86+
),
87+
},
88+
},
89+
})
90+
}
91+
5792
func TestAccBackupVaultPolicy_disappears(t *testing.T) {
5893
ctx := acctest.Context(t)
5994
var vault backup.GetBackupVaultAccessPolicyOutput
@@ -285,3 +320,33 @@ resource "aws_backup_vault_policy" "test" {
285320
}
286321
`, rName)
287322
}
323+
324+
func testAccVaultPolicyConfig_eventual_consistency(rName string) string {
325+
return acctest.ConfigCompose(
326+
testAccVaultPolicyConfig_basic(rName),
327+
fmt.Sprintf(`
328+
data "aws_partition" "current" {}
329+
330+
resource "aws_iam_role" "test" {
331+
name = %[1]q
332+
assume_role_policy = jsonencode({
333+
Version = "2012-10-17"
334+
Statement = [
335+
{
336+
Action = "sts:AssumeRole"
337+
Effect = "Allow"
338+
Sid = ""
339+
Principal = {
340+
Service = "backup.amazonaws.com"
341+
}
342+
},
343+
]
344+
})
345+
}
346+
347+
resource "aws_iam_role_policy_attachment" "test" {
348+
role = aws_iam_role.test.name
349+
policy_arn = "arn:${data.aws_partition.current.partition}:iam::${data.aws_partition.current.partition}:policy/service-role/AWSBackupServiceRolePolicyForBackup"
350+
}
351+
`, rName))
352+
}

0 commit comments

Comments
 (0)