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