terraform-provider-google/google/resource_runtimeconfig_variable_test.go
Joe Selman 4b77dca918 Revert "Revert "Add t.Parallel to all acceptance tests (#558)""
This reverts commit 8ab9d96d25 and revives
the original commit that adds t.Parallel to all acceptance tests. It
turns out test failures were unrelated to this change (rather, they were
related to quota issues).
2017-10-12 15:07:29 -07:00

281 lines
7.8 KiB
Go

package google
import (
"fmt"
"regexp"
"testing"
"time"
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
"google.golang.org/api/runtimeconfig/v1beta1"
)
func TestAccRuntimeconfigVariable_basic(t *testing.T) {
t.Parallel()
var variable runtimeconfig.Variable
varName := fmt.Sprintf("variable-test-%s", acctest.RandString(10))
varText := "this is my test value"
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckRuntimeconfigVariableDestroy,
Steps: []resource.TestStep{
{
Config: testAccRuntimeconfigVariable_basicText(varName, varText),
Check: resource.ComposeTestCheckFunc(
testAccCheckRuntimeconfigVariableExists(
"google_runtimeconfig_variable.foobar", &variable),
testAccCheckRuntimeconfigVariableText(&variable, varText),
testAccCheckRuntimeconfigVariableUpdateTime("google_runtimeconfig_variable.foobar"),
),
},
},
})
}
func TestAccRuntimeconfigVariable_basicUpdate(t *testing.T) {
t.Parallel()
var variable runtimeconfig.Variable
configName := fmt.Sprintf("some-name-%s", acctest.RandString(10))
varName := fmt.Sprintf("variable-test-%s", acctest.RandString(10))
varText := "this is my test value"
varText2 := "this is my updated value"
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckRuntimeconfigVariableDestroy,
Steps: []resource.TestStep{
{
Config: testAccRuntimeconfigVariable_basicTextUpdate(configName, varName, varText),
Check: resource.ComposeTestCheckFunc(
testAccCheckRuntimeconfigVariableExists(
"google_runtimeconfig_variable.foobar", &variable),
testAccCheckRuntimeconfigVariableText(&variable, varText),
),
}, {
Config: testAccRuntimeconfigVariable_basicTextUpdate(configName, varName, varText2),
Check: resource.ComposeTestCheckFunc(
testAccCheckRuntimeconfigVariableExists(
"google_runtimeconfig_variable.foobar", &variable),
testAccCheckRuntimeconfigVariableText(&variable, varText2),
),
},
},
})
}
func TestAccRuntimeconfigVariable_basicValue(t *testing.T) {
t.Parallel()
var variable runtimeconfig.Variable
varName := fmt.Sprintf("variable-test-%s", acctest.RandString(10))
varValue := "Zm9vYmFyCg=="
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckRuntimeconfigVariableDestroy,
Steps: []resource.TestStep{
{
Config: testAccRuntimeconfigVariable_basicValue(varName, varValue),
Check: resource.ComposeTestCheckFunc(
testAccCheckRuntimeconfigVariableExists(
"google_runtimeconfig_variable.foobar", &variable),
testAccCheckRuntimeconfigVariableValue(&variable, varValue),
testAccCheckRuntimeconfigVariableUpdateTime("google_runtimeconfig_variable.foobar"),
),
},
},
})
}
func TestAccRuntimeconfigVariable_errorsOnBothValueAndText(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccRuntimeconfigVariable_invalidBothTextValue(),
ExpectError: regexp.MustCompile("conflicts with"),
},
},
})
}
func TestAccRuntimeconfigVariable_errorsOnMissingValueAndText(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccRuntimeconfigVariable_invalidMissingTextValue(),
ExpectError: regexp.MustCompile("You must specify one of value or text"),
},
},
})
}
func testAccCheckRuntimeconfigVariableExists(resourceName string, variable *runtimeconfig.Variable) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[resourceName]
if !ok {
return fmt.Errorf("Not found: %s", resourceName)
}
if rs.Primary.ID == "" {
return fmt.Errorf("No ID is set")
}
config := testAccProvider.Meta().(*Config)
found, err := config.clientRuntimeconfig.Projects.Configs.Variables.Get(rs.Primary.ID).Do()
if err != nil {
return err
}
*variable = *found
return nil
}
}
func testAccCheckRuntimeconfigVariableUpdateTime(resourceName string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[resourceName]
if !ok {
return fmt.Errorf("Not found: %s", resourceName)
}
updateTime := rs.Primary.Attributes["update_time"]
if updateTime == "" {
return fmt.Errorf("No update time set for resource %s", resourceName)
}
// Make sure it's a valid rfc 3339 date
_, err := time.Parse(time.RFC3339, updateTime)
if err != nil {
return fmt.Errorf("Error while parsing update time for resource %s: %s", resourceName, err.Error())
}
return nil
}
}
func testAccCheckRuntimeconfigVariableText(variable *runtimeconfig.Variable, text string) resource.TestCheckFunc {
return func(s *terraform.State) error {
if variable.Text != text {
return fmt.Errorf("Variable %s had incorrect text: expected '%s' but found '%s'", variable.Name,
text, variable.Text)
}
return nil
}
}
func testAccCheckRuntimeconfigVariableValue(variable *runtimeconfig.Variable, value string) resource.TestCheckFunc {
return func(s *terraform.State) error {
if variable.Value != value {
return fmt.Errorf("Variable %s had incorrect value: expected '%s' but found '%s'", variable.Name,
value, variable.Value)
}
return nil
}
}
func testAccCheckRuntimeconfigVariableDestroy(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
for _, rs := range s.RootModule().Resources {
if rs.Type != "google_runtimeconfig_variable" {
continue
}
_, err := config.clientRuntimeconfig.Projects.Configs.Variables.Get(rs.Primary.ID).Do()
if err == nil {
return fmt.Errorf("Runtimeconfig variable still exists")
}
}
return nil
}
func testAccRuntimeconfigVariable_basicText(name, text string) string {
return fmt.Sprintf(`
resource "google_runtimeconfig_config" "foobar" {
name = "some-config-%s"
}
resource "google_runtimeconfig_variable" "foobar" {
parent = "${google_runtimeconfig_config.foobar.name}"
name = "%s"
text = "%s"
}`, acctest.RandString(10), name, text)
}
func testAccRuntimeconfigVariable_basicTextUpdate(configName, name, text string) string {
return fmt.Sprintf(`
resource "google_runtimeconfig_config" "foobar" {
name = "%s"
}
resource "google_runtimeconfig_variable" "foobar" {
parent = "${google_runtimeconfig_config.foobar.name}"
name = "%s"
text = "%s"
}`, configName, name, text)
}
func testAccRuntimeconfigVariable_basicValue(name, value string) string {
return fmt.Sprintf(`
resource "google_runtimeconfig_config" "foobar" {
name = "some-config-%s"
}
resource "google_runtimeconfig_variable" "foobar" {
parent = "${google_runtimeconfig_config.foobar.name}"
name = "%s"
value = "%s"
}`, acctest.RandString(10), name, value)
}
func testAccRuntimeconfigVariable_invalidBothTextValue() string {
return fmt.Sprintf(`
resource "google_runtimeconfig_config" "foobar" {
name = "some-config-%s"
}
resource "google_runtimeconfig_variable" "foobar" {
parent = "${google_runtimeconfig_config.foobar.name}"
name = "%s"
text = "here's my value"
value = "Zm9vYmFyCg=="
}`, acctest.RandString(10), acctest.RandString(10))
}
func testAccRuntimeconfigVariable_invalidMissingTextValue() string {
return fmt.Sprintf(`
resource "google_runtimeconfig_config" "foobar" {
name = "some-config-%s"
}
resource "google_runtimeconfig_variable" "foobar" {
parent = "${google_runtimeconfig_config.foobar.name}"
name = "my-variable-namespace/%s"
}`, acctest.RandString(10), acctest.RandString(10))
}