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  }