mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-07-09 03:28:29 +00:00
a93b1615ef
Signed-off-by: Modular Magician <magic-modules@google.com>
120 lines
3.2 KiB
Go
120 lines
3.2 KiB
Go
package google
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform/helper/acctest"
|
|
"github.com/hashicorp/terraform/helper/resource"
|
|
"github.com/hashicorp/terraform/terraform"
|
|
"strings"
|
|
)
|
|
|
|
func TestAccComputeBackendServiceSignedUrlKey_basic(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
context := map[string]interface{}{
|
|
"random_suffix": acctest.RandString(10),
|
|
}
|
|
|
|
resource.Test(t, resource.TestCase{
|
|
PreCheck: func() { testAccPreCheck(t) },
|
|
Providers: testAccProviders,
|
|
CheckDestroy: testAccCheckComputeBackendServiceSignedUrlKeyDestroy,
|
|
Steps: []resource.TestStep{
|
|
{
|
|
Config: testAccComputeBackendServiceSignedUrlKey_basic(context),
|
|
Check: testAccCheckComputeBackendServiceSignedUrlKeyCreated,
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func testAccComputeBackendServiceSignedUrlKey_basic(context map[string]interface{}) string {
|
|
return Nprintf(`
|
|
resource "google_compute_backend_service_signed_url_key" "backend_key" {
|
|
name = "testkey-%{random_suffix}"
|
|
key_value = "iAmAFakeKeyRandomBytes=="
|
|
backend_service = "${google_compute_backend_service.test_bs.name}"
|
|
}
|
|
|
|
resource "google_compute_backend_service" "test_bs" {
|
|
name = "testbs-%{random_suffix}"
|
|
health_checks = ["${google_compute_http_health_check.zero.self_link}"]
|
|
}
|
|
|
|
resource "google_compute_http_health_check" "zero" {
|
|
name = "test-check-%{random_suffix}"
|
|
request_path = "/"
|
|
check_interval_sec = 1
|
|
timeout_sec = 1
|
|
}
|
|
`, context)
|
|
}
|
|
|
|
func testAccCheckComputeBackendServiceSignedUrlKeyDestroy(s *terraform.State) error {
|
|
exists, err := checkComputeBackendServiceSignedUrlKeyExists(s)
|
|
if err != nil && !isGoogleApiErrorWithCode(err, 404) {
|
|
return err
|
|
}
|
|
if exists {
|
|
return fmt.Errorf("ComputeBackendServiceSignedUrlKey still exists")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func testAccCheckComputeBackendServiceSignedUrlKeyCreated(s *terraform.State) error {
|
|
exists, err := checkComputeBackendServiceSignedUrlKeyExists(s)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if !exists {
|
|
return fmt.Errorf("expected ComputeBackendServiceSignedUrlKey to have been created")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func checkComputeBackendServiceSignedUrlKeyExists(s *terraform.State) (bool, error) {
|
|
for name, rs := range s.RootModule().Resources {
|
|
if rs.Type != "google_compute_backend_service_signed_url_key" {
|
|
continue
|
|
}
|
|
if strings.HasPrefix(name, "data.") {
|
|
continue
|
|
}
|
|
|
|
config := testAccProvider.Meta().(*Config)
|
|
keyName := rs.Primary.ID
|
|
|
|
url, err := replaceVarsForTest(rs, "https://www.googleapis.com/compute/v1/projects/{{project}}/global/backendServices/{{backend_service}}")
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
res, err := sendRequest(config, "GET", url, nil)
|
|
if err == nil {
|
|
policyRaw, ok := res["cdnPolicy"]
|
|
if !ok {
|
|
return false, nil
|
|
}
|
|
|
|
policy := policyRaw.(map[string]interface{})
|
|
keyNames, ok := policy["signedUrlKeyNames"]
|
|
if !ok {
|
|
return false, nil
|
|
}
|
|
|
|
// Because the sensitive key value is not returned, all we can do is verify a
|
|
// key with this name exists and assume the key value hasn't been changed.
|
|
for _, k := range keyNames.([]interface{}) {
|
|
if k.(string) == keyName {
|
|
// Just return empty map to indicate key was found
|
|
return true, nil
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false, nil
|
|
}
|