Skip to content

Commit

Permalink
Add test for recreation
Browse files Browse the repository at this point in the history
  • Loading branch information
cgetzen committed Sep 7, 2020
1 parent 7073583 commit 57a4373
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 10 deletions.
63 changes: 54 additions & 9 deletions aws/resource_aws_config_remediation_configuration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,16 @@ func testAccConfigRemediationConfiguration_basic(t *testing.T) {
var rc configservice.RemediationConfiguration
resourceName := "aws_config_remediation_configuration.foo"
rInt := acctest.RandInt()
expectedName := fmt.Sprintf("tf-acc-test-%d", rInt)
prefix := "Original"
expectedName := fmt.Sprintf("%s-tf-acc-test-%d", prefix, rInt)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckConfigRemediationConfigurationDestroy,
Steps: []resource.TestStep{
{
Config: testAccConfigRemediationConfigurationConfig_basic(rInt),
Config: testAccConfigRemediationConfigurationConfig(prefix, rInt),
Check: resource.ComposeTestCheckFunc(
testAccCheckConfigRemediationConfigurationExists(resourceName, &rc),
resource.TestCheckResourceAttr(resourceName, "config_rule_name", expectedName),
Expand All @@ -45,14 +46,15 @@ func testAccConfigRemediationConfiguration_disappears(t *testing.T) {
var rc configservice.RemediationConfiguration
resourceName := "aws_config_remediation_configuration.test"
rInt := acctest.RandInt()
prefix := "original"

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckConfigRemediationConfigurationDestroy,
Steps: []resource.TestStep{
{
Config: testAccConfigRemediationConfigurationConfig_basic(rInt),
Config: testAccConfigRemediationConfigurationConfig(prefix, rInt),
Check: resource.ComposeTestCheckFunc(
testAccCheckConfigRemediationConfigurationExists(resourceName, &rc),
testAccCheckResourceDisappears(testAccProvider, resourceAwsConfigRemediationConfiguration(), resourceName),
Expand All @@ -63,6 +65,39 @@ func testAccConfigRemediationConfiguration_disappears(t *testing.T) {
})
}

func testAccConfigRemediationConfiguration_recreates(t *testing.T) {
var original configservice.RemediationConfiguration
var updated configservice.RemediationConfiguration
resourceName := "aws_config_remediation_configuration.test"
rInt := acctest.RandInt()

originalName := "Original"
updatedName := "Updated"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckConfigRemediationConfigurationDestroy,
Steps: []resource.TestStep{
{
Config: testAccConfigRemediationConfigurationConfig(originalName, rInt),
Check: resource.ComposeTestCheckFunc(
testAccCheckConfigRemediationConfigurationExists(resourceName, &original),
resource.TestCheckResourceAttr(resourceName, "config_rule_name", fmt.Sprintf("%s-tf-acc-test-%d", originalName, rInt)),
),
},
{
Config: testAccConfigRemediationConfigurationConfig(updatedName, rInt),
Check: resource.ComposeTestCheckFunc(
testAccCheckConfigRemediationConfigurationExists(resourceName, &updated),
testAccCheckConfigRemediationConfigurationRecreated(t, &original, &updated),
resource.TestCheckResourceAttr(resourceName, "config_rule_name", fmt.Sprintf("%s-tf-acc-test-%d", updatedName, rInt)),
),
},
},
})
}

func testAccCheckConfigRemediationConfigurationExists(n string, obj *configservice.RemediationConfiguration) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
Expand Down Expand Up @@ -115,7 +150,7 @@ func testAccCheckConfigRemediationConfigurationDestroy(s *terraform.State) error
return nil
}

func testAccConfigRemediationConfigurationConfig_basic(randInt int) string {
func testAccConfigRemediationConfigurationConfig(namePrefix string, randInt int) string {
return fmt.Sprintf(`
resource "aws_config_remediation_configuration" "test" {
config_rule_name = aws_config_config_rule.test.name
Expand Down Expand Up @@ -149,7 +184,7 @@ resource "aws_sns_topic" "test" {
}
resource "aws_config_config_rule" "test" {
name = "tf-acc-test-%d"
name = "%[1]s-tf-acc-test-%[2]d"
source {
owner = "AWS"
Expand All @@ -160,12 +195,12 @@ resource "aws_config_config_rule" "test" {
}
resource "aws_config_configuration_recorder" "test" {
name = "tf-acc-test-%[1]d"
name = "%[1]s-tf-acc-test-%[2]d"
role_arn = aws_iam_role.r.arn
}
resource "aws_iam_role" "test" {
name = "tf-acc-test-awsconfig-%[1]d"
name = "%[1]s-tf-acc-test-awsconfig-%[2]d"
assume_role_policy = <<EOF
{
Expand All @@ -185,7 +220,7 @@ EOF
}
resource "aws_iam_role_policy" "test" {
name = "tf-acc-test-awsconfig-%[1]d"
name = "%[1]s-tf-acc-test-awsconfig-%[2]d"
role = aws_iam_role.test.id
policy = <<EOF
Expand All @@ -202,5 +237,15 @@ resource "aws_iam_role_policy" "test" {
}
EOF
}
`, randInt)
`, namePrefix, randInt)
}

func testAccCheckConfigRemediationConfigurationRecreated(t *testing.T,
before, after *configservice.RemediationConfiguration) resource.TestCheckFunc {
return func(s *terraform.State) error {
if *before.Arn == *after.Arn {
t.Fatalf("AWS Config Remediation has not been recreated")
}
return nil
}
}
4 changes: 3 additions & 1 deletion aws/resource_aws_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,9 @@ func TestAccAWSConfig_serial(t *testing.T) {
"TagValueScope": testAccConfigOrganizationManagedRule_TagValueScope,
},
"RemediationConfiguration": {
"basic": testAccConfigRemediationConfiguration_basic,
"basic": testAccConfigRemediationConfiguration_basic,
"disappears": testAccConfigRemediationConfiguration_disappears,
"recreates": testAccConfigRemediationConfiguration_recreates,
},
}

Expand Down

0 comments on commit 57a4373

Please sign in to comment.