github.com/peterbale/terraform@v0.9.0-beta2.0.20170315142748-5723acd55547/builtin/providers/azurerm/resource_arm_dns_a_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 TestAccAzureRMDnsARecord_basic(t *testing.T) { 14 ri := acctest.RandInt() 15 config := fmt.Sprintf(testAccAzureRMDnsARecord_basic, ri, ri, ri) 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testCheckAzureRMDnsARecordDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: config, 24 Check: resource.ComposeTestCheckFunc( 25 testCheckAzureRMDnsARecordExists("azurerm_dns_a_record.test"), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func TestAccAzureRMDnsARecord_updateRecords(t *testing.T) { 33 ri := acctest.RandInt() 34 preConfig := fmt.Sprintf(testAccAzureRMDnsARecord_basic, ri, ri, ri) 35 postConfig := fmt.Sprintf(testAccAzureRMDnsARecord_updateRecords, ri, ri, ri) 36 37 resource.Test(t, resource.TestCase{ 38 PreCheck: func() { testAccPreCheck(t) }, 39 Providers: testAccProviders, 40 CheckDestroy: testCheckAzureRMDnsARecordDestroy, 41 Steps: []resource.TestStep{ 42 resource.TestStep{ 43 Config: preConfig, 44 Check: resource.ComposeTestCheckFunc( 45 testCheckAzureRMDnsARecordExists("azurerm_dns_a_record.test"), 46 resource.TestCheckResourceAttr( 47 "azurerm_dns_a_record.test", "records.#", "2"), 48 ), 49 }, 50 51 resource.TestStep{ 52 Config: postConfig, 53 Check: resource.ComposeTestCheckFunc( 54 testCheckAzureRMDnsARecordExists("azurerm_dns_a_record.test"), 55 resource.TestCheckResourceAttr( 56 "azurerm_dns_a_record.test", "records.#", "3"), 57 ), 58 }, 59 }, 60 }) 61 } 62 63 func TestAccAzureRMDnsARecord_withTags(t *testing.T) { 64 ri := acctest.RandInt() 65 preConfig := fmt.Sprintf(testAccAzureRMDnsARecord_withTags, ri, ri, ri) 66 postConfig := fmt.Sprintf(testAccAzureRMDnsARecord_withTagsUpdate, ri, ri, ri) 67 68 resource.Test(t, resource.TestCase{ 69 PreCheck: func() { testAccPreCheck(t) }, 70 Providers: testAccProviders, 71 CheckDestroy: testCheckAzureRMDnsARecordDestroy, 72 Steps: []resource.TestStep{ 73 resource.TestStep{ 74 Config: preConfig, 75 Check: resource.ComposeTestCheckFunc( 76 testCheckAzureRMDnsARecordExists("azurerm_dns_a_record.test"), 77 resource.TestCheckResourceAttr( 78 "azurerm_dns_a_record.test", "tags.%", "2"), 79 ), 80 }, 81 82 resource.TestStep{ 83 Config: postConfig, 84 Check: resource.ComposeTestCheckFunc( 85 testCheckAzureRMDnsARecordExists("azurerm_dns_a_record.test"), 86 resource.TestCheckResourceAttr( 87 "azurerm_dns_a_record.test", "tags.%", "1"), 88 ), 89 }, 90 }, 91 }) 92 } 93 94 func testCheckAzureRMDnsARecordExists(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.GetARecordSet{} 106 107 readResponse, err := readRequest.Execute() 108 if err != nil { 109 return fmt.Errorf("Bad: GetARecordSet: %s", err) 110 } 111 if !readResponse.IsSuccessful() { 112 return fmt.Errorf("Bad: GetARecordSet: %s", readResponse.Error) 113 } 114 115 return nil 116 } 117 } 118 119 func testCheckAzureRMDnsARecordDestroy(s *terraform.State) error { 120 conn := testAccProvider.Meta().(*ArmClient).rivieraClient 121 122 for _, rs := range s.RootModule().Resources { 123 if rs.Type != "azurerm_dns_a_record" { 124 continue 125 } 126 127 readRequest := conn.NewRequestForURI(rs.Primary.ID) 128 readRequest.Command = &dns.GetARecordSet{} 129 130 readResponse, err := readRequest.Execute() 131 if err != nil { 132 return fmt.Errorf("Bad: GetARecordSet: %s", err) 133 } 134 135 if readResponse.IsSuccessful() { 136 return fmt.Errorf("Bad: DNS A Record still exists: %s", readResponse.Error) 137 } 138 } 139 140 return nil 141 } 142 143 var testAccAzureRMDnsARecord_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_a_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 records = ["1.2.3.4", "1.2.4.5"] 159 } 160 ` 161 162 var testAccAzureRMDnsARecord_updateRecords = ` 163 resource "azurerm_resource_group" "test" { 164 name = "acctestRG_%d" 165 location = "West US" 166 } 167 resource "azurerm_dns_zone" "test" { 168 name = "acctestzone%d.com" 169 resource_group_name = "${azurerm_resource_group.test.name}" 170 } 171 172 resource "azurerm_dns_a_record" "test" { 173 name = "myarecord%d" 174 resource_group_name = "${azurerm_resource_group.test.name}" 175 zone_name = "${azurerm_dns_zone.test.name}" 176 ttl = "300" 177 records = ["1.2.3.4", "1.2.4.5", "1.2.3.7"] 178 } 179 ` 180 181 var testAccAzureRMDnsARecord_withTags = ` 182 resource "azurerm_resource_group" "test" { 183 name = "acctestRG_%d" 184 location = "West US" 185 } 186 resource "azurerm_dns_zone" "test" { 187 name = "acctestzone%d.com" 188 resource_group_name = "${azurerm_resource_group.test.name}" 189 } 190 191 resource "azurerm_dns_a_record" "test" { 192 name = "myarecord%d" 193 resource_group_name = "${azurerm_resource_group.test.name}" 194 zone_name = "${azurerm_dns_zone.test.name}" 195 ttl = "300" 196 records = ["1.2.3.4", "1.2.4.5"] 197 198 tags { 199 environment = "Production" 200 cost_center = "MSFT" 201 } 202 } 203 ` 204 205 var testAccAzureRMDnsARecord_withTagsUpdate = ` 206 resource "azurerm_resource_group" "test" { 207 name = "acctestRG_%d" 208 location = "West US" 209 } 210 resource "azurerm_dns_zone" "test" { 211 name = "acctestzone%d.com" 212 resource_group_name = "${azurerm_resource_group.test.name}" 213 } 214 215 resource "azurerm_dns_a_record" "test" { 216 name = "myarecord%d" 217 resource_group_name = "${azurerm_resource_group.test.name}" 218 zone_name = "${azurerm_dns_zone.test.name}" 219 ttl = "300" 220 records = ["1.2.3.4", "1.2.4.5"] 221 222 tags { 223 environment = "staging" 224 } 225 } 226 `