github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/digitalocean/resource_digitalocean_domain_test.go (about)

     1  package digitalocean
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/digitalocean/godo"
     9  	"github.com/hashicorp/terraform/helper/acctest"
    10  	"github.com/hashicorp/terraform/helper/resource"
    11  	"github.com/hashicorp/terraform/terraform"
    12  )
    13  
    14  func TestAccDigitalOceanDomain_Basic(t *testing.T) {
    15  	var domain godo.Domain
    16  	domainName := fmt.Sprintf("foobar-test-terraform-%s.com", acctest.RandString(10))
    17  
    18  	resource.Test(t, resource.TestCase{
    19  		PreCheck:     func() { testAccPreCheck(t) },
    20  		Providers:    testAccProviders,
    21  		CheckDestroy: testAccCheckDigitalOceanDomainDestroy,
    22  		Steps: []resource.TestStep{
    23  			{
    24  				Config: fmt.Sprintf(testAccCheckDigitalOceanDomainConfig_basic, domainName),
    25  				Check: resource.ComposeTestCheckFunc(
    26  					testAccCheckDigitalOceanDomainExists("digitalocean_domain.foobar", &domain),
    27  					testAccCheckDigitalOceanDomainAttributes(&domain, domainName),
    28  					resource.TestCheckResourceAttr(
    29  						"digitalocean_domain.foobar", "name", domainName),
    30  					resource.TestCheckResourceAttr(
    31  						"digitalocean_domain.foobar", "ip_address", "192.168.0.10"),
    32  				),
    33  			},
    34  		},
    35  	})
    36  }
    37  
    38  func testAccCheckDigitalOceanDomainDestroy(s *terraform.State) error {
    39  	client := testAccProvider.Meta().(*godo.Client)
    40  
    41  	for _, rs := range s.RootModule().Resources {
    42  		if rs.Type != "digitalocean_domain" {
    43  			continue
    44  		}
    45  
    46  		// Try to find the domain
    47  		_, _, err := client.Domains.Get(context.Background(), rs.Primary.ID)
    48  
    49  		if err == nil {
    50  			return fmt.Errorf("Domain still exists")
    51  		}
    52  	}
    53  
    54  	return nil
    55  }
    56  
    57  func testAccCheckDigitalOceanDomainAttributes(domain *godo.Domain, name string) resource.TestCheckFunc {
    58  	return func(s *terraform.State) error {
    59  
    60  		if domain.Name != name {
    61  			return fmt.Errorf("Bad name: %s", domain.Name)
    62  		}
    63  
    64  		return nil
    65  	}
    66  }
    67  
    68  func testAccCheckDigitalOceanDomainExists(n string, domain *godo.Domain) resource.TestCheckFunc {
    69  	return func(s *terraform.State) error {
    70  		rs, ok := s.RootModule().Resources[n]
    71  
    72  		if !ok {
    73  			return fmt.Errorf("Not found: %s", n)
    74  		}
    75  
    76  		if rs.Primary.ID == "" {
    77  			return fmt.Errorf("No Record ID is set")
    78  		}
    79  
    80  		client := testAccProvider.Meta().(*godo.Client)
    81  
    82  		foundDomain, _, err := client.Domains.Get(context.Background(), rs.Primary.ID)
    83  
    84  		if err != nil {
    85  			return err
    86  		}
    87  
    88  		if foundDomain.Name != rs.Primary.ID {
    89  			return fmt.Errorf("Record not found")
    90  		}
    91  
    92  		*domain = *foundDomain
    93  
    94  		return nil
    95  	}
    96  }
    97  
    98  const testAccCheckDigitalOceanDomainConfig_basic = `
    99  resource "digitalocean_domain" "foobar" {
   100  	name       = "%s"
   101  	ip_address = "192.168.0.10"
   102  }`