github.com/nathanielks/terraform@v0.6.1-0.20170509030759-13e1a62319dc/builtin/providers/azurerm/resource_arm_sql_elasticpool_test.go (about)

     1  package azurerm
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/hashicorp/terraform/helper/acctest"
     6  	"github.com/hashicorp/terraform/helper/resource"
     7  	"github.com/hashicorp/terraform/terraform"
     8  	"net/http"
     9  	"testing"
    10  )
    11  
    12  func TestAccAzureRMSqlElasticPool_basic(t *testing.T) {
    13  	ri := acctest.RandInt()
    14  	config := fmt.Sprintf(testAccAzureRMSqlElasticPool_basic, ri)
    15  
    16  	resource.Test(t, resource.TestCase{
    17  		PreCheck:     func() { testAccPreCheck(t) },
    18  		Providers:    testAccProviders,
    19  		CheckDestroy: testCheckAzureRMSqlElasticPoolDestroy,
    20  		Steps: []resource.TestStep{
    21  			{
    22  				Config: config,
    23  				Check: resource.ComposeTestCheckFunc(
    24  					testCheckAzureRMSqlElasticPoolExists("azurerm_sql_elasticpool.test"),
    25  				),
    26  			},
    27  		},
    28  	})
    29  }
    30  
    31  func TestAccAzureRMSqlElasticPool_resizeDtu(t *testing.T) {
    32  	ri := acctest.RandInt()
    33  	preConfig := fmt.Sprintf(testAccAzureRMSqlElasticPool_basic, ri)
    34  	postConfig := fmt.Sprintf(testAccAzureRMSqlElasticPool_resizedDtu, ri)
    35  
    36  	resource.Test(t, resource.TestCase{
    37  		PreCheck:     func() { testAccPreCheck(t) },
    38  		Providers:    testAccProviders,
    39  		CheckDestroy: testCheckAzureRMSqlElasticPoolDestroy,
    40  		Steps: []resource.TestStep{
    41  			{
    42  				Config: preConfig,
    43  				Check: resource.ComposeTestCheckFunc(
    44  					testCheckAzureRMSqlElasticPoolExists("azurerm_sql_elasticpool.test"),
    45  					resource.TestCheckResourceAttr(
    46  						"azurerm_sql_elasticpool.test", "dtu", "50"),
    47  					resource.TestCheckResourceAttr(
    48  						"azurerm_sql_elasticpool.test", "pool_size", "5000"),
    49  				),
    50  			},
    51  			{
    52  				Config: postConfig,
    53  				Check: resource.ComposeTestCheckFunc(
    54  					testCheckAzureRMSqlElasticPoolExists("azurerm_sql_elasticpool.test"),
    55  					resource.TestCheckResourceAttr(
    56  						"azurerm_sql_elasticpool.test", "dtu", "100"),
    57  					resource.TestCheckResourceAttr(
    58  						"azurerm_sql_elasticpool.test", "pool_size", "10000"),
    59  				),
    60  			},
    61  		},
    62  	})
    63  }
    64  
    65  func testCheckAzureRMSqlElasticPoolExists(name string) resource.TestCheckFunc {
    66  	return func(s *terraform.State) error {
    67  		ressource, ok := s.RootModule().Resources[name]
    68  		if !ok {
    69  			return fmt.Errorf("Not found: %s", name)
    70  		}
    71  
    72  		resourceGroup, serverName, name, err := parseArmSqlElasticPoolId(ressource.Primary.ID)
    73  		if err != nil {
    74  			return err
    75  		}
    76  
    77  		conn := testAccProvider.Meta().(*ArmClient).sqlElasticPoolsClient
    78  
    79  		resp, err := conn.Get(resourceGroup, serverName, name)
    80  		if err != nil {
    81  			return fmt.Errorf("Bad: Get on sqlElasticPoolsClient: %s", err)
    82  		}
    83  
    84  		if resp.StatusCode == http.StatusNotFound {
    85  			return fmt.Errorf("Bad: SQL Elastic Pool %q on server: %q (resource group: %q) does not exist", name, serverName, resourceGroup)
    86  		}
    87  
    88  		return nil
    89  	}
    90  }
    91  
    92  func testCheckAzureRMSqlElasticPoolDestroy(s *terraform.State) error {
    93  	conn := testAccProvider.Meta().(*ArmClient).sqlElasticPoolsClient
    94  
    95  	for _, rs := range s.RootModule().Resources {
    96  		if rs.Type != "azurerm_sql_elasticpool" {
    97  			continue
    98  		}
    99  
   100  		name := rs.Primary.Attributes["name"]
   101  		serverName := rs.Primary.Attributes["server_name"]
   102  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
   103  
   104  		resp, err := conn.Get(resourceGroup, serverName, name)
   105  
   106  		if err != nil {
   107  			return nil
   108  		}
   109  
   110  		if resp.StatusCode != http.StatusNotFound {
   111  			return fmt.Errorf("SQL Elastic Pool still exists:\n%#v", resp.ElasticPoolProperties)
   112  		}
   113  	}
   114  
   115  	return nil
   116  }
   117  
   118  var testAccAzureRMSqlElasticPool_basic = `
   119  resource "azurerm_resource_group" "test" {
   120      name = "acctest-%[1]d"
   121      location = "West US"
   122  }
   123  
   124  resource "azurerm_sql_server" "test" {
   125      name = "acctest%[1]d"
   126      resource_group_name = "${azurerm_resource_group.test.name}"
   127      location = "West US"
   128      version = "12.0"
   129      administrator_login = "4dm1n157r470r"
   130      administrator_login_password = "4-v3ry-53cr37-p455w0rd"
   131  }
   132  
   133  resource "azurerm_sql_elasticpool" "test" {
   134      name = "acctest-pool-%[1]d"
   135      resource_group_name = "${azurerm_resource_group.test.name}"
   136      location = "West US"
   137      server_name = "${azurerm_sql_server.test.name}"
   138      edition = "Basic"
   139      dtu = 50
   140      pool_size = 5000
   141  }
   142  `
   143  
   144  var testAccAzureRMSqlElasticPool_resizedDtu = `
   145  resource "azurerm_resource_group" "test" {
   146      name = "acctest-%[1]d"
   147      location = "West US"
   148  }
   149  
   150  resource "azurerm_sql_server" "test" {
   151      name = "acctest%[1]d"
   152      resource_group_name = "${azurerm_resource_group.test.name}"
   153      location = "West US"
   154      version = "12.0"
   155      administrator_login = "4dm1n157r470r"
   156      administrator_login_password = "4-v3ry-53cr37-p455w0rd"
   157  }
   158  
   159  resource "azurerm_sql_elasticpool" "test" {
   160      name = "acctest-pool-%[1]d"
   161      resource_group_name = "${azurerm_resource_group.test.name}"
   162      location = "West US"
   163      server_name = "${azurerm_sql_server.test.name}"
   164      edition = "Basic"
   165      dtu = 100
   166      pool_size = 10000
   167  }
   168  `