command: More fixes (but still not all) for "apply" command tests
This commit is contained in:
parent
de3944b9bf
commit
34a29315f7
|
@ -9,12 +9,12 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
"github.com/zclconf/go-cty/cty"
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
|
||||||
|
@ -475,14 +475,14 @@ func TestApply_noArgs(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
if err := os.Chdir(testFixturePath("plan")); err != nil {
|
if err := os.Chdir(testFixturePath("apply")); err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
defer os.Chdir(cwd)
|
defer os.Chdir(cwd)
|
||||||
|
|
||||||
statePath := testTempFile(t)
|
statePath := testTempFile(t)
|
||||||
|
|
||||||
p := testProvider()
|
p := applyFixtureProvider()
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &ApplyCommand{
|
c := &ApplyCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
|
@ -774,7 +774,7 @@ func TestApply_refresh(t *testing.T) {
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
|
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
|
||||||
&states.ResourceInstanceObjectSrc{
|
&states.ResourceInstanceObjectSrc{
|
||||||
AttrsJSON: []byte(`{"id":"bar"}`),
|
AttrsJSON: []byte(`{"ami":"bar"}`),
|
||||||
Status: states.ObjectReady,
|
Status: states.ObjectReady,
|
||||||
},
|
},
|
||||||
addrs.ProviderConfig{Type: "test"}.Absolute(addrs.RootModuleInstance),
|
addrs.ProviderConfig{Type: "test"}.Absolute(addrs.RootModuleInstance),
|
||||||
|
@ -884,6 +884,16 @@ func TestApply_shutdown(t *testing.T) {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p.GetSchemaReturn = &terraform.ProviderSchema{
|
||||||
|
ResourceTypes: map[string]*configschema.Block{
|
||||||
|
"test_instance": {
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"ami": {Type: cty.String, Optional: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
args := []string{
|
args := []string{
|
||||||
"-state", statePath,
|
"-state", statePath,
|
||||||
"-auto-approve",
|
"-auto-approve",
|
||||||
|
@ -918,7 +928,7 @@ func TestApply_state(t *testing.T) {
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
|
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
|
||||||
&states.ResourceInstanceObjectSrc{
|
&states.ResourceInstanceObjectSrc{
|
||||||
AttrsJSON: []byte(`{"id":"bar"}`),
|
AttrsJSON: []byte(`{"ami":"bar"}`),
|
||||||
Status: states.ObjectReady,
|
Status: states.ObjectReady,
|
||||||
},
|
},
|
||||||
addrs.ProviderConfig{Type: "test"}.Absolute(addrs.RootModuleInstance),
|
addrs.ProviderConfig{Type: "test"}.Absolute(addrs.RootModuleInstance),
|
||||||
|
@ -932,6 +942,11 @@ func TestApply_state(t *testing.T) {
|
||||||
"ami": cty.StringVal("bar"),
|
"ami": cty.StringVal("bar"),
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
p.ApplyResourceChangeResponse = providers.ApplyResourceChangeResponse{
|
||||||
|
NewState: cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"ami": cty.StringVal("bar"),
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &ApplyCommand{
|
c := &ApplyCommand{
|
||||||
|
@ -954,7 +969,8 @@ func TestApply_state(t *testing.T) {
|
||||||
// Verify that the provider was called with the existing state
|
// Verify that the provider was called with the existing state
|
||||||
actual := p.PlanResourceChangeRequest.PriorState
|
actual := p.PlanResourceChangeRequest.PriorState
|
||||||
expected := cty.ObjectVal(map[string]cty.Value{
|
expected := cty.ObjectVal(map[string]cty.Value{
|
||||||
"id": cty.StringVal("bar"),
|
"id": cty.NullVal(cty.String),
|
||||||
|
"ami": cty.StringVal("bar"),
|
||||||
})
|
})
|
||||||
if !expected.RawEquals(actual) {
|
if !expected.RawEquals(actual) {
|
||||||
t.Fatalf("wrong prior state during plan\ngot: %#v\nwant: %#v", actual, expected)
|
t.Fatalf("wrong prior state during plan\ngot: %#v\nwant: %#v", actual, expected)
|
||||||
|
@ -962,7 +978,8 @@ func TestApply_state(t *testing.T) {
|
||||||
|
|
||||||
actual = p.ApplyResourceChangeRequest.PriorState
|
actual = p.ApplyResourceChangeRequest.PriorState
|
||||||
expected = cty.ObjectVal(map[string]cty.Value{
|
expected = cty.ObjectVal(map[string]cty.Value{
|
||||||
"id": cty.StringVal("bar"),
|
"id": cty.NullVal(cty.String),
|
||||||
|
"ami": cty.StringVal("bar"),
|
||||||
})
|
})
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Fatalf("wrong prior state during apply\ngot: %#v\nwant: %#v", actual, expected)
|
t.Fatalf("wrong prior state during apply\ngot: %#v\nwant: %#v", actual, expected)
|
||||||
|
@ -1049,6 +1066,21 @@ func TestApply_vars(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p.GetSchemaReturn = &terraform.ProviderSchema{
|
||||||
|
ResourceTypes: map[string]*configschema.Block{
|
||||||
|
"test_instance": {
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"value": {Type: cty.String, Optional: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
p.ApplyResourceChangeFn = func (req providers.ApplyResourceChangeRequest) providers.ApplyResourceChangeResponse {
|
||||||
|
return providers.ApplyResourceChangeResponse{
|
||||||
|
NewState: req.PlannedState,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
actual := ""
|
actual := ""
|
||||||
p.DiffFn = func(
|
p.DiffFn = func(
|
||||||
info *terraform.InstanceInfo,
|
info *terraform.InstanceInfo,
|
||||||
|
@ -1093,6 +1125,21 @@ func TestApply_varFile(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p.GetSchemaReturn = &terraform.ProviderSchema{
|
||||||
|
ResourceTypes: map[string]*configschema.Block{
|
||||||
|
"test_instance": {
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"value": {Type: cty.String, Optional: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
p.ApplyResourceChangeFn = func (req providers.ApplyResourceChangeRequest) providers.ApplyResourceChangeResponse {
|
||||||
|
return providers.ApplyResourceChangeResponse{
|
||||||
|
NewState: req.PlannedState,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
actual := ""
|
actual := ""
|
||||||
p.DiffFn = func(
|
p.DiffFn = func(
|
||||||
info *terraform.InstanceInfo,
|
info *terraform.InstanceInfo,
|
||||||
|
@ -1147,6 +1194,21 @@ func TestApply_varFileDefault(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p.GetSchemaReturn = &terraform.ProviderSchema{
|
||||||
|
ResourceTypes: map[string]*configschema.Block{
|
||||||
|
"test_instance": {
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"value": {Type: cty.String, Optional: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
p.ApplyResourceChangeFn = func (req providers.ApplyResourceChangeRequest) providers.ApplyResourceChangeResponse {
|
||||||
|
return providers.ApplyResourceChangeResponse{
|
||||||
|
NewState: req.PlannedState,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
actual := ""
|
actual := ""
|
||||||
p.DiffFn = func(
|
p.DiffFn = func(
|
||||||
info *terraform.InstanceInfo,
|
info *terraform.InstanceInfo,
|
||||||
|
@ -1200,6 +1262,21 @@ func TestApply_varFileDefaultJSON(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p.GetSchemaReturn = &terraform.ProviderSchema{
|
||||||
|
ResourceTypes: map[string]*configschema.Block{
|
||||||
|
"test_instance": {
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"value": {Type: cty.String, Optional: true},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
p.ApplyResourceChangeFn = func (req providers.ApplyResourceChangeRequest) providers.ApplyResourceChangeResponse {
|
||||||
|
return providers.ApplyResourceChangeResponse{
|
||||||
|
NewState: req.PlannedState,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
actual := ""
|
actual := ""
|
||||||
p.DiffFn = func(
|
p.DiffFn = func(
|
||||||
info *terraform.InstanceInfo,
|
info *terraform.InstanceInfo,
|
||||||
|
@ -1235,7 +1312,7 @@ func TestApply_backup(t *testing.T) {
|
||||||
Name: "foo",
|
Name: "foo",
|
||||||
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
|
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
|
||||||
&states.ResourceInstanceObjectSrc{
|
&states.ResourceInstanceObjectSrc{
|
||||||
AttrsJSON: []byte(`{"id":"bar"}`),
|
AttrsJSON: []byte("{\n \"id\": \"bar\"\n }"),
|
||||||
Status: states.ObjectReady,
|
Status: states.ObjectReady,
|
||||||
},
|
},
|
||||||
addrs.ProviderConfig{Type: "test"}.Absolute(addrs.RootModuleInstance),
|
addrs.ProviderConfig{Type: "test"}.Absolute(addrs.RootModuleInstance),
|
||||||
|
@ -1284,8 +1361,13 @@ func TestApply_backup(t *testing.T) {
|
||||||
|
|
||||||
actual := backupState.RootModule().Resources["test_instance.foo"]
|
actual := backupState.RootModule().Resources["test_instance.foo"]
|
||||||
expected := originalState.RootModule().Resources["test_instance.foo"]
|
expected := originalState.RootModule().Resources["test_instance.foo"]
|
||||||
if !reflect.DeepEqual(actual, expected) {
|
if !cmp.Equal(actual, expected) {
|
||||||
t.Fatalf("bad: %#v %#v", actual, expected)
|
t.Fatalf(
|
||||||
|
"wrong aws_instance.foo state\n%s",
|
||||||
|
cmp.Diff(expected, actual, cmp.Transformer("bytesAsString", func (b []byte) string {
|
||||||
|
return string(b)
|
||||||
|
})),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1322,17 +1404,19 @@ func TestApply_disableBackup(t *testing.T) {
|
||||||
// Verify that the provider was called with the existing state
|
// Verify that the provider was called with the existing state
|
||||||
actual := p.PlanResourceChangeRequest.PriorState
|
actual := p.PlanResourceChangeRequest.PriorState
|
||||||
expected := cty.ObjectVal(map[string]cty.Value{
|
expected := cty.ObjectVal(map[string]cty.Value{
|
||||||
"id": cty.StringVal("bar"),
|
"id": cty.StringVal("bar"),
|
||||||
|
"ami": cty.NullVal(cty.String),
|
||||||
})
|
})
|
||||||
if actual != expected {
|
if !expected.RawEquals(actual) {
|
||||||
t.Fatalf("wrong prior state during plan\ngot: %#v\nwant: %#v", actual, expected)
|
t.Fatalf("wrong prior state during plan\ngot: %#v\nwant: %#v", actual, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = p.ApplyResourceChangeRequest.PriorState
|
actual = p.ApplyResourceChangeRequest.PriorState
|
||||||
expected = cty.ObjectVal(map[string]cty.Value{
|
expected = cty.ObjectVal(map[string]cty.Value{
|
||||||
"id": cty.StringVal("bar"),
|
"id": cty.StringVal("bar"),
|
||||||
|
"ami": cty.NullVal(cty.String),
|
||||||
})
|
})
|
||||||
if actual != expected {
|
if !expected.RawEquals(actual) {
|
||||||
t.Fatalf("wrong prior state during apply\ngot: %#v\nwant: %#v", actual, expected)
|
t.Fatalf("wrong prior state during apply\ngot: %#v\nwant: %#v", actual, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1479,6 +1563,7 @@ func applyFixtureSchema() *terraform.ProviderSchema {
|
||||||
ResourceTypes: map[string]*configschema.Block{
|
ResourceTypes: map[string]*configschema.Block{
|
||||||
"test_instance": {
|
"test_instance": {
|
||||||
Attributes: map[string]*configschema.Attribute{
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"id": {Type: cty.String, Optional: true, Computed: true},
|
||||||
"ami": {Type: cty.String, Optional: true},
|
"ami": {Type: cty.String, Optional: true},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1501,7 +1586,7 @@ func applyFixtureProvider() *terraform.MockProvider {
|
||||||
}
|
}
|
||||||
p.ApplyResourceChangeFn = func (req providers.ApplyResourceChangeRequest) providers.ApplyResourceChangeResponse {
|
p.ApplyResourceChangeFn = func (req providers.ApplyResourceChangeRequest) providers.ApplyResourceChangeResponse {
|
||||||
return providers.ApplyResourceChangeResponse{
|
return providers.ApplyResourceChangeResponse{
|
||||||
NewState: req.PlannedState,
|
NewState: cty.UnknownAsNull(req.PlannedState),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return p
|
return p
|
||||||
|
|
Loading…
Reference in New Issue