From 60ea42cd1cba6efafb5359f1efc9cc4fbed6fe56 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Fri, 7 Jul 2017 15:24:20 -0400 Subject: [PATCH] Add testProviderConfig to import tests Provider import tests previously didn't have to supply a config, but terraform now requires the provider to be declared for discovery. testProviderConfig returns a stub config with provider blocks based on the TestCase Providers. This allows basic import tests in providers to remain unchanged. --- helper/resource/testing.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/helper/resource/testing.go b/helper/resource/testing.go index 11b1a5cd6..d7de1a030 100644 --- a/helper/resource/testing.go +++ b/helper/resource/testing.go @@ -406,6 +406,10 @@ func Test(t TestT, c TestCase) { step) } else { if step.ImportState { + if step.Config == "" { + step.Config = testProviderConfig(c) + } + // Can optionally set step.Config in addition to // step.ImportState, to provide config for the import. state, err = testStepImportState(opts, state, step) @@ -499,6 +503,18 @@ func Test(t TestT, c TestCase) { } } +// testProviderConfig takes the list of Providers in a TestCase and returns a +// config with only empty provider blocks. This is useful for Import, where no +// config is provided, but the providers must be defined. +func testProviderConfig(c TestCase) string { + var lines []string + for p := range c.Providers { + lines = append(lines, fmt.Sprintf("provider %q {}\n", p)) + } + + return strings.Join(lines, "") +} + // testProviderResolver is a helper to build a ResourceProviderResolver // with pre instantiated ResourceProviders, so that we can reset them for the // test, while only calling the factory function once.