github.com/bradfeehan/terraform@v0.7.0-rc3.0.20170529055808-34b45c5ad841/builtin/providers/google/resource_compute_router_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 ) 11 12 func TestAccComputeRouter_basic(t *testing.T) { 13 resourceRegion := "europe-west1" 14 resource.Test(t, resource.TestCase{ 15 PreCheck: func() { testAccPreCheck(t) }, 16 Providers: testAccProviders, 17 CheckDestroy: testAccCheckComputeRouterDestroy, 18 Steps: []resource.TestStep{ 19 resource.TestStep{ 20 Config: testAccComputeRouterBasic(resourceRegion), 21 Check: resource.ComposeTestCheckFunc( 22 testAccCheckComputeRouterExists( 23 "google_compute_router.foobar"), 24 resource.TestCheckResourceAttr( 25 "google_compute_router.foobar", "region", resourceRegion), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func TestAccComputeRouter_noRegion(t *testing.T) { 33 providerRegion := "us-central1" 34 resource.Test(t, resource.TestCase{ 35 PreCheck: func() { testAccPreCheck(t) }, 36 Providers: testAccProviders, 37 CheckDestroy: testAccCheckComputeRouterDestroy, 38 Steps: []resource.TestStep{ 39 resource.TestStep{ 40 Config: testAccComputeRouterNoRegion(providerRegion), 41 Check: resource.ComposeTestCheckFunc( 42 testAccCheckComputeRouterExists( 43 "google_compute_router.foobar"), 44 resource.TestCheckResourceAttr( 45 "google_compute_router.foobar", "region", providerRegion), 46 ), 47 }, 48 }, 49 }) 50 } 51 52 func TestAccComputeRouter_networkLink(t *testing.T) { 53 resource.Test(t, resource.TestCase{ 54 PreCheck: func() { testAccPreCheck(t) }, 55 Providers: testAccProviders, 56 CheckDestroy: testAccCheckComputeRouterDestroy, 57 Steps: []resource.TestStep{ 58 resource.TestStep{ 59 Config: testAccComputeRouterNetworkLink(), 60 Check: testAccCheckComputeRouterExists( 61 "google_compute_router.foobar"), 62 }, 63 }, 64 }) 65 } 66 67 func testAccCheckComputeRouterDestroy(s *terraform.State) error { 68 config := testAccProvider.Meta().(*Config) 69 70 routersService := config.clientCompute.Routers 71 72 for _, rs := range s.RootModule().Resources { 73 if rs.Type != "google_compute_router" { 74 continue 75 } 76 77 project, err := getTestProject(rs.Primary, config) 78 if err != nil { 79 return err 80 } 81 82 region, err := getTestRegion(rs.Primary, config) 83 if err != nil { 84 return err 85 } 86 87 name := rs.Primary.Attributes["name"] 88 89 _, err = routersService.Get(project, region, name).Do() 90 91 if err == nil { 92 return fmt.Errorf("Error, Router %s in region %s still exists", 93 name, region) 94 } 95 } 96 97 return nil 98 } 99 100 func testAccCheckComputeRouterExists(n string) resource.TestCheckFunc { 101 return func(s *terraform.State) error { 102 rs, ok := s.RootModule().Resources[n] 103 if !ok { 104 return fmt.Errorf("Not found: %s", n) 105 } 106 107 if rs.Primary.ID == "" { 108 return fmt.Errorf("No ID is set") 109 } 110 111 config := testAccProvider.Meta().(*Config) 112 113 project, err := getTestProject(rs.Primary, config) 114 if err != nil { 115 return err 116 } 117 118 region, err := getTestRegion(rs.Primary, config) 119 if err != nil { 120 return err 121 } 122 123 name := rs.Primary.Attributes["name"] 124 125 routersService := config.clientCompute.Routers 126 _, err = routersService.Get(project, region, name).Do() 127 128 if err != nil { 129 return fmt.Errorf("Error Reading Router %s: %s", name, err) 130 } 131 132 return nil 133 } 134 } 135 136 func testAccComputeRouterBasic(resourceRegion string) string { 137 testId := acctest.RandString(10) 138 return fmt.Sprintf(` 139 resource "google_compute_network" "foobar" { 140 name = "router-test-%s" 141 } 142 resource "google_compute_subnetwork" "foobar" { 143 name = "router-test-%s" 144 network = "${google_compute_network.foobar.self_link}" 145 ip_cidr_range = "10.0.0.0/16" 146 region = "%s" 147 } 148 resource "google_compute_router" "foobar" { 149 name = "router-test-%s" 150 region = "${google_compute_subnetwork.foobar.region}" 151 network = "${google_compute_network.foobar.name}" 152 bgp { 153 asn = 64514 154 } 155 } 156 `, testId, testId, resourceRegion, testId) 157 } 158 159 func testAccComputeRouterNoRegion(providerRegion string) string { 160 testId := acctest.RandString(10) 161 return fmt.Sprintf(` 162 resource "google_compute_network" "foobar" { 163 name = "router-test-%s" 164 } 165 resource "google_compute_subnetwork" "foobar" { 166 name = "router-test-%s" 167 network = "${google_compute_network.foobar.self_link}" 168 ip_cidr_range = "10.0.0.0/16" 169 region = "%s" 170 } 171 resource "google_compute_router" "foobar" { 172 name = "router-test-%s" 173 network = "${google_compute_network.foobar.name}" 174 bgp { 175 asn = 64514 176 } 177 } 178 `, testId, testId, providerRegion, testId) 179 } 180 181 func testAccComputeRouterNetworkLink() string { 182 testId := acctest.RandString(10) 183 return fmt.Sprintf(` 184 resource "google_compute_network" "foobar" { 185 name = "router-test-%s" 186 } 187 resource "google_compute_subnetwork" "foobar" { 188 name = "router-test-%s" 189 network = "${google_compute_network.foobar.self_link}" 190 ip_cidr_range = "10.0.0.0/16" 191 region = "europe-west1" 192 } 193 resource "google_compute_router" "foobar" { 194 name = "router-test-%s" 195 region = "${google_compute_subnetwork.foobar.region}" 196 network = "${google_compute_network.foobar.self_link}" 197 bgp { 198 asn = 64514 199 } 200 } 201 `, testId, testId, testId) 202 }