github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/ns1/resource_zone_test.go (about)

     1  package ns1
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/helper/resource"
     8  	"github.com/hashicorp/terraform/terraform"
     9  
    10  	ns1 "gopkg.in/ns1/ns1-go.v2/rest"
    11  	"gopkg.in/ns1/ns1-go.v2/rest/model/dns"
    12  )
    13  
    14  func TestAccZone_basic(t *testing.T) {
    15  	var zone dns.Zone
    16  	resource.Test(t, resource.TestCase{
    17  		PreCheck:     func() { testAccPreCheck(t) },
    18  		Providers:    testAccProviders,
    19  		CheckDestroy: testAccCheckZoneDestroy,
    20  		Steps: []resource.TestStep{
    21  			resource.TestStep{
    22  				Config: testAccZoneBasic,
    23  				Check: resource.ComposeTestCheckFunc(
    24  					testAccCheckZoneExists("ns1_zone.it", &zone),
    25  					testAccCheckZoneName(&zone, "terraform-test-zone.io"),
    26  					testAccCheckZoneTTL(&zone, 3600),
    27  					testAccCheckZoneRefresh(&zone, 43200),
    28  					testAccCheckZoneRetry(&zone, 7200),
    29  					testAccCheckZoneExpiry(&zone, 1209600),
    30  					testAccCheckZoneNxTTL(&zone, 3600),
    31  				),
    32  			},
    33  		},
    34  	})
    35  }
    36  
    37  func TestAccZone_updated(t *testing.T) {
    38  	var zone dns.Zone
    39  	resource.Test(t, resource.TestCase{
    40  		PreCheck:     func() { testAccPreCheck(t) },
    41  		Providers:    testAccProviders,
    42  		CheckDestroy: testAccCheckZoneDestroy,
    43  		Steps: []resource.TestStep{
    44  			resource.TestStep{
    45  				Config: testAccZoneBasic,
    46  				Check: resource.ComposeTestCheckFunc(
    47  					testAccCheckZoneExists("ns1_zone.it", &zone),
    48  					testAccCheckZoneName(&zone, "terraform-test-zone.io"),
    49  					testAccCheckZoneTTL(&zone, 3600),
    50  					testAccCheckZoneRefresh(&zone, 43200),
    51  					testAccCheckZoneRetry(&zone, 7200),
    52  					testAccCheckZoneExpiry(&zone, 1209600),
    53  					testAccCheckZoneNxTTL(&zone, 3600),
    54  				),
    55  			},
    56  			resource.TestStep{
    57  				Config: testAccZoneUpdated,
    58  				Check: resource.ComposeTestCheckFunc(
    59  					testAccCheckZoneExists("ns1_zone.it", &zone),
    60  					testAccCheckZoneName(&zone, "terraform-test-zone.io"),
    61  					testAccCheckZoneTTL(&zone, 10800),
    62  					testAccCheckZoneRefresh(&zone, 3600),
    63  					testAccCheckZoneRetry(&zone, 300),
    64  					testAccCheckZoneExpiry(&zone, 2592000),
    65  					testAccCheckZoneNxTTL(&zone, 3601),
    66  				),
    67  			},
    68  		},
    69  	})
    70  }
    71  
    72  func testAccCheckZoneExists(n string, zone *dns.Zone) resource.TestCheckFunc {
    73  	return func(s *terraform.State) error {
    74  		rs, ok := s.RootModule().Resources[n]
    75  
    76  		if !ok {
    77  			return fmt.Errorf("Not found: %s", n)
    78  		}
    79  
    80  		if rs.Primary.ID == "" {
    81  			return fmt.Errorf("NoID is set")
    82  		}
    83  
    84  		client := testAccProvider.Meta().(*ns1.Client)
    85  
    86  		foundZone, _, err := client.Zones.Get(rs.Primary.Attributes["zone"])
    87  
    88  		p := rs.Primary
    89  
    90  		if err != nil {
    91  			return err
    92  		}
    93  
    94  		if foundZone.ID != p.Attributes["id"] {
    95  			return fmt.Errorf("Zone not found")
    96  		}
    97  
    98  		*zone = *foundZone
    99  
   100  		return nil
   101  	}
   102  }
   103  
   104  func testAccCheckZoneDestroy(s *terraform.State) error {
   105  	client := testAccProvider.Meta().(*ns1.Client)
   106  
   107  	for _, rs := range s.RootModule().Resources {
   108  		if rs.Type != "ns1_zone" {
   109  			continue
   110  		}
   111  
   112  		zone, _, err := client.Zones.Get(rs.Primary.Attributes["zone"])
   113  
   114  		if err == nil {
   115  			return fmt.Errorf("Zone still exists: %#v: %#v", err, zone)
   116  		}
   117  	}
   118  
   119  	return nil
   120  }
   121  
   122  func testAccCheckZoneName(zone *dns.Zone, expected string) resource.TestCheckFunc {
   123  	return func(s *terraform.State) error {
   124  		if zone.Zone != expected {
   125  			return fmt.Errorf("Zone: got: %s want: %s", zone.Zone, expected)
   126  		}
   127  		return nil
   128  	}
   129  }
   130  
   131  func testAccCheckZoneTTL(zone *dns.Zone, expected int) resource.TestCheckFunc {
   132  	return func(s *terraform.State) error {
   133  		if zone.TTL != expected {
   134  			return fmt.Errorf("TTL: got: %d want: %d", zone.TTL, expected)
   135  		}
   136  		return nil
   137  	}
   138  }
   139  func testAccCheckZoneRefresh(zone *dns.Zone, expected int) resource.TestCheckFunc {
   140  	return func(s *terraform.State) error {
   141  		if zone.Refresh != expected {
   142  			return fmt.Errorf("Refresh: got: %d want: %d", zone.Refresh, expected)
   143  		}
   144  		return nil
   145  	}
   146  }
   147  func testAccCheckZoneRetry(zone *dns.Zone, expected int) resource.TestCheckFunc {
   148  	return func(s *terraform.State) error {
   149  		if zone.Retry != expected {
   150  			return fmt.Errorf("Retry: got: %d want: %d", zone.Retry, expected)
   151  		}
   152  		return nil
   153  	}
   154  }
   155  func testAccCheckZoneExpiry(zone *dns.Zone, expected int) resource.TestCheckFunc {
   156  	return func(s *terraform.State) error {
   157  		if zone.Expiry != expected {
   158  			return fmt.Errorf("Expiry: got: %d want: %d", zone.Expiry, expected)
   159  		}
   160  		return nil
   161  	}
   162  }
   163  func testAccCheckZoneNxTTL(zone *dns.Zone, expected int) resource.TestCheckFunc {
   164  	return func(s *terraform.State) error {
   165  		if zone.NxTTL != expected {
   166  			return fmt.Errorf("NxTTL: got: %d want: %d", zone.NxTTL, expected)
   167  		}
   168  		return nil
   169  	}
   170  }
   171  
   172  const testAccZoneBasic = `
   173  resource "ns1_zone" "it" {
   174    zone = "terraform-test-zone.io"
   175  }
   176  `
   177  
   178  const testAccZoneUpdated = `
   179  resource "ns1_zone" "it" {
   180    zone    = "terraform-test-zone.io"
   181    ttl     = 10800
   182    refresh = 3600
   183    retry   = 300
   184    expiry  = 2592000
   185    nx_ttl  = 3601
   186    # link    = "1.2.3.4.in-addr.arpa" # TODO
   187    # primary = "1.2.3.4.in-addr.arpa" # TODO
   188  }
   189  `