@@ -16,6 +16,8 @@ import (
16
16
"github.com/hashicorp/terraform-plugin-testing/terraform"
17
17
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
18
18
"github.com/hashicorp/terraform-provider-aws/internal/conns"
19
+ tfiam "github.com/hashicorp/terraform-provider-aws/internal/service/iam"
20
+ "github.com/hashicorp/terraform-provider-aws/internal/tfresource"
19
21
"github.com/hashicorp/terraform-provider-aws/names"
20
22
)
21
23
@@ -27,7 +29,8 @@ func TestAccIAMAccountAlias_serial(t *testing.T) {
27
29
acctest .CtBasic : testAccAccountAliasDataSource_basic ,
28
30
},
29
31
"Resource" : {
30
- acctest .CtBasic : testAccAccountAlias_basic ,
32
+ acctest .CtBasic : testAccAccountAlias_basic ,
33
+ acctest .CtDisappears : testAccAccountAlias_disappears ,
31
34
},
32
35
}
33
36
@@ -37,7 +40,6 @@ func TestAccIAMAccountAlias_serial(t *testing.T) {
37
40
func testAccAccountAlias_basic (t * testing.T ) {
38
41
ctx := acctest .Context (t )
39
42
resourceName := "aws_iam_account_alias.test"
40
-
41
43
rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
42
44
43
45
resource .Test (t , resource.TestCase {
@@ -64,6 +66,32 @@ func testAccAccountAlias_basic(t *testing.T) {
64
66
})
65
67
}
66
68
69
+ func testAccAccountAlias_disappears (t * testing.T ) {
70
+ ctx := acctest .Context (t )
71
+ resourceName := "aws_iam_account_alias.test"
72
+ rName := sdkacctest .RandomWithPrefix (acctest .ResourcePrefix )
73
+
74
+ resource .Test (t , resource.TestCase {
75
+ PreCheck : func () {
76
+ acctest .PreCheck (ctx , t )
77
+ testAccPreCheckAccountAlias (ctx , t )
78
+ },
79
+ ErrorCheck : acctest .ErrorCheck (t , names .IAMServiceID ),
80
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories ,
81
+ CheckDestroy : testAccCheckAccountAliasDestroy (ctx ),
82
+ Steps : []resource.TestStep {
83
+ {
84
+ Config : testAccAccountAliasConfig_basic (rName ),
85
+ Check : resource .ComposeAggregateTestCheckFunc (
86
+ testAccCheckAccountAliasExists (ctx , resourceName ),
87
+ acctest .CheckResourceDisappears (ctx , acctest .Provider , tfiam .ResourceAccountAlias (), resourceName ),
88
+ ),
89
+ ExpectNonEmptyPlan : true ,
90
+ },
91
+ },
92
+ })
93
+ }
94
+
67
95
func testAccCheckAccountAliasDestroy (ctx context.Context ) resource.TestCheckFunc {
68
96
return func (s * terraform.State ) error {
69
97
conn := acctest .Provider .Meta ().(* conns.AWSClient ).IAMClient (ctx )
@@ -73,21 +101,18 @@ func testAccCheckAccountAliasDestroy(ctx context.Context) resource.TestCheckFunc
73
101
continue
74
102
}
75
103
76
- params := & iam.ListAccountAliasesInput {}
77
-
78
- resp , err := conn .ListAccountAliases (ctx , params )
104
+ var input iam.ListAccountAliasesInput
105
+ _ , err := tfiam .FindAccountAlias (ctx , conn , & input )
79
106
80
- if err != nil {
81
- return fmt . Errorf ( "error reading IAM Account Alias (%s): %w" , rs . Primary . ID , err )
107
+ if tfresource . NotFound ( err ) {
108
+ continue
82
109
}
83
110
84
- if resp = = nil {
85
- return fmt . Errorf ( "error reading IAM Account Alias (%s): empty response" , rs . Primary . ID )
111
+ if err ! = nil {
112
+ return err
86
113
}
87
114
88
- if len (resp .AccountAliases ) > 0 {
89
- return fmt .Errorf ("Bad: Account alias still exists: %q" , rs .Primary .ID )
90
- }
115
+ return fmt .Errorf ("IAM Server Certificate %s still exists" , rs .Primary .ID )
91
116
}
92
117
93
118
return nil
@@ -96,29 +121,17 @@ func testAccCheckAccountAliasDestroy(ctx context.Context) resource.TestCheckFunc
96
121
97
122
func testAccCheckAccountAliasExists (ctx context.Context , n string ) resource.TestCheckFunc {
98
123
return func (s * terraform.State ) error {
99
- rs , ok := s .RootModule ().Resources [n ]
124
+ _ , ok := s .RootModule ().Resources [n ]
100
125
if ! ok {
101
126
return fmt .Errorf ("Not found: %s" , n )
102
127
}
103
128
104
129
conn := acctest .Provider .Meta ().(* conns.AWSClient ).IAMClient (ctx )
105
- params := & iam.ListAccountAliasesInput {}
106
130
107
- resp , err := conn .ListAccountAliases (ctx , params )
131
+ var input iam.ListAccountAliasesInput
132
+ _ , err := tfiam .FindAccountAlias (ctx , conn , & input )
108
133
109
- if err != nil {
110
- return fmt .Errorf ("error reading IAM Account Alias (%s): %w" , rs .Primary .ID , err )
111
- }
112
-
113
- if resp == nil {
114
- return fmt .Errorf ("error reading IAM Account Alias (%s): empty response" , rs .Primary .ID )
115
- }
116
-
117
- if len (resp .AccountAliases ) == 0 {
118
- return fmt .Errorf ("Bad: Account alias %q does not exist" , rs .Primary .ID )
119
- }
120
-
121
- return nil
134
+ return err
122
135
}
123
136
}
124
137
0 commit comments