github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/ultradns/resource_ultradns_record_test.go (about) 1 package ultradns 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/Ensighten/udnssdk" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 ) 11 12 func TestAccUltradnsRecord(t *testing.T) { 13 var record udnssdk.RRSet 14 // domain := os.Getenv("ULTRADNS_DOMAIN") 15 domain := "ultradns.phinze.com" 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccRecordCheckDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: fmt.Sprintf(testCfgRecordMinimal, domain), 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckUltradnsRecordExists("ultradns_record.it", &record), 26 resource.TestCheckResourceAttr("ultradns_record.it", "zone", domain), 27 resource.TestCheckResourceAttr("ultradns_record.it", "name", "test-record"), 28 resource.TestCheckResourceAttr("ultradns_record.it", "rdata.3994963683", "10.5.0.1"), 29 ), 30 }, 31 resource.TestStep{ 32 Config: fmt.Sprintf(testCfgRecordMinimal, domain), 33 Check: resource.ComposeTestCheckFunc( 34 testAccCheckUltradnsRecordExists("ultradns_record.it", &record), 35 resource.TestCheckResourceAttr("ultradns_record.it", "zone", domain), 36 resource.TestCheckResourceAttr("ultradns_record.it", "name", "test-record"), 37 resource.TestCheckResourceAttr("ultradns_record.it", "rdata.3994963683", "10.5.0.1"), 38 ), 39 }, 40 resource.TestStep{ 41 Config: fmt.Sprintf(testCfgRecordUpdated, domain), 42 Check: resource.ComposeTestCheckFunc( 43 testAccCheckUltradnsRecordExists("ultradns_record.it", &record), 44 resource.TestCheckResourceAttr("ultradns_record.it", "zone", domain), 45 resource.TestCheckResourceAttr("ultradns_record.it", "name", "test-record"), 46 resource.TestCheckResourceAttr("ultradns_record.it", "rdata.1998004057", "10.5.0.2"), 47 ), 48 }, 49 }, 50 }) 51 } 52 53 func TestAccUltradnsRecordTXT(t *testing.T) { 54 var record udnssdk.RRSet 55 // domain := os.Getenv("ULTRADNS_DOMAIN") 56 domain := "ultradns.phinze.com" 57 58 resource.Test(t, resource.TestCase{ 59 PreCheck: func() { testAccPreCheck(t) }, 60 Providers: testAccProviders, 61 CheckDestroy: testAccRecordCheckDestroy, 62 Steps: []resource.TestStep{ 63 resource.TestStep{ 64 Config: fmt.Sprintf(testCfgRecordTXTMinimal, domain), 65 Check: resource.ComposeTestCheckFunc( 66 testAccCheckUltradnsRecordExists("ultradns_record.it", &record), 67 resource.TestCheckResourceAttr("ultradns_record.it", "zone", domain), 68 resource.TestCheckResourceAttr("ultradns_record.it", "name", "test-record-txt"), 69 resource.TestCheckResourceAttr("ultradns_record.it", "rdata.1447448707", "simple answer"), 70 resource.TestCheckResourceAttr("ultradns_record.it", "rdata.3337444205", "backslash answer \\"), 71 resource.TestCheckResourceAttr("ultradns_record.it", "rdata.3135730072", "quote answer \""), 72 resource.TestCheckResourceAttr("ultradns_record.it", "rdata.126343430", "complex answer \\ \""), 73 ), 74 }, 75 }, 76 }) 77 } 78 79 func testAccRecordCheckDestroy(s *terraform.State) error { 80 client := testAccProvider.Meta().(*udnssdk.Client) 81 82 for _, rs := range s.RootModule().Resources { 83 if rs.Type != "ultradns_record" { 84 continue 85 } 86 87 k := udnssdk.RRSetKey{ 88 Zone: rs.Primary.Attributes["zone"], 89 Name: rs.Primary.Attributes["name"], 90 Type: rs.Primary.Attributes["type"], 91 } 92 93 _, err := client.RRSets.Select(k) 94 95 if err == nil { 96 return fmt.Errorf("Record still exists") 97 } 98 } 99 100 return nil 101 } 102 103 const testCfgRecordMinimal = ` 104 resource "ultradns_record" "it" { 105 zone = "%s" 106 name = "test-record" 107 108 rdata = ["10.5.0.1"] 109 type = "A" 110 ttl = 3600 111 } 112 ` 113 114 const testCfgRecordUpdated = ` 115 resource "ultradns_record" "it" { 116 zone = "%s" 117 name = "test-record" 118 119 rdata = ["10.5.0.2"] 120 type = "A" 121 ttl = 3600 122 } 123 ` 124 125 const testCfgRecordTXTMinimal = ` 126 resource "ultradns_record" "it" { 127 zone = "%s" 128 name = "test-record-txt" 129 130 rdata = [ 131 "simple answer", 132 "backslash answer \\", 133 "quote answer \"", 134 "complex answer \\ \"", 135 ] 136 type = "TXT" 137 ttl = 3600 138 } 139 `