terraform-provider-docker/internal/provider/resource_docker_config_test.go
Manuel Vogel ad3e56da2b
feat: migrate to terraform-sdk v2 (#102)
* chore: runs v2 upgrade cmd
* chore: moves all files into the internal provider dir
* feat: migrates main and provider
* fix: migrates tests to provider factories
* fix: replace import state passthrough ctx func
* chore: bump tf-sdk to v2.4.4
* fix: acc test by adding stop grace period
* fix: move to validate diag functions
* test: switch from ctx TODO to Background
* feat: add state upgrade for restart_policy and auth

Co-authored-by: Shunsuke Suzuki <suzuki-shunsuke@users.noreply.github.com>
2021-03-18 08:30:54 +01:00

111 lines
2.8 KiB
Go

package provider
import (
"context"
"fmt"
"testing"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
)
func TestAccDockerConfig_basic(t *testing.T) {
ctx := context.Background()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: providerFactories,
CheckDestroy: func(state *terraform.State) error {
return testCheckDockerConfigDestroy(ctx, state)
},
Steps: []resource.TestStep{
{
Config: `
resource "docker_config" "foo" {
name = "foo-config"
data = "Ymxhc2RzYmxhYmxhMTI0ZHNkd2VzZA=="
}
`,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("docker_config.foo", "name", "foo-config"),
resource.TestCheckResourceAttr("docker_config.foo", "data", "Ymxhc2RzYmxhYmxhMTI0ZHNkd2VzZA=="),
),
},
{
ResourceName: "docker_config.foo",
ImportState: true,
ImportStateVerify: true,
},
},
})
}
func TestAccDockerConfig_basicUpdatable(t *testing.T) {
ctx := context.Background()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: providerFactories,
CheckDestroy: func(state *terraform.State) error {
return testCheckDockerConfigDestroy(ctx, state)
},
Steps: []resource.TestStep{
{
Config: `
resource "docker_config" "foo" {
name = "tftest-myconfig-${replace(timestamp(),":", ".")}"
data = "Ymxhc2RzYmxhYmxhMTI0ZHNkd2VzZA=="
lifecycle {
ignore_changes = ["name"]
create_before_destroy = true
}
}
`,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("docker_config.foo", "data", "Ymxhc2RzYmxhYmxhMTI0ZHNkd2VzZA=="),
),
},
{
Config: `
resource "docker_config" "foo" {
name = "tftest-myconfig2-${replace(timestamp(),":", ".")}"
data = "U3VuIDI1IE1hciAyMDE4IDE0OjQ2OjE5IENFU1QK"
lifecycle {
ignore_changes = ["name"]
create_before_destroy = true
}
}
`,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("docker_config.foo", "data", "U3VuIDI1IE1hciAyMDE4IDE0OjQ2OjE5IENFU1QK"),
),
},
{
ResourceName: "docker_config.foo",
ImportState: true,
ImportStateVerify: true,
},
},
})
}
/////////////
// Helpers
/////////////
func testCheckDockerConfigDestroy(ctx context.Context, s *terraform.State) error {
client := testAccProvider.Meta().(*ProviderConfig).DockerClient
for _, rs := range s.RootModule().Resources {
if rs.Type != "configs" {
continue
}
id := rs.Primary.Attributes["id"]
_, _, err := client.ConfigInspectWithRaw(ctx, id)
if err == nil {
return fmt.Errorf("Config with id '%s' still exists", id)
}
return nil
}
return nil
}