fix schemas and add deposed test

The schemas for provider and the resources didn't match, so the changes
were not going to be rendered at all.

Add a test which contains a deposed resource.
This commit is contained in:
James Bardin 2021-05-24 15:38:58 -04:00
parent cebbc8b246
commit aae642fb07
1 changed files with 69 additions and 6 deletions

View File

@ -121,14 +121,14 @@ func TestOperation_planNoChanges(t *testing.T) {
state.SetResourceInstanceCurrent( state.SetResourceInstanceCurrent(
addrs.Resource{ addrs.Resource{
Mode: addrs.ManagedResourceMode, Mode: addrs.ManagedResourceMode,
Type: "something", Type: "test_resource",
Name: "somewhere", Name: "somewhere",
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance), }.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
&states.ResourceInstanceObjectSrc{ &states.ResourceInstanceObjectSrc{
Status: states.ObjectReady, Status: states.ObjectReady,
AttrsJSON: []byte(`{}`), AttrsJSON: []byte(`{}`),
}, },
addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewBuiltInProvider("test")), addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewDefaultProvider("test")),
) )
}), }),
PriorState: states.NewState(), PriorState: states.NewState(),
@ -136,6 +136,69 @@ func TestOperation_planNoChanges(t *testing.T) {
}, },
"to update the Terraform state to match, create and apply a refresh-only plan", "to update the Terraform state to match, create and apply a refresh-only plan",
}, },
"drift detected with deposed": {
func(schemas *terraform.Schemas) *plans.Plan {
return &plans.Plan{
UIMode: plans.NormalMode,
Changes: plans.NewChanges(),
PrevRunState: states.BuildState(func(state *states.SyncState) {
state.SetResourceInstanceCurrent(
addrs.Resource{
Mode: addrs.ManagedResourceMode,
Type: "test_resource",
Name: "changes",
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
&states.ResourceInstanceObjectSrc{
Status: states.ObjectReady,
AttrsJSON: []byte(`{"foo":"b"}`),
},
addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewDefaultProvider("test")),
)
state.SetResourceInstanceDeposed(
addrs.Resource{
Mode: addrs.ManagedResourceMode,
Type: "test_resource",
Name: "broken",
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
states.NewDeposedKey(),
&states.ResourceInstanceObjectSrc{
Status: states.ObjectReady,
AttrsJSON: []byte(`{"foo":"c"}`),
},
addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewDefaultProvider("test")),
)
}),
PriorState: states.BuildState(func(state *states.SyncState) {
state.SetResourceInstanceCurrent(
addrs.Resource{
Mode: addrs.ManagedResourceMode,
Type: "test_resource",
Name: "changed",
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
&states.ResourceInstanceObjectSrc{
Status: states.ObjectReady,
AttrsJSON: []byte(`{"foo":"b"}`),
},
addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewDefaultProvider("test")),
)
state.SetResourceInstanceDeposed(
addrs.Resource{
Mode: addrs.ManagedResourceMode,
Type: "test_resource",
Name: "broken",
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
states.NewDeposedKey(),
&states.ResourceInstanceObjectSrc{
Status: states.ObjectReady,
AttrsJSON: []byte(`{"foo":"d"}`),
},
addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewDefaultProvider("test")),
)
}),
}
},
"to update the Terraform state to match, create and apply a refresh-only plan",
},
"drift detected in refresh-only mode": { "drift detected in refresh-only mode": {
func(schemas *terraform.Schemas) *plans.Plan { func(schemas *terraform.Schemas) *plans.Plan {
return &plans.Plan{ return &plans.Plan{
@ -145,14 +208,14 @@ func TestOperation_planNoChanges(t *testing.T) {
state.SetResourceInstanceCurrent( state.SetResourceInstanceCurrent(
addrs.Resource{ addrs.Resource{
Mode: addrs.ManagedResourceMode, Mode: addrs.ManagedResourceMode,
Type: "something", Type: "test_resource",
Name: "somewhere", Name: "somewhere",
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance), }.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
&states.ResourceInstanceObjectSrc{ &states.ResourceInstanceObjectSrc{
Status: states.ObjectReady, Status: states.ObjectReady,
AttrsJSON: []byte(`{}`), AttrsJSON: []byte(`{}`),
}, },
addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewBuiltInProvider("test")), addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewDefaultProvider("test")),
) )
}), }),
PriorState: states.NewState(), PriorState: states.NewState(),
@ -169,14 +232,14 @@ func TestOperation_planNoChanges(t *testing.T) {
state.SetResourceInstanceCurrent( state.SetResourceInstanceCurrent(
addrs.Resource{ addrs.Resource{
Mode: addrs.ManagedResourceMode, Mode: addrs.ManagedResourceMode,
Type: "something", Type: "test_resource",
Name: "somewhere", Name: "somewhere",
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance), }.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
&states.ResourceInstanceObjectSrc{ &states.ResourceInstanceObjectSrc{
Status: states.ObjectReady, Status: states.ObjectReady,
AttrsJSON: []byte(`{}`), AttrsJSON: []byte(`{}`),
}, },
addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewBuiltInProvider("test")), addrs.RootModuleInstance.ProviderConfigDefault(addrs.NewDefaultProvider("test")),
) )
}), }),
PriorState: states.NewState(), PriorState: states.NewState(),