github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/azurerm/resource_arm_dns_cname_record_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/dns"
    11  )
    12  
    13  func TestAccAzureRMDnsCNameRecord_basic(t *testing.T) {
    14  	ri := acctest.RandInt()
    15  	config := fmt.Sprintf(testAccAzureRMDnsCNameRecord_basic, ri, ri, ri)
    16  
    17  	resource.Test(t, resource.TestCase{
    18  		PreCheck:     func() { testAccPreCheck(t) },
    19  		Providers:    testAccProviders,
    20  		CheckDestroy: testCheckAzureRMDnsCNameRecordDestroy,
    21  		Steps: []resource.TestStep{
    22  			resource.TestStep{
    23  				Config: config,
    24  				Check: resource.ComposeTestCheckFunc(
    25  					testCheckAzureRMDnsCNameRecordExists("azurerm_dns_cname_record.test"),
    26  				),
    27  			},
    28  		},
    29  	})
    30  }
    31  
    32  func TestAccAzureRMDnsCNameRecord_subdomain(t *testing.T) {
    33  	ri := acctest.RandInt()
    34  	config := fmt.Sprintf(testAccAzureRMDnsCNameRecord_subdomain, ri, ri, ri)
    35  
    36  	resource.Test(t, resource.TestCase{
    37  		PreCheck:     func() { testAccPreCheck(t) },
    38  		Providers:    testAccProviders,
    39  		CheckDestroy: testCheckAzureRMDnsCNameRecordDestroy,
    40  		Steps: []resource.TestStep{
    41  			resource.TestStep{
    42  				Config: config,
    43  				Check: resource.ComposeTestCheckFunc(
    44  					testCheckAzureRMDnsCNameRecordExists("azurerm_dns_cname_record.test"),
    45  					resource.TestCheckResourceAttr(
    46  						"azurerm_dns_cname_record.test", "record", "test.contoso.com"),
    47  				),
    48  			},
    49  		},
    50  	})
    51  }
    52  
    53  func TestAccAzureRMDnsCNameRecord_updateRecords(t *testing.T) {
    54  	ri := acctest.RandInt()
    55  	preConfig := fmt.Sprintf(testAccAzureRMDnsCNameRecord_basic, ri, ri, ri)
    56  	postConfig := fmt.Sprintf(testAccAzureRMDnsCNameRecord_updateRecords, ri, ri, ri)
    57  
    58  	resource.Test(t, resource.TestCase{
    59  		PreCheck:     func() { testAccPreCheck(t) },
    60  		Providers:    testAccProviders,
    61  		CheckDestroy: testCheckAzureRMDnsCNameRecordDestroy,
    62  		Steps: []resource.TestStep{
    63  			resource.TestStep{
    64  				Config: preConfig,
    65  				Check: resource.ComposeTestCheckFunc(
    66  					testCheckAzureRMDnsCNameRecordExists("azurerm_dns_cname_record.test"),
    67  				),
    68  			},
    69  
    70  			resource.TestStep{
    71  				Config: postConfig,
    72  				Check: resource.ComposeTestCheckFunc(
    73  					testCheckAzureRMDnsCNameRecordExists("azurerm_dns_cname_record.test"),
    74  				),
    75  			},
    76  		},
    77  	})
    78  }
    79  
    80  func TestAccAzureRMDnsCNameRecord_withTags(t *testing.T) {
    81  	ri := acctest.RandInt()
    82  	preConfig := fmt.Sprintf(testAccAzureRMDnsCNameRecord_withTags, ri, ri, ri)
    83  	postConfig := fmt.Sprintf(testAccAzureRMDnsCNameRecord_withTagsUpdate, ri, ri, ri)
    84  
    85  	resource.Test(t, resource.TestCase{
    86  		PreCheck:     func() { testAccPreCheck(t) },
    87  		Providers:    testAccProviders,
    88  		CheckDestroy: testCheckAzureRMDnsCNameRecordDestroy,
    89  		Steps: []resource.TestStep{
    90  			resource.TestStep{
    91  				Config: preConfig,
    92  				Check: resource.ComposeTestCheckFunc(
    93  					testCheckAzureRMDnsCNameRecordExists("azurerm_dns_cname_record.test"),
    94  					resource.TestCheckResourceAttr(
    95  						"azurerm_dns_cname_record.test", "tags.%", "2"),
    96  				),
    97  			},
    98  
    99  			resource.TestStep{
   100  				Config: postConfig,
   101  				Check: resource.ComposeTestCheckFunc(
   102  					testCheckAzureRMDnsCNameRecordExists("azurerm_dns_cname_record.test"),
   103  					resource.TestCheckResourceAttr(
   104  						"azurerm_dns_cname_record.test", "tags.%", "1"),
   105  				),
   106  			},
   107  		},
   108  	})
   109  }
   110  
   111  func testCheckAzureRMDnsCNameRecordExists(name string) resource.TestCheckFunc {
   112  	return func(s *terraform.State) error {
   113  		// Ensure we have enough information in state to look up in API
   114  		rs, ok := s.RootModule().Resources[name]
   115  		if !ok {
   116  			return fmt.Errorf("Not found: %s", name)
   117  		}
   118  
   119  		conn := testAccProvider.Meta().(*ArmClient).rivieraClient
   120  
   121  		readRequest := conn.NewRequestForURI(rs.Primary.ID)
   122  		readRequest.Command = &dns.GetCNAMERecordSet{}
   123  
   124  		readResponse, err := readRequest.Execute()
   125  		if err != nil {
   126  			return fmt.Errorf("Bad: GetCNAMERecordSet: %s", err)
   127  		}
   128  		if !readResponse.IsSuccessful() {
   129  			return fmt.Errorf("Bad: GetCNAMERecordSet: %s", readResponse.Error)
   130  		}
   131  
   132  		return nil
   133  	}
   134  }
   135  
   136  func testCheckAzureRMDnsCNameRecordDestroy(s *terraform.State) error {
   137  	conn := testAccProvider.Meta().(*ArmClient).rivieraClient
   138  
   139  	for _, rs := range s.RootModule().Resources {
   140  		if rs.Type != "azurerm_dns_cname_record" {
   141  			continue
   142  		}
   143  
   144  		readRequest := conn.NewRequestForURI(rs.Primary.ID)
   145  		readRequest.Command = &dns.GetCNAMERecordSet{}
   146  
   147  		readResponse, err := readRequest.Execute()
   148  		if err != nil {
   149  			return fmt.Errorf("Bad: GetCNAMERecordSet: %s", err)
   150  		}
   151  
   152  		if readResponse.IsSuccessful() {
   153  			return fmt.Errorf("Bad: DNS CNAME Record still exists: %s", readResponse.Error)
   154  		}
   155  	}
   156  
   157  	return nil
   158  }
   159  
   160  var testAccAzureRMDnsCNameRecord_basic = `
   161  resource "azurerm_resource_group" "test" {
   162      name = "acctestRG_%d"
   163      location = "West US"
   164  }
   165  resource "azurerm_dns_zone" "test" {
   166      name = "acctestzone%d.com"
   167      resource_group_name = "${azurerm_resource_group.test.name}"
   168  }
   169  
   170  resource "azurerm_dns_cname_record" "test" {
   171      name = "myarecord%d"
   172      resource_group_name = "${azurerm_resource_group.test.name}"
   173      zone_name = "${azurerm_dns_zone.test.name}"
   174      ttl = "300"
   175      record = "contoso.com"
   176  }
   177  `
   178  
   179  var testAccAzureRMDnsCNameRecord_subdomain = `
   180  resource "azurerm_resource_group" "test" {
   181      name = "acctestRG_%d"
   182      location = "West US"
   183  }
   184  resource "azurerm_dns_zone" "test" {
   185      name = "acctestzone%d.com"
   186      resource_group_name = "${azurerm_resource_group.test.name}"
   187  }
   188  
   189  resource "azurerm_dns_cname_record" "test" {
   190      name = "myarecord%d"
   191      resource_group_name = "${azurerm_resource_group.test.name}"
   192      zone_name = "${azurerm_dns_zone.test.name}"
   193      ttl = "300"
   194      record = "test.contoso.com"
   195  }
   196  `
   197  
   198  var testAccAzureRMDnsCNameRecord_updateRecords = `
   199  resource "azurerm_resource_group" "test" {
   200      name = "acctestRG_%d"
   201      location = "West US"
   202  }
   203  resource "azurerm_dns_zone" "test" {
   204      name = "acctestzone%d.com"
   205      resource_group_name = "${azurerm_resource_group.test.name}"
   206  }
   207  
   208  resource "azurerm_dns_cname_record" "test" {
   209      name = "myarecord%d"
   210      resource_group_name = "${azurerm_resource_group.test.name}"
   211      zone_name = "${azurerm_dns_zone.test.name}"
   212      ttl = "300"
   213      record = "contoso.co.uk"
   214  }
   215  `
   216  
   217  var testAccAzureRMDnsCNameRecord_withTags = `
   218  resource "azurerm_resource_group" "test" {
   219      name = "acctestRG_%d"
   220      location = "West US"
   221  }
   222  resource "azurerm_dns_zone" "test" {
   223      name = "acctestzone%d.com"
   224      resource_group_name = "${azurerm_resource_group.test.name}"
   225  }
   226  
   227  resource "azurerm_dns_cname_record" "test" {
   228      name = "myarecord%d"
   229      resource_group_name = "${azurerm_resource_group.test.name}"
   230      zone_name = "${azurerm_dns_zone.test.name}"
   231      ttl = "300"
   232      record = "contoso.com"
   233  
   234      tags {
   235  	environment = "Production"
   236  	cost_center = "MSFT"
   237      }
   238  }
   239  `
   240  
   241  var testAccAzureRMDnsCNameRecord_withTagsUpdate = `
   242  resource "azurerm_resource_group" "test" {
   243      name = "acctestRG_%d"
   244      location = "West US"
   245  }
   246  resource "azurerm_dns_zone" "test" {
   247      name = "acctestzone%d.com"
   248      resource_group_name = "${azurerm_resource_group.test.name}"
   249  }
   250  
   251  resource "azurerm_dns_cname_record" "test" {
   252      name = "myarecord%d"
   253      resource_group_name = "${azurerm_resource_group.test.name}"
   254      zone_name = "${azurerm_dns_zone.test.name}"
   255      ttl = "300"
   256      record = "contoso.com"
   257  
   258      tags {
   259  	environment = "staging"
   260      }
   261  }
   262  `