@@ -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+
5587func 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