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  `