terraform-provider-google/google/resource_runtimeconfig_variable_test.go
The Magician c605b0bc4b [Terraform]: Apply gofmt -s to all files managed by MM (#2676)
<!-- This change is generated by MagicModules. -->
/cc @rileykarson
2018-12-20 17:22:22 -08:00

291 lines
8.1 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"),
),
},
{
ResourceName: "google_runtimeconfig_variable.foobar",
ImportState: true,
ImportStateVerify: true,
},
},
})
}
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"),
),
},
{
ResourceName: "google_runtimeconfig_variable.foobar",
ImportState: true,
ImportStateVerify: true,
},
},
})
}
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))
}