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