github.com/peterbale/terraform@v0.9.0-beta2.0.20170315142748-5723acd55547/builtin/providers/google/resource_dns_record_set_test.go (about) 1 package google 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 ) 11 12 func TestAccDnsRecordSet_basic(t *testing.T) { 13 zoneName := fmt.Sprintf("dnszone-test-%s", acctest.RandString(10)) 14 resource.Test(t, resource.TestCase{ 15 PreCheck: func() { testAccPreCheck(t) }, 16 Providers: testAccProviders, 17 CheckDestroy: testAccCheckDnsRecordSetDestroy, 18 Steps: []resource.TestStep{ 19 resource.TestStep{ 20 Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.10", 300), 21 Check: resource.ComposeTestCheckFunc( 22 testAccCheckDnsRecordSetExists( 23 "google_dns_record_set.foobar", zoneName), 24 ), 25 }, 26 }, 27 }) 28 } 29 30 func TestAccDnsRecordSet_modify(t *testing.T) { 31 zoneName := fmt.Sprintf("dnszone-test-%s", acctest.RandString(10)) 32 resource.Test(t, resource.TestCase{ 33 PreCheck: func() { testAccPreCheck(t) }, 34 Providers: testAccProviders, 35 CheckDestroy: testAccCheckDnsRecordSetDestroy, 36 Steps: []resource.TestStep{ 37 resource.TestStep{ 38 Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.10", 300), 39 Check: resource.ComposeTestCheckFunc( 40 testAccCheckDnsRecordSetExists( 41 "google_dns_record_set.foobar", zoneName), 42 ), 43 }, 44 resource.TestStep{ 45 Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.11", 300), 46 Check: resource.ComposeTestCheckFunc( 47 testAccCheckDnsRecordSetExists( 48 "google_dns_record_set.foobar", zoneName), 49 ), 50 }, 51 resource.TestStep{ 52 Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.11", 600), 53 Check: resource.ComposeTestCheckFunc( 54 testAccCheckDnsRecordSetExists( 55 "google_dns_record_set.foobar", zoneName), 56 ), 57 }, 58 }, 59 }) 60 } 61 62 func TestAccDnsRecordSet_changeType(t *testing.T) { 63 zoneName := fmt.Sprintf("dnszone-test-%s", acctest.RandString(10)) 64 resource.Test(t, resource.TestCase{ 65 PreCheck: func() { testAccPreCheck(t) }, 66 Providers: testAccProviders, 67 CheckDestroy: testAccCheckDnsRecordSetDestroy, 68 Steps: []resource.TestStep{ 69 resource.TestStep{ 70 Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.10", 300), 71 Check: resource.ComposeTestCheckFunc( 72 testAccCheckDnsRecordSetExists( 73 "google_dns_record_set.foobar", zoneName), 74 ), 75 }, 76 resource.TestStep{ 77 Config: testAccDnsRecordSet_bigChange(zoneName, 600), 78 Check: resource.ComposeTestCheckFunc( 79 testAccCheckDnsRecordSetExists( 80 "google_dns_record_set.foobar", zoneName), 81 ), 82 }, 83 }, 84 }) 85 } 86 87 func testAccCheckDnsRecordSetDestroy(s *terraform.State) error { 88 config := testAccProvider.Meta().(*Config) 89 90 for _, rs := range s.RootModule().Resources { 91 // Deletion of the managed_zone implies everything is gone 92 if rs.Type == "google_dns_managed_zone" { 93 _, err := config.clientDns.ManagedZones.Get( 94 config.Project, rs.Primary.ID).Do() 95 if err == nil { 96 return fmt.Errorf("DNS ManagedZone still exists") 97 } 98 } 99 } 100 101 return nil 102 } 103 104 func testAccCheckDnsRecordSetExists(resourceType, resourceName string) resource.TestCheckFunc { 105 return func(s *terraform.State) error { 106 rs, ok := s.RootModule().Resources[resourceType] 107 if !ok { 108 return fmt.Errorf("Not found: %s", resourceName) 109 } 110 111 dnsName := rs.Primary.Attributes["name"] 112 dnsType := rs.Primary.Attributes["type"] 113 114 if rs.Primary.ID == "" { 115 return fmt.Errorf("No ID is set") 116 } 117 118 config := testAccProvider.Meta().(*Config) 119 120 resp, err := config.clientDns.ResourceRecordSets.List( 121 config.Project, resourceName).Name(dnsName).Type(dnsType).Do() 122 if err != nil { 123 return fmt.Errorf("Error confirming DNS RecordSet existence: %#v", err) 124 } 125 switch len(resp.Rrsets) { 126 case 0: 127 // The resource doesn't exist anymore 128 return fmt.Errorf("DNS RecordSet not found") 129 case 1: 130 return nil 131 default: 132 return fmt.Errorf("Only expected 1 record set, got %d", len(resp.Rrsets)) 133 } 134 } 135 } 136 137 func testAccDnsRecordSet_basic(zoneName string, addr2 string, ttl int) string { 138 return fmt.Sprintf(` 139 resource "google_dns_managed_zone" "parent-zone" { 140 name = "%s" 141 dns_name = "hashicorptest.com." 142 description = "Test Description" 143 } 144 resource "google_dns_record_set" "foobar" { 145 managed_zone = "${google_dns_managed_zone.parent-zone.name}" 146 name = "test-record.hashicorptest.com." 147 type = "A" 148 rrdatas = ["127.0.0.1", "%s"] 149 ttl = %d 150 } 151 `, zoneName, addr2, ttl) 152 } 153 154 func testAccDnsRecordSet_bigChange(zoneName string, ttl int) string { 155 return fmt.Sprintf(` 156 resource "google_dns_managed_zone" "parent-zone" { 157 name = "%s" 158 dns_name = "hashicorptest.com." 159 description = "Test Description" 160 } 161 resource "google_dns_record_set" "foobar" { 162 managed_zone = "${google_dns_managed_zone.parent-zone.name}" 163 name = "test-record.hashicorptest.com." 164 type = "CNAME" 165 rrdatas = ["www.terraform.io."] 166 ttl = %d 167 } 168 `, zoneName, ttl) 169 }