github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/azurerm/resource_arm_servicebus_namespace_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "net/http" 6 "regexp" 7 "testing" 8 9 "github.com/hashicorp/terraform/helper/acctest" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestAccAzureRMServiceBusNamespaceCapacity_validation(t *testing.T) { 15 cases := []struct { 16 Value int 17 ErrCount int 18 }{ 19 { 20 Value: 17, 21 ErrCount: 1, 22 }, 23 { 24 Value: 1, 25 ErrCount: 0, 26 }, 27 { 28 Value: 2, 29 ErrCount: 0, 30 }, 31 { 32 Value: 4, 33 ErrCount: 0, 34 }, 35 } 36 37 for _, tc := range cases { 38 _, errors := validateServiceBusNamespaceCapacity(tc.Value, "azurerm_servicebus_namespace") 39 40 if len(errors) != tc.ErrCount { 41 t.Fatalf("Expected the Azure RM ServiceBus Namespace Capacity to trigger a validation error") 42 } 43 } 44 } 45 46 func TestAccAzureRMServiceBusNamespaceSku_validation(t *testing.T) { 47 cases := []struct { 48 Value string 49 ErrCount int 50 }{ 51 { 52 Value: "Basic", 53 ErrCount: 0, 54 }, 55 { 56 Value: "Standard", 57 ErrCount: 0, 58 }, 59 { 60 Value: "Premium", 61 ErrCount: 0, 62 }, 63 { 64 Value: "Random", 65 ErrCount: 1, 66 }, 67 } 68 69 for _, tc := range cases { 70 _, errors := validateServiceBusNamespaceSku(tc.Value, "azurerm_servicebus_namespace") 71 72 if len(errors) != tc.ErrCount { 73 t.Fatalf("Expected the Azure RM ServiceBus Namespace Sku to trigger a validation error") 74 } 75 } 76 } 77 78 func TestAccAzureRMServiceBusNamespace_basic(t *testing.T) { 79 80 ri := acctest.RandInt() 81 config := fmt.Sprintf(testAccAzureRMServiceBusNamespace_basic, ri, ri) 82 83 resource.Test(t, resource.TestCase{ 84 PreCheck: func() { testAccPreCheck(t) }, 85 Providers: testAccProviders, 86 CheckDestroy: testCheckAzureRMServiceBusNamespaceDestroy, 87 Steps: []resource.TestStep{ 88 resource.TestStep{ 89 Config: config, 90 Check: resource.ComposeTestCheckFunc( 91 testCheckAzureRMServiceBusNamespaceExists("azurerm_servicebus_namespace.test"), 92 ), 93 }, 94 }, 95 }) 96 } 97 98 func TestAccAzureRMServiceBusNamespace_readDefaultKeys(t *testing.T) { 99 ri := acctest.RandInt() 100 config := fmt.Sprintf(testAccAzureRMServiceBusNamespace_basic, ri, ri) 101 102 resource.Test(t, resource.TestCase{ 103 PreCheck: func() { testAccPreCheck(t) }, 104 Providers: testAccProviders, 105 CheckDestroy: testCheckAzureRMServiceBusNamespaceDestroy, 106 Steps: []resource.TestStep{ 107 resource.TestStep{ 108 Config: config, 109 Check: resource.ComposeTestCheckFunc( 110 testCheckAzureRMServiceBusNamespaceExists("azurerm_servicebus_namespace.test"), 111 resource.TestMatchResourceAttr( 112 "azurerm_servicebus_namespace.test", "default_primary_connection_string", regexp.MustCompile("Endpoint=.+")), 113 resource.TestMatchResourceAttr( 114 "azurerm_servicebus_namespace.test", "default_secondary_connection_string", regexp.MustCompile("Endpoint=.+")), 115 resource.TestMatchResourceAttr( 116 "azurerm_servicebus_namespace.test", "default_primary_key", regexp.MustCompile(".+")), 117 resource.TestMatchResourceAttr( 118 "azurerm_servicebus_namespace.test", "default_secondary_key", regexp.MustCompile(".+")), 119 ), 120 }, 121 }, 122 }) 123 } 124 125 func TestAccAzureRMServiceBusNamespace_NonStandardCasing(t *testing.T) { 126 127 ri := acctest.RandInt() 128 config := testAccAzureRMServiceBusNamespaceNonStandardCasing(ri) 129 130 resource.Test(t, resource.TestCase{ 131 PreCheck: func() { testAccPreCheck(t) }, 132 Providers: testAccProviders, 133 CheckDestroy: testCheckAzureRMServiceBusNamespaceDestroy, 134 Steps: []resource.TestStep{ 135 resource.TestStep{ 136 Config: config, 137 Check: resource.ComposeTestCheckFunc( 138 testCheckAzureRMServiceBusNamespaceExists("azurerm_servicebus_namespace.test"), 139 ), 140 }, 141 resource.TestStep{ 142 Config: config, 143 PlanOnly: true, 144 ExpectNonEmptyPlan: false, 145 }, 146 }, 147 }) 148 } 149 150 func testCheckAzureRMServiceBusNamespaceDestroy(s *terraform.State) error { 151 conn := testAccProvider.Meta().(*ArmClient).serviceBusNamespacesClient 152 153 for _, rs := range s.RootModule().Resources { 154 if rs.Type != "azurerm_servicebus_namespace" { 155 continue 156 } 157 158 name := rs.Primary.Attributes["name"] 159 resourceGroup := rs.Primary.Attributes["resource_group_name"] 160 161 resp, err := conn.Get(resourceGroup, name) 162 163 if err != nil { 164 return nil 165 } 166 167 if resp.StatusCode != http.StatusNotFound { 168 return fmt.Errorf("ServiceBus Namespace still exists:\n%+v", resp) 169 } 170 } 171 172 return nil 173 } 174 175 func testCheckAzureRMServiceBusNamespaceExists(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 namespaceName := rs.Primary.Attributes["name"] 184 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 185 if !hasResourceGroup { 186 return fmt.Errorf("Bad: no resource group found in state for Service Bus Namespace: %s", namespaceName) 187 } 188 189 conn := testAccProvider.Meta().(*ArmClient).serviceBusNamespacesClient 190 191 resp, err := conn.Get(resourceGroup, namespaceName) 192 if err != nil { 193 return fmt.Errorf("Bad: Get on serviceBusNamespacesClient: %+v", err) 194 } 195 196 if resp.StatusCode == http.StatusNotFound { 197 return fmt.Errorf("Bad: Service Bus Namespace %q (resource group: %q) does not exist", namespaceName, resourceGroup) 198 } 199 200 return nil 201 } 202 } 203 204 var testAccAzureRMServiceBusNamespace_basic = ` 205 resource "azurerm_resource_group" "test" { 206 name = "acctestRG-%d" 207 location = "West US" 208 } 209 resource "azurerm_servicebus_namespace" "test" { 210 name = "acctestservicebusnamespace-%d" 211 location = "West US" 212 resource_group_name = "${azurerm_resource_group.test.name}" 213 sku = "basic" 214 } 215 ` 216 217 func testAccAzureRMServiceBusNamespaceNonStandardCasing(ri int) string { 218 return fmt.Sprintf(` 219 resource "azurerm_resource_group" "test" { 220 name = "acctestRG-%d" 221 location = "West US" 222 } 223 resource "azurerm_servicebus_namespace" "test" { 224 name = "acctestservicebusnamespace-%d" 225 location = "West US" 226 resource_group_name = "${azurerm_resource_group.test.name}" 227 sku = "Basic" 228 } 229 `, ri, ri) 230 }