github.com/peterbale/terraform@v0.9.0-beta2.0.20170315142748-5723acd55547/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 `