github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/google/resource_compute_subnetwork_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  	"google.golang.org/api/compute/v1"
    11  )
    12  
    13  func TestAccComputeSubnetwork_basic(t *testing.T) {
    14  	var subnetwork1 compute.Subnetwork
    15  	var subnetwork2 compute.Subnetwork
    16  
    17  	cnName := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
    18  	subnetwork1Name := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
    19  	subnetwork2Name := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
    20  	subnetwork3Name := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
    21  
    22  	resource.Test(t, resource.TestCase{
    23  		PreCheck:     func() { testAccPreCheck(t) },
    24  		Providers:    testAccProviders,
    25  		CheckDestroy: testAccCheckComputeSubnetworkDestroy,
    26  		Steps: []resource.TestStep{
    27  			resource.TestStep{
    28  				Config: testAccComputeSubnetwork_basic(cnName, subnetwork1Name, subnetwork2Name, subnetwork3Name),
    29  				Check: resource.ComposeTestCheckFunc(
    30  					testAccCheckComputeSubnetworkExists(
    31  						"google_compute_subnetwork.network-ref-by-url", &subnetwork1),
    32  					testAccCheckComputeSubnetworkExists(
    33  						"google_compute_subnetwork.network-ref-by-name", &subnetwork2),
    34  				),
    35  			},
    36  		},
    37  	})
    38  }
    39  
    40  func TestAccComputeSubnetwork_update(t *testing.T) {
    41  	var subnetwork compute.Subnetwork
    42  
    43  	cnName := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
    44  	subnetworkName := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
    45  
    46  	resource.Test(t, resource.TestCase{
    47  		PreCheck:     func() { testAccPreCheck(t) },
    48  		Providers:    testAccProviders,
    49  		CheckDestroy: testAccCheckComputeSubnetworkDestroy,
    50  		Steps: []resource.TestStep{
    51  			resource.TestStep{
    52  				Config: testAccComputeSubnetwork_update1(cnName, subnetworkName),
    53  				Check: resource.ComposeTestCheckFunc(
    54  					testAccCheckComputeSubnetworkExists(
    55  						"google_compute_subnetwork.network-with-private-google-access", &subnetwork),
    56  				),
    57  			},
    58  			resource.TestStep{
    59  				Config: testAccComputeSubnetwork_update2(cnName, subnetworkName),
    60  				Check: resource.ComposeTestCheckFunc(
    61  					testAccCheckComputeSubnetworkExists(
    62  						"google_compute_subnetwork.network-with-private-google-access", &subnetwork),
    63  				),
    64  			},
    65  		},
    66  	})
    67  
    68  	if subnetwork.PrivateIpGoogleAccess {
    69  		t.Errorf("Expected PrivateIpGoogleAccess to be false, got %v", subnetwork.PrivateIpGoogleAccess)
    70  	}
    71  }
    72  
    73  func testAccCheckComputeSubnetworkDestroy(s *terraform.State) error {
    74  	config := testAccProvider.Meta().(*Config)
    75  
    76  	for _, rs := range s.RootModule().Resources {
    77  		if rs.Type != "google_compute_subnetwork" {
    78  			continue
    79  		}
    80  
    81  		region, subnet_name := splitSubnetID(rs.Primary.ID)
    82  		_, err := config.clientCompute.Subnetworks.Get(
    83  			config.Project, region, subnet_name).Do()
    84  		if err == nil {
    85  			return fmt.Errorf("Network still exists")
    86  		}
    87  	}
    88  
    89  	return nil
    90  }
    91  
    92  func testAccCheckComputeSubnetworkExists(n string, subnetwork *compute.Subnetwork) resource.TestCheckFunc {
    93  	return func(s *terraform.State) error {
    94  		rs, ok := s.RootModule().Resources[n]
    95  		if !ok {
    96  			return fmt.Errorf("Not found: %s", n)
    97  		}
    98  
    99  		if rs.Primary.ID == "" {
   100  			return fmt.Errorf("No ID is set")
   101  		}
   102  
   103  		config := testAccProvider.Meta().(*Config)
   104  
   105  		region, subnet_name := splitSubnetID(rs.Primary.ID)
   106  		found, err := config.clientCompute.Subnetworks.Get(
   107  			config.Project, region, subnet_name).Do()
   108  		if err != nil {
   109  			return err
   110  		}
   111  
   112  		if found.Name != subnet_name {
   113  			return fmt.Errorf("Subnetwork not found")
   114  		}
   115  
   116  		*subnetwork = *found
   117  
   118  		return nil
   119  	}
   120  }
   121  
   122  func testAccComputeSubnetwork_basic(cnName, subnetwork1Name, subnetwork2Name, subnetwork3Name string) string {
   123  	return fmt.Sprintf(`
   124  resource "google_compute_network" "custom-test" {
   125  	name = "%s"
   126  	auto_create_subnetworks = false
   127  }
   128  
   129  resource "google_compute_subnetwork" "network-ref-by-url" {
   130  	name = "%s"
   131  	ip_cidr_range = "10.0.0.0/16"
   132  	region = "us-central1"
   133  	network = "${google_compute_network.custom-test.self_link}"
   134  }
   135  
   136  
   137  resource "google_compute_subnetwork" "network-ref-by-name" {
   138  	name = "%s"
   139  	ip_cidr_range = "10.1.0.0/16"
   140  	region = "us-central1"
   141  	network = "${google_compute_network.custom-test.name}"
   142  }
   143  
   144  resource "google_compute_subnetwork" "network-with-private-google-access" {
   145  	name = "%s"
   146  	ip_cidr_range = "10.2.0.0/16"
   147  	region = "us-central1"
   148  	network = "${google_compute_network.custom-test.self_link}"
   149  	private_ip_google_access = true
   150  }
   151  `, cnName, subnetwork1Name, subnetwork2Name, subnetwork3Name)
   152  }
   153  
   154  func testAccComputeSubnetwork_update1(cnName, subnetworkName string) string {
   155  	return fmt.Sprintf(`
   156  resource "google_compute_network" "custom-test" {
   157  	name = "%s"
   158  	auto_create_subnetworks = false
   159  }
   160  
   161  resource "google_compute_subnetwork" "network-with-private-google-access" {
   162  	name = "%s"
   163  	ip_cidr_range = "10.2.0.0/16"
   164  	region = "us-central1"
   165  	network = "${google_compute_network.custom-test.self_link}"
   166  	private_ip_google_access = true
   167  }
   168  `, cnName, subnetworkName)
   169  }
   170  
   171  func testAccComputeSubnetwork_update2(cnName, subnetworkName string) string {
   172  	return fmt.Sprintf(`
   173  resource "google_compute_network" "custom-test" {
   174  	name = "%s"
   175  	auto_create_subnetworks = false
   176  }
   177  
   178  resource "google_compute_subnetwork" "network-with-private-google-access" {
   179  	name = "%s"
   180  	ip_cidr_range = "10.2.0.0/16"
   181  	region = "us-central1"
   182  	network = "${google_compute_network.custom-test.self_link}"
   183  }
   184  `, cnName, subnetworkName)
   185  }