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  `