command: Update import_test.go for new provider types

This only makes it compile. It does not yet ensure that the tests pass.
This commit is contained in:
Martin Atkins 2018-09-29 09:45:09 -07:00
parent 65341b0973
commit 54c1616d73
1 changed files with 97 additions and 69 deletions

View File

@ -8,11 +8,15 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/mitchellh/cli"
"github.com/zclconf/go-cty/cty"
"github.com/hashicorp/terraform/helper/copy" "github.com/hashicorp/terraform/helper/copy"
"github.com/hashicorp/terraform/plugin" "github.com/hashicorp/terraform/plugin"
"github.com/hashicorp/terraform/plugin/discovery" "github.com/hashicorp/terraform/plugin/discovery"
"github.com/hashicorp/terraform/providers"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform/terraform"
"github.com/mitchellh/cli" "github.com/hashicorp/terraform/tfdiags"
) )
func TestImport(t *testing.T) { func TestImport(t *testing.T) {
@ -29,12 +33,14 @@ func TestImport(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
&terraform.InstanceState{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
@ -48,8 +54,8 @@ func TestImport(t *testing.T) {
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportStr) testStateOutput(t, statePath, testImportStr)
@ -69,25 +75,35 @@ func TestImport_providerConfig(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
&terraform.InstanceState{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
configured := false configured := false
p.ConfigureFn = func(c *terraform.ResourceConfig) error { p.ConfigureNewFn = func(req providers.ConfigureRequest) providers.ConfigureResponse {
configured = true configured = true
if v, ok := c.Get("foo"); !ok || v.(string) != "bar" { cfg := req.Config
return fmt.Errorf("bad value: %#v", v) if !cfg.Type().HasAttribute("foo") {
return providers.ConfigureResponse{
Diagnostics: tfdiags.Diagnostics{}.Append(fmt.Errorf("configuration has no foo argument")),
}
}
if got, want := cfg.GetAttr("foo"), cty.StringVal("bar"); !want.RawEquals(got) {
return providers.ConfigureResponse{
Diagnostics: tfdiags.Diagnostics{}.Append(fmt.Errorf("foo argument is %#v, but want %#v", got, want)),
}
} }
return nil return providers.ConfigureResponse{}
} }
args := []string{ args := []string{
@ -104,8 +120,8 @@ func TestImport_providerConfig(t *testing.T) {
t.Fatal("Configure should be called") t.Fatal("Configure should be called")
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportStr) testStateOutput(t, statePath, testImportStr)
@ -151,12 +167,14 @@ func TestImport_remoteState(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
&terraform.InstanceState{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
@ -192,8 +210,8 @@ func TestImport_remoteState(t *testing.T) {
t.Fatal("Configure should be called") t.Fatal("Configure should be called")
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportStr) testStateOutput(t, statePath, testImportStr)
@ -213,12 +231,14 @@ func TestImport_providerConfigWithVar(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
&terraform.InstanceState{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
@ -249,8 +269,8 @@ func TestImport_providerConfigWithVar(t *testing.T) {
t.Fatal("Configure should be called") t.Fatal("Configure should be called")
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportStr) testStateOutput(t, statePath, testImportStr)
@ -270,12 +290,14 @@ func TestImport_providerConfigWithVarDefault(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
&terraform.InstanceState{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
@ -305,8 +327,8 @@ func TestImport_providerConfigWithVarDefault(t *testing.T) {
t.Fatal("Configure should be called") t.Fatal("Configure should be called")
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportStr) testStateOutput(t, statePath, testImportStr)
@ -326,12 +348,14 @@ func TestImport_providerConfigWithVarFile(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
&terraform.InstanceState{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
@ -362,8 +386,8 @@ func TestImport_providerConfigWithVarFile(t *testing.T) {
t.Fatal("Configure should be called") t.Fatal("Configure should be called")
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportStr) testStateOutput(t, statePath, testImportStr)
@ -383,12 +407,14 @@ func TestImport_customProvider(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
&terraform.InstanceState{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
@ -403,8 +429,8 @@ func TestImport_customProvider(t *testing.T) {
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportCustomProviderStr) testStateOutput(t, statePath, testImportCustomProviderStr)
@ -424,12 +450,14 @@ func TestImport_allowMissingResourceConfig(t *testing.T) {
}, },
} }
p.ImportStateFn = nil p.ImportResourceStateFn = nil
p.ImportStateReturn = []*terraform.InstanceState{ p.ImportResourceStateResponse = providers.ImportResourceStateResponse{
{ ImportedResources: []providers.ImportedResource{
ID: "yay", {
Ephemeral: terraform.EphemeralState{ TypeName: "test_instance",
Type: "test_instance", State: cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal("yay"),
}),
}, },
}, },
} }
@ -444,8 +472,8 @@ func TestImport_allowMissingResourceConfig(t *testing.T) {
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
} }
if !p.ImportStateCalled { if !p.ImportResourceStateCalled {
t.Fatal("ImportState should be called") t.Fatal("ImportResourceState should be called")
} }
testStateOutput(t, statePath, testImportStr) testStateOutput(t, statePath, testImportStr)