github.com/paulmey/terraform@v0.5.2-0.20150519145237-046e9b4c884d/builtin/providers/aws/resource_aws_sqs_queue_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/awslabs/aws-sdk-go/aws" 8 "github.com/awslabs/aws-sdk-go/service/sqs" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAWSSQSQueue(t *testing.T) { 14 resource.Test(t, resource.TestCase{ 15 PreCheck: func() { testAccPreCheck(t) }, 16 Providers: testAccProviders, 17 CheckDestroy: testAccCheckAWSSQSQueueDestroy, 18 Steps: []resource.TestStep{ 19 resource.TestStep{ 20 Config: testAccAWSSQSConfigWithDefaults, 21 Check: resource.ComposeTestCheckFunc( 22 testAccCheckAWSSQSExistsWithDefaults("aws_sqs_queue.queue-with-defaults"), 23 ), 24 }, 25 resource.TestStep{ 26 Config: testAccAWSSQSConfigWithOverrides, 27 Check: resource.ComposeTestCheckFunc( 28 testAccCheckAWSSQSExistsWithOverrides("aws_sqs_queue.queue-with-overrides"), 29 ), 30 }, 31 }, 32 }) 33 } 34 35 36 func testAccCheckAWSSQSQueueDestroy(s *terraform.State) error { 37 conn := testAccProvider.Meta().(*AWSClient).sqsconn 38 39 for _, rs := range s.RootModule().Resources { 40 if rs.Type != "aws_sqs_queue" { 41 continue 42 } 43 44 // Check if queue exists by checking for its attributes 45 params := &sqs.GetQueueAttributesInput{ 46 QueueURL: aws.String(rs.Primary.ID), 47 } 48 _, err := conn.GetQueueAttributes(params) 49 if err == nil { 50 return fmt.Errorf("Queue %s still exists. Failing!", rs.Primary.ID) 51 } 52 53 // Verify the error is what we want 54 _, ok := err.(aws.APIError) 55 if !ok { 56 return err 57 } 58 } 59 60 return nil 61 } 62 63 64 func testAccCheckAWSSQSExistsWithDefaults(n string) resource.TestCheckFunc { 65 return func(s *terraform.State) error { 66 rs, ok := s.RootModule().Resources[n] 67 if !ok { 68 return fmt.Errorf("Not found: %s", n) 69 } 70 71 if rs.Primary.ID == "" { 72 return fmt.Errorf("No Queue URL specified!") 73 } 74 75 conn := testAccProvider.Meta().(*AWSClient).sqsconn 76 77 params := &sqs.GetQueueAttributesInput{ 78 QueueURL: aws.String(rs.Primary.ID), 79 AttributeNames: []*string{aws.String("All")}, 80 } 81 resp, err := conn.GetQueueAttributes(params) 82 83 if err != nil { 84 return err 85 } 86 87 // checking if attributes are defaults 88 for k, v := range *resp.Attributes { 89 if k == "VisibilityTimeout" && *v != "30" { 90 return fmt.Errorf("VisibilityTimeout (%s) was not set to 30", *v) 91 } 92 93 if k == "MessageRetentionPeriod" && *v != "345600" { 94 return fmt.Errorf("MessageRetentionPeriod (%s) was not set to 345600", *v) 95 } 96 97 if k == "MaximumMessageSize" && *v != "262144" { 98 return fmt.Errorf("MaximumMessageSize (%s) was not set to 262144", *v) 99 } 100 101 if k == "DelaySeconds" && *v != "0" { 102 return fmt.Errorf("DelaySeconds (%s) was not set to 0", *v) 103 } 104 105 if k == "ReceiveMessageWaitTimeSeconds" && *v != "0" { 106 return fmt.Errorf("ReceiveMessageWaitTimeSeconds (%s) was not set to 0", *v) 107 } 108 } 109 110 return nil 111 } 112 } 113 114 func testAccCheckAWSSQSExistsWithOverrides(n string) resource.TestCheckFunc { 115 return func(s *terraform.State) error { 116 rs, ok := s.RootModule().Resources[n] 117 if !ok { 118 return fmt.Errorf("Not found: %s", n) 119 } 120 121 if rs.Primary.ID == "" { 122 return fmt.Errorf("No Queue URL specified!") 123 } 124 125 conn := testAccProvider.Meta().(*AWSClient).sqsconn 126 127 params := &sqs.GetQueueAttributesInput{ 128 QueueURL: aws.String(rs.Primary.ID), 129 AttributeNames: []*string{aws.String("All")}, 130 } 131 resp, err := conn.GetQueueAttributes(params) 132 133 if err != nil { 134 return err 135 } 136 137 // checking if attributes match our overrides 138 for k, v := range *resp.Attributes { 139 if k == "VisibilityTimeout" && *v != "60" { 140 return fmt.Errorf("VisibilityTimeout (%s) was not set to 60", *v) 141 } 142 143 if k == "MessageRetentionPeriod" && *v != "86400" { 144 return fmt.Errorf("MessageRetentionPeriod (%s) was not set to 86400", *v) 145 } 146 147 if k == "MaximumMessageSize" && *v != "2048" { 148 return fmt.Errorf("MaximumMessageSize (%s) was not set to 2048", *v) 149 } 150 151 if k == "DelaySeconds" && *v != "90" { 152 return fmt.Errorf("DelaySeconds (%s) was not set to 90", *v) 153 } 154 155 if k == "ReceiveMessageWaitTimeSeconds" && *v != "10" { 156 return fmt.Errorf("ReceiveMessageWaitTimeSeconds (%s) was not set to 10", *v) 157 } 158 } 159 160 return nil 161 } 162 } 163 164 const testAccAWSSQSConfigWithDefaults = ` 165 resource "aws_sqs_queue" "queue-with-defaults" { 166 name = "test-sqs-queue-with-defaults" 167 } 168 ` 169 170 const testAccAWSSQSConfigWithOverrides = ` 171 resource "aws_sqs_queue" "queue-with-overrides" { 172 name = "test-sqs-queue-with-overrides" 173 delay_seconds = 90 174 max_message_size = 2048 175 message_retention_seconds = 86400 176 receive_wait_time_seconds = 10 177 visibility_timeout_seconds = 60 178 } 179 `