package docker import ( "os/exec" "regexp" "testing" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/terraform" ) var ( testAccProviders map[string]terraform.ResourceProvider testAccProvider *schema.Provider ) func init() { testAccProvider = Provider().(*schema.Provider) testAccProviders = map[string]terraform.ResourceProvider{ "docker": testAccProvider, } } func TestProvider(t *testing.T) { if err := Provider().(*schema.Provider).InternalValidate(); err != nil { t.Fatalf("err: %s", err) } } func TestAccDockerProvider_WithIncompleteRegistryAuth(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, Steps: []resource.TestStep{ { Config: testAccDockerProviderWithIncompleteAuthConfig, ExpectError: regexp.MustCompile(`401 Unauthorized`), }, }, }) } func TestProvider_impl(t *testing.T) { var _ terraform.ResourceProvider = Provider() } func testAccPreCheck(t *testing.T) { cmd := exec.Command("docker", "version") if err := cmd.Run(); err != nil { t.Fatalf("Docker must be available: %s", err) } cmd = exec.Command("docker", "node", "ls") if err := cmd.Run(); err != nil { cmd = exec.Command("docker", "swarm", "init") if err := cmd.Run(); err != nil { t.Fatalf("Docker swarm could not be initialized: %s", err) } } err := testAccProvider.Configure(terraform.NewResourceConfigRaw(nil)) if err != nil { t.Fatal(err) } } const testAccDockerProviderWithIncompleteAuthConfig = ` provider "docker" { alias = "private" registry_auth { address = "" username = "" password = "" } } data "docker_registry_image" "foobar" { provider = "docker.private" name = "localhost:15000/helloworld:1.0" } `