github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/azurerm/resource_arm_servicebus_topic_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAzureRMServiceBusTopic_basic(t *testing.T) { 14 ri := acctest.RandInt() 15 config := fmt.Sprintf(testAccAzureRMServiceBusTopic_basic, ri, ri, ri) 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testCheckAzureRMServiceBusTopicDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: config, 24 Check: resource.ComposeTestCheckFunc( 25 testCheckAzureRMServiceBusTopicExists("azurerm_servicebus_topic.test"), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func TestAccAzureRMServiceBusTopic_update(t *testing.T) { 33 ri := acctest.RandInt() 34 preConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_basic, ri, ri, ri) 35 postConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_update, ri, ri, ri) 36 37 resource.Test(t, resource.TestCase{ 38 PreCheck: func() { testAccPreCheck(t) }, 39 Providers: testAccProviders, 40 CheckDestroy: testCheckAzureRMServiceBusTopicDestroy, 41 Steps: []resource.TestStep{ 42 resource.TestStep{ 43 Config: preConfig, 44 Check: resource.ComposeTestCheckFunc( 45 testCheckAzureRMServiceBusTopicExists("azurerm_servicebus_topic.test"), 46 ), 47 }, 48 resource.TestStep{ 49 Config: postConfig, 50 Check: resource.ComposeTestCheckFunc( 51 resource.TestCheckResourceAttr( 52 "azurerm_servicebus_topic.test", "enable_batched_operations", "true"), 53 resource.TestCheckResourceAttr( 54 "azurerm_servicebus_topic.test", "enable_express", "true"), 55 ), 56 }, 57 }, 58 }) 59 } 60 61 func TestAccAzureRMServiceBusTopic_enablePartitioningStandard(t *testing.T) { 62 ri := acctest.RandInt() 63 preConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_basic, ri, ri, ri) 64 postConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_enablePartitioningStandard, ri, ri, ri) 65 66 resource.Test(t, resource.TestCase{ 67 PreCheck: func() { testAccPreCheck(t) }, 68 Providers: testAccProviders, 69 CheckDestroy: testCheckAzureRMServiceBusTopicDestroy, 70 Steps: []resource.TestStep{ 71 resource.TestStep{ 72 Config: preConfig, 73 Check: resource.ComposeTestCheckFunc( 74 testCheckAzureRMServiceBusTopicExists("azurerm_servicebus_topic.test"), 75 ), 76 }, 77 resource.TestStep{ 78 Config: postConfig, 79 Check: resource.ComposeTestCheckFunc( 80 resource.TestCheckResourceAttr( 81 "azurerm_servicebus_topic.test", "enable_partitioning", "true"), 82 // Ensure size is read back in it's original value and not the x16 value returned by Azure 83 resource.TestCheckResourceAttr( 84 "azurerm_servicebus_topic.test", "max_size_in_megabytes", "5120"), 85 ), 86 }, 87 }, 88 }) 89 } 90 91 func TestAccAzureRMServiceBusTopic_enablePartitioningPremium(t *testing.T) { 92 ri := acctest.RandInt() 93 preConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_basic, ri, ri, ri) 94 postConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_enablePartitioningPremium, ri, ri, ri) 95 96 resource.Test(t, resource.TestCase{ 97 PreCheck: func() { testAccPreCheck(t) }, 98 Providers: testAccProviders, 99 CheckDestroy: testCheckAzureRMServiceBusTopicDestroy, 100 Steps: []resource.TestStep{ 101 resource.TestStep{ 102 Config: preConfig, 103 Check: resource.ComposeTestCheckFunc( 104 testCheckAzureRMServiceBusTopicExists("azurerm_servicebus_topic.test"), 105 ), 106 }, 107 resource.TestStep{ 108 Config: postConfig, 109 Check: resource.ComposeTestCheckFunc( 110 resource.TestCheckResourceAttr( 111 "azurerm_servicebus_topic.test", "enable_partitioning", "true"), 112 resource.TestCheckResourceAttr( 113 "azurerm_servicebus_topic.test", "max_size_in_megabytes", "81920"), 114 ), 115 }, 116 }, 117 }) 118 } 119 120 func TestAccAzureRMServiceBusTopic_enableDuplicateDetection(t *testing.T) { 121 ri := acctest.RandInt() 122 preConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_basic, ri, ri, ri) 123 postConfig := fmt.Sprintf(testAccAzureRMServiceBusTopic_enableDuplicateDetection, ri, ri, ri) 124 125 resource.Test(t, resource.TestCase{ 126 PreCheck: func() { testAccPreCheck(t) }, 127 Providers: testAccProviders, 128 CheckDestroy: testCheckAzureRMServiceBusTopicDestroy, 129 Steps: []resource.TestStep{ 130 resource.TestStep{ 131 Config: preConfig, 132 Check: resource.ComposeTestCheckFunc( 133 testCheckAzureRMServiceBusTopicExists("azurerm_servicebus_topic.test"), 134 ), 135 }, 136 resource.TestStep{ 137 Config: postConfig, 138 Check: resource.ComposeTestCheckFunc( 139 resource.TestCheckResourceAttr( 140 "azurerm_servicebus_topic.test", "requires_duplicate_detection", "true"), 141 ), 142 }, 143 }, 144 }) 145 } 146 147 func testCheckAzureRMServiceBusTopicDestroy(s *terraform.State) error { 148 client := testAccProvider.Meta().(*ArmClient).serviceBusTopicsClient 149 150 for _, rs := range s.RootModule().Resources { 151 if rs.Type != "azurerm_servicebus_topic" { 152 continue 153 } 154 155 name := rs.Primary.Attributes["name"] 156 namespaceName := rs.Primary.Attributes["namespace_name"] 157 resourceGroup := rs.Primary.Attributes["resource_group_name"] 158 159 resp, err := client.Get(resourceGroup, namespaceName, name) 160 if err != nil { 161 if resp.StatusCode == http.StatusNotFound { 162 return nil 163 } 164 return err 165 } 166 167 if resp.StatusCode != http.StatusNotFound { 168 return fmt.Errorf("ServiceBus Topic still exists:\n%+v", resp.TopicProperties) 169 } 170 } 171 172 return nil 173 } 174 175 func testCheckAzureRMServiceBusTopicExists(name string) resource.TestCheckFunc { 176 return func(s *terraform.State) error { 177 // Ensure we have enough information in state to look up in API 178 rs, ok := s.RootModule().Resources[name] 179 if !ok { 180 return fmt.Errorf("Not found: %s", name) 181 } 182 183 topicName := rs.Primary.Attributes["name"] 184 namespaceName := rs.Primary.Attributes["namespace_name"] 185 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 186 if !hasResourceGroup { 187 return fmt.Errorf("Bad: no resource group found in state for topic: %s", topicName) 188 } 189 190 client := testAccProvider.Meta().(*ArmClient).serviceBusTopicsClient 191 192 resp, err := client.Get(resourceGroup, namespaceName, topicName) 193 if err != nil { 194 return fmt.Errorf("Bad: Get on serviceBusTopicsClient: %+v", err) 195 } 196 197 if resp.StatusCode == http.StatusNotFound { 198 return fmt.Errorf("Bad: Topic %q (resource group: %q) does not exist", namespaceName, resourceGroup) 199 } 200 201 return nil 202 } 203 } 204 205 var testAccAzureRMServiceBusTopic_basic = ` 206 resource "azurerm_resource_group" "test" { 207 name = "acctestRG-%d" 208 location = "West US" 209 } 210 211 resource "azurerm_servicebus_namespace" "test" { 212 name = "acctestservicebusnamespace-%d" 213 location = "West US" 214 resource_group_name = "${azurerm_resource_group.test.name}" 215 sku = "standard" 216 } 217 218 resource "azurerm_servicebus_topic" "test" { 219 name = "acctestservicebustopic-%d" 220 location = "West US" 221 namespace_name = "${azurerm_servicebus_namespace.test.name}" 222 resource_group_name = "${azurerm_resource_group.test.name}" 223 } 224 ` 225 226 var testAccAzureRMServiceBusTopic_basicPremium = ` 227 resource "azurerm_resource_group" "test" { 228 name = "acctestRG-%d" 229 location = "West US" 230 } 231 232 resource "azurerm_servicebus_namespace" "test" { 233 name = "acctestservicebusnamespace-%d" 234 location = "West US" 235 resource_group_name = "${azurerm_resource_group.test.name}" 236 sku = "premium" 237 } 238 239 resource "azurerm_servicebus_topic" "test" { 240 name = "acctestservicebustopic-%d" 241 location = "West US" 242 namespace_name = "${azurerm_servicebus_namespace.test.name}" 243 resource_group_name = "${azurerm_resource_group.test.name}" 244 } 245 ` 246 247 var testAccAzureRMServiceBusTopic_update = ` 248 resource "azurerm_resource_group" "test" { 249 name = "acctestRG-%d" 250 location = "West US" 251 } 252 253 resource "azurerm_servicebus_namespace" "test" { 254 name = "acctestservicebusnamespace-%d" 255 location = "West US" 256 resource_group_name = "${azurerm_resource_group.test.name}" 257 sku = "standard" 258 } 259 260 resource "azurerm_servicebus_topic" "test" { 261 name = "acctestservicebustopic-%d" 262 location = "West US" 263 namespace_name = "${azurerm_servicebus_namespace.test.name}" 264 resource_group_name = "${azurerm_resource_group.test.name}" 265 enable_batched_operations = true 266 enable_express = true 267 } 268 ` 269 270 var testAccAzureRMServiceBusTopic_enablePartitioningStandard = ` 271 resource "azurerm_resource_group" "test" { 272 name = "acctestRG-%d" 273 location = "West US" 274 } 275 276 resource "azurerm_servicebus_namespace" "test" { 277 name = "acctestservicebusnamespace-%d" 278 location = "West US" 279 resource_group_name = "${azurerm_resource_group.test.name}" 280 sku = "standard" 281 } 282 283 resource "azurerm_servicebus_topic" "test" { 284 name = "acctestservicebustopic-%d" 285 location = "West US" 286 namespace_name = "${azurerm_servicebus_namespace.test.name}" 287 resource_group_name = "${azurerm_resource_group.test.name}" 288 enable_partitioning = true 289 max_size_in_megabytes = 5120 290 } 291 ` 292 293 var testAccAzureRMServiceBusTopic_enablePartitioningPremium = ` 294 resource "azurerm_resource_group" "test" { 295 name = "acctestRG-%d" 296 location = "West US" 297 } 298 299 resource "azurerm_servicebus_namespace" "test" { 300 name = "acctestservicebusnamespace-%d" 301 location = "West US" 302 resource_group_name = "${azurerm_resource_group.test.name}" 303 sku = "premium" 304 } 305 306 resource "azurerm_servicebus_topic" "test" { 307 name = "acctestservicebustopic-%d" 308 location = "West US" 309 namespace_name = "${azurerm_servicebus_namespace.test.name}" 310 resource_group_name = "${azurerm_resource_group.test.name}" 311 enable_partitioning = true 312 max_size_in_megabytes = 81920 313 } 314 ` 315 316 var testAccAzureRMServiceBusTopic_enableDuplicateDetection = ` 317 resource "azurerm_resource_group" "test" { 318 name = "acctestRG-%d" 319 location = "West US" 320 } 321 322 resource "azurerm_servicebus_namespace" "test" { 323 name = "acctestservicebusnamespace-%d" 324 location = "West US" 325 resource_group_name = "${azurerm_resource_group.test.name}" 326 sku = "standard" 327 } 328 329 resource "azurerm_servicebus_topic" "test" { 330 name = "acctestservicebustopic-%d" 331 location = "West US" 332 namespace_name = "${azurerm_servicebus_namespace.test.name}" 333 resource_group_name = "${azurerm_resource_group.test.name}" 334 requires_duplicate_detection = true 335 } 336 `