mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-07-05 17:52:38 +00:00
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
|
||
|
}
|