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