github.com/nathanielks/terraform@v0.6.1-0.20170509030759-13e1a62319dc/builtin/providers/azurerm/resource_arm_sql_database_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/acctest" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 "github.com/jen20/riviera/sql" 11 ) 12 13 func TestResourceAzureRMSqlDatabaseEdition_validation(t *testing.T) { 14 cases := []struct { 15 Value string 16 ErrCount int 17 }{ 18 { 19 Value: "Random", 20 ErrCount: 1, 21 }, 22 { 23 Value: "Basic", 24 ErrCount: 0, 25 }, 26 { 27 Value: "Standard", 28 ErrCount: 0, 29 }, 30 { 31 Value: "Premium", 32 ErrCount: 0, 33 }, 34 { 35 Value: "DataWarehouse", 36 ErrCount: 0, 37 }, 38 } 39 40 for _, tc := range cases { 41 _, errors := validateArmSqlDatabaseEdition(tc.Value, "azurerm_sql_database") 42 43 if len(errors) != tc.ErrCount { 44 t.Fatalf("Expected the Azure RM SQL Database edition to trigger a validation error") 45 } 46 } 47 } 48 49 func TestAccAzureRMSqlDatabase_basic(t *testing.T) { 50 ri := acctest.RandInt() 51 config := fmt.Sprintf(testAccAzureRMSqlDatabase_basic, ri, ri, ri) 52 53 resource.Test(t, resource.TestCase{ 54 PreCheck: func() { testAccPreCheck(t) }, 55 Providers: testAccProviders, 56 CheckDestroy: testCheckAzureRMSqlDatabaseDestroy, 57 Steps: []resource.TestStep{ 58 { 59 Config: config, 60 Check: resource.ComposeTestCheckFunc( 61 testCheckAzureRMSqlDatabaseExists("azurerm_sql_database.test"), 62 ), 63 }, 64 }, 65 }) 66 } 67 68 func TestAccAzureRMSqlDatabase_elasticPool(t *testing.T) { 69 ri := acctest.RandInt() 70 config := fmt.Sprintf(testAccAzureRMSqlDatabase_elasticPool, ri, ri, ri, ri) 71 72 resource.Test(t, resource.TestCase{ 73 PreCheck: func() { testAccPreCheck(t) }, 74 Providers: testAccProviders, 75 CheckDestroy: testCheckAzureRMSqlDatabaseDestroy, 76 Steps: []resource.TestStep{ 77 { 78 Config: config, 79 Check: resource.ComposeTestCheckFunc( 80 testCheckAzureRMSqlDatabaseExists("azurerm_sql_database.test"), 81 resource.TestCheckResourceAttr("azurerm_sql_database.test", "elastic_pool_name", fmt.Sprintf("acctestep%d", ri)), 82 ), 83 }, 84 }, 85 }) 86 } 87 88 func TestAccAzureRMSqlDatabase_withTags(t *testing.T) { 89 ri := acctest.RandInt() 90 preConfig := fmt.Sprintf(testAccAzureRMSqlDatabase_withTags, ri, ri, ri) 91 postConfig := fmt.Sprintf(testAccAzureRMSqlDatabase_withTagsUpdate, ri, ri, ri) 92 93 resource.Test(t, resource.TestCase{ 94 PreCheck: func() { testAccPreCheck(t) }, 95 Providers: testAccProviders, 96 CheckDestroy: testCheckAzureRMSqlDatabaseDestroy, 97 Steps: []resource.TestStep{ 98 { 99 Config: preConfig, 100 Check: resource.ComposeTestCheckFunc( 101 testCheckAzureRMSqlDatabaseExists("azurerm_sql_database.test"), 102 resource.TestCheckResourceAttr( 103 "azurerm_sql_database.test", "tags.%", "2"), 104 ), 105 }, 106 { 107 Config: postConfig, 108 Check: resource.ComposeTestCheckFunc( 109 testCheckAzureRMSqlDatabaseExists("azurerm_sql_database.test"), 110 resource.TestCheckResourceAttr( 111 "azurerm_sql_database.test", "tags.%", "1"), 112 ), 113 }, 114 }, 115 }) 116 } 117 118 func TestAccAzureRMSqlDatabase_datawarehouse(t *testing.T) { 119 ri := acctest.RandInt() 120 config := fmt.Sprintf(testAccAzureRMSqlDatabase_datawarehouse, ri, ri, ri) 121 122 resource.Test(t, resource.TestCase{ 123 PreCheck: func() { testAccPreCheck(t) }, 124 Providers: testAccProviders, 125 CheckDestroy: testCheckAzureRMSqlDatabaseDestroy, 126 Steps: []resource.TestStep{ 127 { 128 Config: config, 129 Check: resource.ComposeTestCheckFunc( 130 testCheckAzureRMSqlDatabaseExists("azurerm_sql_database.test"), 131 ), 132 }, 133 }, 134 }) 135 } 136 137 func testCheckAzureRMSqlDatabaseExists(name string) resource.TestCheckFunc { 138 return func(s *terraform.State) error { 139 140 rs, ok := s.RootModule().Resources[name] 141 if !ok { 142 return fmt.Errorf("Not found: %s", name) 143 } 144 145 conn := testAccProvider.Meta().(*ArmClient).rivieraClient 146 147 readRequest := conn.NewRequestForURI(rs.Primary.ID) 148 readRequest.Command = &sql.GetDatabase{} 149 150 readResponse, err := readRequest.Execute() 151 if err != nil { 152 return fmt.Errorf("Bad: GetDatabase: %s", err) 153 } 154 if !readResponse.IsSuccessful() { 155 return fmt.Errorf("Bad: GetDatabase: %s", readResponse.Error) 156 } 157 158 return nil 159 } 160 } 161 162 func testCheckAzureRMSqlDatabaseDestroy(s *terraform.State) error { 163 conn := testAccProvider.Meta().(*ArmClient).rivieraClient 164 165 for _, rs := range s.RootModule().Resources { 166 if rs.Type != "azurerm_sql_database" { 167 continue 168 } 169 170 readRequest := conn.NewRequestForURI(rs.Primary.ID) 171 readRequest.Command = &sql.GetDatabase{} 172 173 readResponse, err := readRequest.Execute() 174 if err != nil { 175 return fmt.Errorf("Bad: GetDatabase: %s", err) 176 } 177 178 if readResponse.IsSuccessful() { 179 return fmt.Errorf("Bad: SQL Database still exists: %s", readResponse.Error) 180 } 181 } 182 183 return nil 184 } 185 186 var testAccAzureRMSqlDatabase_elasticPool = ` 187 resource "azurerm_resource_group" "test" { 188 name = "acctestRG_%d" 189 location = "West US" 190 } 191 192 resource "azurerm_sql_server" "test" { 193 name = "acctestsqlserver%d" 194 resource_group_name = "${azurerm_resource_group.test.name}" 195 location = "West US" 196 version = "12.0" 197 administrator_login = "mradministrator" 198 administrator_login_password = "thisIsDog11" 199 } 200 201 resource "azurerm_sql_elasticpool" "test" { 202 name = "acctestep%d" 203 resource_group_name = "${azurerm_resource_group.test.name}" 204 location = "West US" 205 server_name = "${azurerm_sql_server.test.name}" 206 edition = "Basic" 207 dtu = 50 208 pool_size = 5000 209 } 210 211 resource "azurerm_sql_database" "test" { 212 name = "acctestdb%d" 213 resource_group_name = "${azurerm_resource_group.test.name}" 214 server_name = "${azurerm_sql_server.test.name}" 215 location = "West US" 216 edition = "${azurerm_sql_elasticpool.test.edition}" 217 collation = "SQL_Latin1_General_CP1_CI_AS" 218 max_size_bytes = "1073741824" 219 elastic_pool_name = "${azurerm_sql_elasticpool.test.name}" 220 requested_service_objective_name = "ElasticPool" 221 } 222 ` 223 224 var testAccAzureRMSqlDatabase_basic = ` 225 resource "azurerm_resource_group" "test" { 226 name = "acctestRG_%d" 227 location = "West US" 228 } 229 resource "azurerm_sql_server" "test" { 230 name = "acctestsqlserver%d" 231 resource_group_name = "${azurerm_resource_group.test.name}" 232 location = "West US" 233 version = "12.0" 234 administrator_login = "mradministrator" 235 administrator_login_password = "thisIsDog11" 236 } 237 238 resource "azurerm_sql_database" "test" { 239 name = "acctestdb%d" 240 resource_group_name = "${azurerm_resource_group.test.name}" 241 server_name = "${azurerm_sql_server.test.name}" 242 location = "West US" 243 edition = "Standard" 244 collation = "SQL_Latin1_General_CP1_CI_AS" 245 max_size_bytes = "1073741824" 246 requested_service_objective_name = "S0" 247 } 248 ` 249 250 var testAccAzureRMSqlDatabase_withTags = ` 251 resource "azurerm_resource_group" "test" { 252 name = "acctestRG_%d" 253 location = "West US" 254 } 255 resource "azurerm_sql_server" "test" { 256 name = "acctestsqlserver%d" 257 resource_group_name = "${azurerm_resource_group.test.name}" 258 location = "West US" 259 version = "12.0" 260 administrator_login = "mradministrator" 261 administrator_login_password = "thisIsDog11" 262 } 263 264 resource "azurerm_sql_database" "test" { 265 name = "acctestdb%d" 266 resource_group_name = "${azurerm_resource_group.test.name}" 267 server_name = "${azurerm_sql_server.test.name}" 268 location = "West US" 269 edition = "Standard" 270 collation = "SQL_Latin1_General_CP1_CI_AS" 271 max_size_bytes = "1073741824" 272 requested_service_objective_name = "S0" 273 274 tags { 275 environment = "staging" 276 database = "test" 277 } 278 } 279 ` 280 281 var testAccAzureRMSqlDatabase_withTagsUpdate = ` 282 resource "azurerm_resource_group" "test" { 283 name = "acctestRG_%d" 284 location = "West US" 285 } 286 resource "azurerm_sql_server" "test" { 287 name = "acctestsqlserver%d" 288 resource_group_name = "${azurerm_resource_group.test.name}" 289 location = "West US" 290 version = "12.0" 291 administrator_login = "mradministrator" 292 administrator_login_password = "thisIsDog11" 293 } 294 295 resource "azurerm_sql_database" "test" { 296 name = "acctestdb%d" 297 resource_group_name = "${azurerm_resource_group.test.name}" 298 server_name = "${azurerm_sql_server.test.name}" 299 location = "West US" 300 edition = "Standard" 301 collation = "SQL_Latin1_General_CP1_CI_AS" 302 max_size_bytes = "1073741824" 303 requested_service_objective_name = "S0" 304 305 tags { 306 environment = "production" 307 } 308 } 309 ` 310 311 var testAccAzureRMSqlDatabase_datawarehouse = ` 312 resource "azurerm_resource_group" "test" { 313 name = "acctest_rg_%d" 314 location = "West US" 315 } 316 resource "azurerm_sql_server" "test" { 317 name = "acctestsqlserver%d" 318 resource_group_name = "${azurerm_resource_group.test.name}" 319 location = "West US" 320 version = "12.0" 321 administrator_login = "mradministrator" 322 administrator_login_password = "thisIsDog11" 323 } 324 325 resource "azurerm_sql_database" "test" { 326 name = "acctestdb%d" 327 resource_group_name = "${azurerm_resource_group.test.name}" 328 server_name = "${azurerm_sql_server.test.name}" 329 location = "West US" 330 edition = "DataWarehouse" 331 collation = "SQL_Latin1_General_CP1_CI_AS" 332 requested_service_objective_name = "DW400" 333 } 334 `