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 }`