github.com/hobbeswalsh/terraform@v0.3.7-0.20150619183303-ad17cf55a0fa/builtin/providers/azure/resource_azure_sql_database_server_test.go (about) 1 package azure 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/resource" 8 "github.com/hashicorp/terraform/terraform" 9 ) 10 11 // testAccAzureSqlServerName is a helper variable in which to store 12 // the randomly-generated name of the SQL Server after it is created. 13 // The anonymous function is there because go is too good to &"" directly. 14 var testAccAzureSqlServerName *string = func(s string) *string { return &s }("") 15 16 func TestAccAzureSqlDatabaseServer(t *testing.T) { 17 name := "azure_sql_database_server.foo" 18 resource.Test(t, resource.TestCase{ 19 PreCheck: func() { testAccPreCheck(t) }, 20 Providers: testAccProviders, 21 CheckDestroy: testAccCheckAzureSqlDatabaseServerDeleted, 22 Steps: []resource.TestStep{ 23 resource.TestStep{ 24 Config: testAccAzureSqlDatabaseServerConfig, 25 Check: resource.ComposeTestCheckFunc( 26 testAccAzureSqlDatabaseServerGetName, 27 testAccCheckAzureSqlDatabaseServerExists(name), 28 resource.TestCheckResourceAttrPtr(name, "name", testAccAzureSqlServerName), 29 resource.TestCheckResourceAttr(name, "username", "SuperUser"), 30 resource.TestCheckResourceAttr(name, "password", "SuperSEKR3T"), 31 resource.TestCheckResourceAttr(name, "version", "2.0"), 32 ), 33 }, 34 }, 35 }) 36 } 37 38 func testAccCheckAzureSqlDatabaseServerExists(name string) resource.TestCheckFunc { 39 return func(s *terraform.State) error { 40 resource, ok := s.RootModule().Resources[name] 41 if !ok { 42 return fmt.Errorf("SQL Server %s doesn't exist.", name) 43 } 44 45 if resource.Primary.ID == "" { 46 return fmt.Errorf("SQL Server %s resource ID not set.", name) 47 } 48 49 sqlClient := testAccProvider.Meta().(*Client).sqlClient 50 servers, err := sqlClient.ListServers() 51 if err != nil { 52 return fmt.Errorf("Error issuing Azure SQL Server list request: %s", err) 53 } 54 55 for _, srv := range servers.DatabaseServers { 56 if srv.Name == resource.Primary.ID { 57 return nil 58 } 59 } 60 61 return fmt.Errorf("SQL Server %s doesn't exist.", name) 62 } 63 } 64 65 func testAccCheckAzureSqlDatabaseServerDeleted(s *terraform.State) error { 66 for _, resource := range s.RootModule().Resources { 67 if resource.Type != "azure_sql_database_server" { 68 continue 69 } 70 71 if resource.Primary.ID == "" { 72 return fmt.Errorf("SQL Server resource ID not set.") 73 } 74 75 sqlClient := testAccProvider.Meta().(*Client).sqlClient 76 servers, err := sqlClient.ListServers() 77 if err != nil { 78 return fmt.Errorf("Error issuing Azure SQL Server list request: %s", err) 79 } 80 81 for _, srv := range servers.DatabaseServers { 82 if srv.Name == resource.Primary.ID { 83 fmt.Errorf("SQL Server %s still exists.", resource.Primary.ID) 84 } 85 } 86 } 87 return nil 88 } 89 90 // testAccAzureSqlDatabaseServerGetName is ahelper function which reads the current 91 // state form Terraform and sets the testAccAzureSqlServerName variable 92 // to the ID (which is actually the name) of the newly created server. 93 // It is modeled as a resource.TestCheckFunc so as to be easily-embeddable in 94 // test cases and run live. 95 func testAccAzureSqlDatabaseServerGetName(s *terraform.State) error { 96 for _, resource := range s.RootModule().Resources { 97 if resource.Type != "azure_sql_database_server" { 98 continue 99 } 100 101 if resource.Primary.ID == "" { 102 return fmt.Errorf("Azure SQL Server resource ID not set.") 103 } 104 105 *testAccAzureSqlServerName = resource.Primary.ID 106 return nil 107 } 108 109 return fmt.Errorf("No Azure SQL Servers found.") 110 } 111 112 const testAccAzureSqlDatabaseServerConfig = ` 113 resource "azure_sql_database_server" "foo" { 114 location = "West US" 115 username = "SuperUser" 116 password = "SuperSEKR3T" 117 version = "2.0" 118 } 119 `