github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/google/resource_compute_global_forwarding_rule_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 TestAccComputeGlobalForwardingRule_basic(t *testing.T) {
    13  	fr := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    14  	proxy1 := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    15  	proxy2 := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    16  	backend := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    17  	hc := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    18  	urlmap := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    19  
    20  	resource.Test(t, resource.TestCase{
    21  		PreCheck:     func() { testAccPreCheck(t) },
    22  		Providers:    testAccProviders,
    23  		CheckDestroy: testAccCheckComputeGlobalForwardingRuleDestroy,
    24  		Steps: []resource.TestStep{
    25  			resource.TestStep{
    26  				Config: testAccComputeGlobalForwardingRule_basic1(fr, proxy1, proxy2, backend, hc, urlmap),
    27  				Check: resource.ComposeTestCheckFunc(
    28  					testAccCheckComputeGlobalForwardingRuleExists(
    29  						"google_compute_global_forwarding_rule.foobar"),
    30  				),
    31  			},
    32  		},
    33  	})
    34  }
    35  
    36  func TestAccComputeGlobalForwardingRule_update(t *testing.T) {
    37  	fr := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    38  	proxy1 := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    39  	proxy2 := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    40  	backend := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    41  	hc := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    42  	urlmap := fmt.Sprintf("forwardrule-test-%s", acctest.RandString(10))
    43  
    44  	resource.Test(t, resource.TestCase{
    45  		PreCheck:     func() { testAccPreCheck(t) },
    46  		Providers:    testAccProviders,
    47  		CheckDestroy: testAccCheckComputeGlobalForwardingRuleDestroy,
    48  		Steps: []resource.TestStep{
    49  			resource.TestStep{
    50  				Config: testAccComputeGlobalForwardingRule_basic1(fr, proxy1, proxy2, backend, hc, urlmap),
    51  				Check: resource.ComposeTestCheckFunc(
    52  					testAccCheckComputeGlobalForwardingRuleExists(
    53  						"google_compute_global_forwarding_rule.foobar"),
    54  				),
    55  			},
    56  
    57  			resource.TestStep{
    58  				Config: testAccComputeGlobalForwardingRule_basic2(fr, proxy1, proxy2, backend, hc, urlmap),
    59  				Check: resource.ComposeTestCheckFunc(
    60  					testAccCheckComputeGlobalForwardingRuleExists(
    61  						"google_compute_global_forwarding_rule.foobar"),
    62  				),
    63  			},
    64  		},
    65  	})
    66  }
    67  
    68  func testAccCheckComputeGlobalForwardingRuleDestroy(s *terraform.State) error {
    69  	config := testAccProvider.Meta().(*Config)
    70  
    71  	for _, rs := range s.RootModule().Resources {
    72  		if rs.Type != "google_compute_global_forwarding_rule" {
    73  			continue
    74  		}
    75  
    76  		_, err := config.clientCompute.GlobalForwardingRules.Get(
    77  			config.Project, rs.Primary.ID).Do()
    78  		if err == nil {
    79  			return fmt.Errorf("Global Forwarding Rule still exists")
    80  		}
    81  	}
    82  
    83  	return nil
    84  }
    85  
    86  func testAccCheckComputeGlobalForwardingRuleExists(n string) resource.TestCheckFunc {
    87  	return func(s *terraform.State) error {
    88  		rs, ok := s.RootModule().Resources[n]
    89  		if !ok {
    90  			return fmt.Errorf("Not found: %s", n)
    91  		}
    92  
    93  		if rs.Primary.ID == "" {
    94  			return fmt.Errorf("No ID is set")
    95  		}
    96  
    97  		config := testAccProvider.Meta().(*Config)
    98  
    99  		found, err := config.clientCompute.GlobalForwardingRules.Get(
   100  			config.Project, rs.Primary.ID).Do()
   101  		if err != nil {
   102  			return err
   103  		}
   104  
   105  		if found.Name != rs.Primary.ID {
   106  			return fmt.Errorf("Global Forwarding Rule not found")
   107  		}
   108  
   109  		return nil
   110  	}
   111  }
   112  
   113  func testAccComputeGlobalForwardingRule_basic1(fr, proxy1, proxy2, backend, hc, urlmap string) string {
   114  	return fmt.Sprintf(`
   115  	resource "google_compute_global_forwarding_rule" "foobar" {
   116  		description = "Resource created for Terraform acceptance testing"
   117  		ip_protocol = "TCP"
   118  		name = "%s"
   119  		port_range = "80"
   120  		target = "${google_compute_target_http_proxy.foobar1.self_link}"
   121  	}
   122  
   123  	resource "google_compute_target_http_proxy" "foobar1" {
   124  		description = "Resource created for Terraform acceptance testing"
   125  		name = "%s"
   126  		url_map = "${google_compute_url_map.foobar.self_link}"
   127  	}
   128  
   129  	resource "google_compute_target_http_proxy" "foobar2" {
   130  		description = "Resource created for Terraform acceptance testing"
   131  		name = "%s"
   132  		url_map = "${google_compute_url_map.foobar.self_link}"
   133  	}
   134  
   135  	resource "google_compute_backend_service" "foobar" {
   136  		name = "%s"
   137  		health_checks = ["${google_compute_http_health_check.zero.self_link}"]
   138  	}
   139  
   140  	resource "google_compute_http_health_check" "zero" {
   141  		name = "%s"
   142  		request_path = "/"
   143  		check_interval_sec = 1
   144  		timeout_sec = 1
   145  	}
   146  
   147  	resource "google_compute_url_map" "foobar" {
   148  		name = "%s"
   149  		default_service = "${google_compute_backend_service.foobar.self_link}"
   150  		host_rule {
   151  			hosts = ["mysite.com", "myothersite.com"]
   152  			path_matcher = "boop"
   153  		}
   154  		path_matcher {
   155  			default_service = "${google_compute_backend_service.foobar.self_link}"
   156  			name = "boop"
   157  			path_rule {
   158  				paths = ["/*"]
   159  				service = "${google_compute_backend_service.foobar.self_link}"
   160  			}
   161  		}
   162  		test {
   163  			host = "mysite.com"
   164  			path = "/*"
   165  			service = "${google_compute_backend_service.foobar.self_link}"
   166  		}
   167  	}`, fr, proxy1, proxy2, backend, hc, urlmap)
   168  }
   169  
   170  func testAccComputeGlobalForwardingRule_basic2(fr, proxy1, proxy2, backend, hc, urlmap string) string {
   171  	return fmt.Sprintf(`
   172  	resource "google_compute_global_forwarding_rule" "foobar" {
   173  		description = "Resource created for Terraform acceptance testing"
   174  		ip_protocol = "TCP"
   175  		name = "%s"
   176  		port_range = "80"
   177  		target = "${google_compute_target_http_proxy.foobar2.self_link}"
   178  	}
   179  
   180  	resource "google_compute_target_http_proxy" "foobar1" {
   181  		description = "Resource created for Terraform acceptance testing"
   182  		name = "%s"
   183  		url_map = "${google_compute_url_map.foobar.self_link}"
   184  	}
   185  
   186  	resource "google_compute_target_http_proxy" "foobar2" {
   187  		description = "Resource created for Terraform acceptance testing"
   188  		name = "%s"
   189  		url_map = "${google_compute_url_map.foobar.self_link}"
   190  	}
   191  
   192  	resource "google_compute_backend_service" "foobar" {
   193  		name = "%s"
   194  		health_checks = ["${google_compute_http_health_check.zero.self_link}"]
   195  	}
   196  
   197  	resource "google_compute_http_health_check" "zero" {
   198  		name = "%s"
   199  		request_path = "/"
   200  		check_interval_sec = 1
   201  		timeout_sec = 1
   202  	}
   203  
   204  	resource "google_compute_url_map" "foobar" {
   205  		name = "%s"
   206  		default_service = "${google_compute_backend_service.foobar.self_link}"
   207  		host_rule {
   208  			hosts = ["mysite.com", "myothersite.com"]
   209  			path_matcher = "boop"
   210  		}
   211  		path_matcher {
   212  			default_service = "${google_compute_backend_service.foobar.self_link}"
   213  			name = "boop"
   214  			path_rule {
   215  				paths = ["/*"]
   216  				service = "${google_compute_backend_service.foobar.self_link}"
   217  			}
   218  		}
   219  		test {
   220  			host = "mysite.com"
   221  			path = "/*"
   222  			service = "${google_compute_backend_service.foobar.self_link}"
   223  		}
   224  	}`, fr, proxy1, proxy2, backend, hc, urlmap)
   225  }