github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/ultradns/resource_ultradns_dirpool_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 TestAccUltradnsDirpool(t *testing.T) { 13 var record udnssdk.RRSet 14 domain := "ultradns.phinze.com" 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccDirpoolCheckDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: fmt.Sprintf(testCfgDirpoolMinimal, domain), 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckUltradnsRecordExists("ultradns_dirpool.it", &record), 25 // Specified 26 resource.TestCheckResourceAttr("ultradns_dirpool.it", "zone", domain), 27 resource.TestCheckResourceAttr("ultradns_dirpool.it", "name", "test-dirpool-minimal"), 28 resource.TestCheckResourceAttr("ultradns_dirpool.it", "type", "A"), 29 resource.TestCheckResourceAttr("ultradns_dirpool.it", "ttl", "300"), 30 resource.TestCheckResourceAttr("ultradns_dirpool.it", "description", "Minimal directional pool"), 31 // hashRdatas(): 10.1.0.1 -> 463398947 32 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.463398947.host", "10.1.0.1"), 33 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.463398947.all_non_configured", "true"), 34 // Generated 35 resource.TestCheckResourceAttr("ultradns_dirpool.it", "id", "test-dirpool-minimal.ultradns.phinze.com"), 36 resource.TestCheckResourceAttr("ultradns_dirpool.it", "hostname", "test-dirpool-minimal.ultradns.phinze.com."), 37 ), 38 }, 39 resource.TestStep{ 40 Config: fmt.Sprintf(testCfgDirpoolMaximal, domain), 41 Check: resource.ComposeTestCheckFunc( 42 testAccCheckUltradnsRecordExists("ultradns_dirpool.it", &record), 43 // Specified 44 resource.TestCheckResourceAttr("ultradns_dirpool.it", "zone", domain), 45 resource.TestCheckResourceAttr("ultradns_dirpool.it", "name", "test-dirpool-maximal"), 46 resource.TestCheckResourceAttr("ultradns_dirpool.it", "type", "A"), 47 resource.TestCheckResourceAttr("ultradns_dirpool.it", "ttl", "300"), 48 resource.TestCheckResourceAttr("ultradns_dirpool.it", "description", "Description of pool"), 49 resource.TestCheckResourceAttr("ultradns_dirpool.it", "conflict_resolve", "GEO"), 50 51 // hashRdatas(): 10.1.1.1 -> 442270228 52 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.442270228.host", "10.1.1.1"), 53 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.442270228.all_non_configured", "true"), 54 // hashRdatas(): 10.1.1.2 -> 2203440046 55 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.2203440046.host", "10.1.1.2"), 56 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.2203440046.geo_info.0.name", "North America"), 57 // hashRdatas(): 10.1.1.3 -> 4099072824 58 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.4099072824.host", "10.1.1.3"), 59 resource.TestCheckResourceAttr("ultradns_dirpool.it", "rdata.4099072824.ip_info.0.name", "some Ips"), 60 resource.TestCheckResourceAttr("ultradns_dirpool.it", "no_response.0.geo_info.0.name", "nrGeo"), 61 resource.TestCheckResourceAttr("ultradns_dirpool.it", "no_response.0.ip_info.0.name", "nrIP"), 62 // Generated 63 resource.TestCheckResourceAttr("ultradns_dirpool.it", "id", "test-dirpool-maximal.ultradns.phinze.com"), 64 resource.TestCheckResourceAttr("ultradns_dirpool.it", "hostname", "test-dirpool-maximal.ultradns.phinze.com."), 65 ), 66 }, 67 }, 68 }) 69 } 70 71 func testAccDirpoolCheckDestroy(s *terraform.State) error { 72 client := testAccProvider.Meta().(*udnssdk.Client) 73 74 for _, rs := range s.RootModule().Resources { 75 if rs.Type != "ultradns_dirpool" { 76 continue 77 } 78 79 k := udnssdk.RRSetKey{ 80 Zone: rs.Primary.Attributes["zone"], 81 Name: rs.Primary.Attributes["name"], 82 Type: rs.Primary.Attributes["type"], 83 } 84 85 _, err := client.RRSets.Select(k) 86 87 if err == nil { 88 return fmt.Errorf("Record still exists") 89 } 90 } 91 92 return nil 93 } 94 95 const testCfgDirpoolMinimal = ` 96 resource "ultradns_dirpool" "it" { 97 zone = "%s" 98 name = "test-dirpool-minimal" 99 type = "A" 100 ttl = 300 101 description = "Minimal directional pool" 102 103 rdata { 104 host = "10.1.0.1" 105 all_non_configured = true 106 } 107 } 108 ` 109 110 const testCfgDirpoolMaximal = ` 111 resource "ultradns_dirpool" "it" { 112 zone = "%s" 113 name = "test-dirpool-maximal" 114 type = "A" 115 ttl = 300 116 description = "Description of pool" 117 118 conflict_resolve = "GEO" 119 120 rdata { 121 host = "10.1.1.1" 122 all_non_configured = true 123 } 124 125 rdata { 126 host = "10.1.1.2" 127 128 geo_info { 129 name = "North America" 130 131 codes = [ 132 "US-OK", 133 "US-DC", 134 "US-MA", 135 ] 136 } 137 } 138 139 rdata { 140 host = "10.1.1.3" 141 142 ip_info { 143 name = "some Ips" 144 145 ips { 146 start = "200.20.0.1" 147 end = "200.20.0.10" 148 } 149 150 ips { 151 cidr = "20.20.20.0/24" 152 } 153 154 ips { 155 address = "50.60.70.80" 156 } 157 } 158 } 159 160 # rdata { 161 # host = "10.1.1.4" 162 # 163 # geo_info { 164 # name = "accountGeoGroup" 165 # is_account_level = true 166 # } 167 # 168 # ip_info { 169 # name = "accountIPGroup" 170 # is_account_level = true 171 # } 172 # } 173 174 no_response { 175 geo_info { 176 name = "nrGeo" 177 178 codes = [ 179 "Z4", 180 ] 181 } 182 183 ip_info { 184 name = "nrIP" 185 186 ips { 187 address = "197.231.41.3" 188 } 189 } 190 } 191 } 192 `