acceptance test for SNS delivery policy
This commit is contained in:
parent
7c4a242661
commit
1df7e3afad
|
@ -67,6 +67,25 @@ func TestAccAWSSNSTopic_withIAMRole(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccAWSSNSTopic_withDeliveryPolicy(t *testing.T) {
|
||||||
|
expectedPolicy := `{"http":{"defaultHealthyRetryPolicy": {"minDelayTarget": 20,"maxDelayTarget": 20,"numMaxDelayRetries": 0,"numRetries": 3,"numNoDelayRetries": 0,"numMinDelayRetries": 0,"backoffFunction": "linear"},"disableSubscriptionOverrides": false}}`
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
IDRefreshName: "aws_sns_topic.test_topic",
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSSNSTopicDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSSNSTopicConfig_withDeliveryPolicy,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckAWSSNSTopicExists("aws_sns_topic.test_topic"),
|
||||||
|
testAccCheckAWSNSTopicHasDeliveryPolicy("aws_sns_topic.test_topic", expectedPolicy),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckAWSNSTopicHasPolicy(n string, expectedPolicyText string) resource.TestCheckFunc {
|
func testAccCheckAWSNSTopicHasPolicy(n string, expectedPolicyText string) resource.TestCheckFunc {
|
||||||
return func(s *terraform.State) error {
|
return func(s *terraform.State) error {
|
||||||
rs, ok := s.RootModule().Resources[n]
|
rs, ok := s.RootModule().Resources[n]
|
||||||
|
@ -117,6 +136,46 @@ func testAccCheckAWSNSTopicHasPolicy(n string, expectedPolicyText string) resour
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testAccCheckAWSNSTopicHasDeliveryPolicy(n string, expectedPolicyText string) resource.TestCheckFunc {
|
||||||
|
return func(s *terraform.State) error {
|
||||||
|
rs, ok := s.RootModule().Resources[n]
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("Not found: %s", n)
|
||||||
|
}
|
||||||
|
|
||||||
|
if rs.Primary.ID == "" {
|
||||||
|
return fmt.Errorf("No Queue URL specified!")
|
||||||
|
}
|
||||||
|
|
||||||
|
conn := testAccProvider.Meta().(*AWSClient).snsconn
|
||||||
|
|
||||||
|
params := &sns.GetTopicAttributesInput{
|
||||||
|
TopicArn: aws.String(rs.Primary.ID),
|
||||||
|
}
|
||||||
|
resp, err := conn.GetTopicAttributes(params)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var actualPolicyText string
|
||||||
|
for k, v := range resp.Attributes {
|
||||||
|
if k == "DeliveryPolicy" {
|
||||||
|
actualPolicyText = *v
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
equivalent := suppressEquivalentJsonDiffs("", actualPolicyText, expectedPolicyText, nil)
|
||||||
|
|
||||||
|
if !equivalent {
|
||||||
|
return fmt.Errorf("Non-equivalent delivery policy error:\n\nexpected: %s\n\n got: %s\n",
|
||||||
|
expectedPolicyText, actualPolicyText)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckAWSSNSTopicDestroy(s *terraform.State) error {
|
func testAccCheckAWSSNSTopicDestroy(s *terraform.State) error {
|
||||||
conn := testAccProvider.Meta().(*AWSClient).snsconn
|
conn := testAccProvider.Meta().(*AWSClient).snsconn
|
||||||
|
|
||||||
|
@ -244,3 +303,26 @@ resource "aws_sns_topic" "test_topic" {
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
// Test for https://github.com/hashicorp/terraform/issues/14024
|
||||||
|
const testAccAWSSNSTopicConfig_withDeliveryPolicy = `
|
||||||
|
resource "aws_sns_topic" "test_topic" {
|
||||||
|
name = "test_delivery_policy"
|
||||||
|
delivery_policy = <<EOF
|
||||||
|
{
|
||||||
|
"http": {
|
||||||
|
"defaultHealthyRetryPolicy": {
|
||||||
|
"minDelayTarget": 20,
|
||||||
|
"maxDelayTarget": 20,
|
||||||
|
"numRetries": 3,
|
||||||
|
"numMaxDelayRetries": 0,
|
||||||
|
"numNoDelayRetries": 0,
|
||||||
|
"numMinDelayRetries": 0,
|
||||||
|
"backoffFunction": "linear"
|
||||||
|
},
|
||||||
|
"disableSubscriptionOverrides": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
Loading…
Reference in New Issue