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 }