github.com/anuaimi/terraform@v0.6.4-0.20150904235404-2bf9aec61da8/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/resource"
     8  	"github.com/hashicorp/terraform/terraform"
     9  )
    10  
    11  func TestAccDnsRecordSet_basic(t *testing.T) {
    12  	resource.Test(t, resource.TestCase{
    13  		PreCheck:     func() { testAccPreCheck(t) },
    14  		Providers:    testAccProviders,
    15  		CheckDestroy: testAccCheckDnsRecordSetDestroy,
    16  		Steps: []resource.TestStep{
    17  			resource.TestStep{
    18  				Config: testAccDnsRecordSet_basic,
    19  				Check: resource.ComposeTestCheckFunc(
    20  					testAccCheckDnsRecordSetExists(
    21  						"google_dns_record_set.foobar"),
    22  				),
    23  			},
    24  		},
    25  	})
    26  }
    27  
    28  func testAccCheckDnsRecordSetDestroy(s *terraform.State) error {
    29  	config := testAccProvider.Meta().(*Config)
    30  
    31  	for _, rs := range s.RootModule().Resources {
    32  		// Deletion of the managed_zone implies everything is gone
    33  		if rs.Type == "google_dns_managed_zone" {
    34  			_, err := config.clientDns.ManagedZones.Get(
    35  				config.Project, rs.Primary.ID).Do()
    36  			if err == nil {
    37  				return fmt.Errorf("DNS ManagedZone still exists")
    38  			}
    39  		}
    40  	}
    41  
    42  	return nil
    43  }
    44  
    45  func testAccCheckDnsRecordSetExists(name string) resource.TestCheckFunc {
    46  	return func(s *terraform.State) error {
    47  		rs, ok := s.RootModule().Resources[name]
    48  		if !ok {
    49  			return fmt.Errorf("Not found: %s", name)
    50  		}
    51  
    52  		dnsName := rs.Primary.Attributes["name"]
    53  		dnsType := rs.Primary.Attributes["type"]
    54  
    55  		if rs.Primary.ID == "" {
    56  			return fmt.Errorf("No ID is set")
    57  		}
    58  
    59  		config := testAccProvider.Meta().(*Config)
    60  
    61  		resp, err := config.clientDns.ResourceRecordSets.List(
    62  			config.Project, "terraform-test-zone").Name(dnsName).Type(dnsType).Do()
    63  		if err != nil {
    64  			return fmt.Errorf("Error confirming DNS RecordSet existence: %#v", err)
    65  		}
    66  		if len(resp.Rrsets) == 0 {
    67  			// The resource doesn't exist anymore
    68  			return fmt.Errorf("DNS RecordSet not found")
    69  		}
    70  
    71  		if len(resp.Rrsets) > 1 {
    72  			return fmt.Errorf("Only expected 1 record set, got %d", len(resp.Rrsets))
    73  		}
    74  
    75  		return nil
    76  	}
    77  }
    78  
    79  const testAccDnsRecordSet_basic = `
    80  resource "google_dns_managed_zone" "parent-zone" {
    81  	name = "terraform-test-zone"
    82  	dns_name = "terraform.test."
    83  	description = "Test Description"
    84  }
    85  resource "google_dns_record_set" "foobar" {
    86  	managed_zone = "${google_dns_managed_zone.parent-zone.name}"
    87  	name = "test-record.terraform.test."
    88  	type = "A"
    89  	rrdatas = ["127.0.0.1", "127.0.0.10"]
    90  	ttl = 600
    91  }
    92  `