Skip to content

Commit cf0d497

Browse files
committed
Add an acctest to confirm feature_name is not always required
1 parent 8604e30 commit cf0d497

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

internal/service/rds/cluster_role_association_test.go

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,38 @@ func TestAccRDSClusterRoleAssociation_basic(t *testing.T) {
5252
})
5353
}
5454

55+
func TestAccRDSClusterRoleAssociation_mysqlWithoutFeatureName(t *testing.T) {
56+
ctx := acctest.Context(t)
57+
var dbClusterRole types.DBClusterRole
58+
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
59+
dbClusterResourceName := "aws_rds_cluster.test"
60+
iamRoleResourceName := "aws_iam_role.test"
61+
resourceName := "aws_rds_cluster_role_association.test"
62+
63+
resource.ParallelTest(t, resource.TestCase{
64+
PreCheck: func() { acctest.PreCheck(ctx, t) },
65+
ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID),
66+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
67+
CheckDestroy: testAccCheckClusterRoleAssociationDestroy(ctx),
68+
Steps: []resource.TestStep{
69+
{
70+
Config: testAccClusterRoleAssociationConfig_mysqlWithoutFeatureName(rName),
71+
Check: resource.ComposeTestCheckFunc(
72+
testAccCheckClusterRoleAssociationExists(ctx, resourceName, &dbClusterRole),
73+
resource.TestCheckResourceAttrPair(resourceName, "db_cluster_identifier", dbClusterResourceName, names.AttrID),
74+
resource.TestCheckResourceAttr(resourceName, "feature_name", ""),
75+
resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, iamRoleResourceName, names.AttrARN),
76+
),
77+
},
78+
{
79+
ResourceName: resourceName,
80+
ImportState: true,
81+
ImportStateVerify: true,
82+
},
83+
},
84+
})
85+
}
86+
5587
func TestAccRDSClusterRoleAssociation_disappears(t *testing.T) {
5688
ctx := acctest.Context(t)
5789
var dbClusterRole types.DBClusterRole
@@ -214,3 +246,44 @@ data "aws_iam_policy_document" "rds_assume_role_policy" {
214246
}
215247
`, rName))
216248
}
249+
250+
func testAccClusterRoleAssociationConfig_mysqlWithoutFeatureName(rName string) string {
251+
return acctest.ConfigCompose(
252+
acctest.ConfigAvailableAZsNoOptIn(),
253+
fmt.Sprintf(`
254+
resource "aws_rds_cluster_role_association" "test" {
255+
db_cluster_identifier = aws_rds_cluster.test.id
256+
role_arn = aws_iam_role.test.arn
257+
}
258+
259+
resource "aws_rds_cluster" "test" {
260+
cluster_identifier = %[1]q
261+
engine = "aurora-mysql"
262+
availability_zones = [data.aws_availability_zones.available.names[0], data.aws_availability_zones.available.names[1], data.aws_availability_zones.available.names[2]]
263+
database_name = "mydb"
264+
master_username = "foo"
265+
master_password = "foobarfoobarfoobar"
266+
skip_final_snapshot = true
267+
}
268+
269+
resource "aws_iam_role" "test" {
270+
assume_role_policy = data.aws_iam_policy_document.rds_assume_role_policy.json
271+
name = %[1]q
272+
273+
# ensure IAM role is created just before association to exercise IAM eventual consistency
274+
depends_on = [aws_rds_cluster.test]
275+
}
276+
277+
data "aws_iam_policy_document" "rds_assume_role_policy" {
278+
statement {
279+
actions = ["sts:AssumeRole"]
280+
effect = "Allow"
281+
282+
principals {
283+
identifiers = ["rds.amazonaws.com"]
284+
type = "Service"
285+
}
286+
}
287+
}
288+
`, rName))
289+
}

0 commit comments

Comments
 (0)