diff --git a/fastly/block_fastly_service_backend_test.go b/fastly/block_fastly_service_backend_test.go index ff8a2b8cd..bb6701d3e 100644 --- a/fastly/block_fastly_service_backend_test.go +++ b/fastly/block_fastly_service_backend_test.go @@ -394,37 +394,12 @@ resource "fastly_service_vcl" "foo" { }`, serviceName, domainName, backendAddress, backendName, backendAddress, backendName, backendAddress, backendName, backendAddress, backendName) } -func testAccServiceVCLBackendWithBooleans(serviceName, domainName, backendAddress, backendName string, useSSL, sslCheckCert, preferIPv6, autoLoadbalance bool) string { - return fmt.Sprintf(` -resource "fastly_service_vcl" "foo" { - name = "%s" - - domain { - name = "%s" - } - - backend { - address = "%s" - name = "%s" - use_ssl = %t - ssl_check_cert = %t - prefer_ipv6 = %t - auto_loadbalance = %t - port = 443 - } - - force_destroy = true -}`, serviceName, domainName, backendAddress, backendName, useSSL, sslCheckCert, preferIPv6, autoLoadbalance) -} - -func TestAccFastlyServiceVCLBackend_PreserveBooleansDuringNameChange(t *testing.T) { +func TestAccFastlyServiceVCLBackend_BooleanFieldsPreservedOnTimeoutUpdate(t *testing.T) { var service gofastly.ServiceDetail serviceName := acctest.RandomWithPrefix("tf-backend") domainName := fmt.Sprintf("test.%s.com", acctest.RandString(10)) backendAddress := "httpbin.org" - - initialBackendName := "test-backend" - updatedBackendName := "test-backend-renamed" + backendName := "test-backend" // Values we want to preserve useSSL := true @@ -432,13 +407,21 @@ func TestAccFastlyServiceVCLBackend_PreserveBooleansDuringNameChange(t *testing. preferIPv6 := true autoLoadbalance := true + initialConnectTimeout := 1000 + updatedConnectTimeout := 2000 + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, ProviderFactories: testAccProviders, CheckDestroy: testAccCheckServiceVCLDestroy, + Steps: []resource.TestStep{ + // Step 1: Create { - Config: testAccServiceVCLBackendWithBooleans(serviceName, domainName, backendAddress, initialBackendName, useSSL, sslCheckCert, preferIPv6, autoLoadbalance), + Config: testAccServiceVCLBackendWithBooleansAndConnectTimeout( + serviceName, domainName, backendAddress, backendName, + useSSL, sslCheckCert, preferIPv6, autoLoadbalance, initialConnectTimeout, + ), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists("fastly_service_vcl.foo", &service), resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.#", "1"), @@ -446,11 +429,15 @@ func TestAccFastlyServiceVCLBackend_PreserveBooleansDuringNameChange(t *testing. resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.ssl_check_cert", fmt.Sprintf("%t", sslCheckCert)), resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.prefer_ipv6", fmt.Sprintf("%t", preferIPv6)), resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.auto_loadbalance", fmt.Sprintf("%t", autoLoadbalance)), + resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.connect_timeout", fmt.Sprintf("%d", initialConnectTimeout)), ), }, + // Step 2: Update connect_timeout only { - // Change name only, rest stays the same - Config: testAccServiceVCLBackendWithBooleans(serviceName, domainName, backendAddress, updatedBackendName, useSSL, sslCheckCert, preferIPv6, autoLoadbalance), + Config: testAccServiceVCLBackendWithBooleansAndConnectTimeout( + serviceName, domainName, backendAddress, backendName, + useSSL, sslCheckCert, preferIPv6, autoLoadbalance, updatedConnectTimeout, + ), Check: resource.ComposeTestCheckFunc( testAccCheckServiceExists("fastly_service_vcl.foo", &service), resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.#", "1"), @@ -458,12 +445,41 @@ func TestAccFastlyServiceVCLBackend_PreserveBooleansDuringNameChange(t *testing. resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.ssl_check_cert", fmt.Sprintf("%t", sslCheckCert)), resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.prefer_ipv6", fmt.Sprintf("%t", preferIPv6)), resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.auto_loadbalance", fmt.Sprintf("%t", autoLoadbalance)), + resource.TestCheckResourceAttr("fastly_service_vcl.foo", "backend.0.connect_timeout", fmt.Sprintf("%d", updatedConnectTimeout)), ), }, }, }) } +func testAccServiceVCLBackendWithBooleansAndConnectTimeout( + serviceName, domainName, backendAddress, backendName string, + useSSL, sslCheckCert, preferIPv6, autoLoadbalance bool, + connectTimeout int, +) string { + return fmt.Sprintf(` +resource "fastly_service_vcl" "foo" { + name = "%s" + + domain { + name = "%s" + } + + backend { + address = "%s" + name = "%s" + use_ssl = %t + ssl_check_cert = %t + prefer_ipv6 = %t + auto_loadbalance = %t + connect_timeout = %d + } + + force_destroy = true +}`, serviceName, domainName, backendAddress, backendName, + useSSL, sslCheckCert, preferIPv6, autoLoadbalance, connectTimeout) +} + func TestAccFastlyServiceVCLBackend_Minimal(t *testing.T) { var service gofastly.ServiceDetail serviceName := fmt.Sprintf("tf-test-%s", acctest.RandString(10))