helper/resource: more tests
This commit is contained in:
parent
e0fbd48afd
commit
55c1bf7f79
|
@ -22,6 +22,9 @@ type TestCheckFunc func(*terraform.State) error
|
||||||
|
|
||||||
// TestCase is a single acceptance test case used to test the apply/destroy
|
// TestCase is a single acceptance test case used to test the apply/destroy
|
||||||
// lifecycle of a resource in a specific configuration.
|
// lifecycle of a resource in a specific configuration.
|
||||||
|
//
|
||||||
|
// When the destroy plan is executed, the config from the last TestStep
|
||||||
|
// is used to plan it.
|
||||||
type TestCase struct {
|
type TestCase struct {
|
||||||
// Provider is the ResourceProvider that will be under test.
|
// Provider is the ResourceProvider that will be under test.
|
||||||
Providers map[string]terraform.ResourceProvider
|
Providers map[string]terraform.ResourceProvider
|
||||||
|
@ -99,6 +102,7 @@ func Test(t TestT, c TestCase) {
|
||||||
for i, step := range c.Steps {
|
for i, step := range c.Steps {
|
||||||
var err error
|
var err error
|
||||||
state, err = testStep(opts, state, step)
|
state, err = testStep(opts, state, step)
|
||||||
|
println(fmt.Sprintf("FOO: %#v", state))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(fmt.Sprintf(
|
t.Error(fmt.Sprintf(
|
||||||
"Step %d error: %s", i, err))
|
"Step %d error: %s", i, err))
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package resource
|
package resource
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -94,6 +95,7 @@ func TestTest_noEnv(t *testing.T) {
|
||||||
if err := os.Setenv(TestEnvVar, ""); err != nil {
|
if err := os.Setenv(TestEnvVar, ""); err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
defer os.Setenv(TestEnvVar, "1")
|
||||||
|
|
||||||
mt := new(mockT)
|
mt := new(mockT)
|
||||||
Test(mt, TestCase{})
|
Test(mt, TestCase{})
|
||||||
|
@ -103,6 +105,47 @@ func TestTest_noEnv(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTest_stepError(t *testing.T) {
|
||||||
|
mp := testProvider()
|
||||||
|
mp.ApplyReturn = &terraform.ResourceState{
|
||||||
|
ID: "foo",
|
||||||
|
}
|
||||||
|
|
||||||
|
checkDestroy := false
|
||||||
|
|
||||||
|
checkDestroyFn := func(*terraform.State) error {
|
||||||
|
checkDestroy = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStepFn := func(*terraform.State) error {
|
||||||
|
return fmt.Errorf("error")
|
||||||
|
}
|
||||||
|
|
||||||
|
mt := new(mockT)
|
||||||
|
Test(mt, TestCase{
|
||||||
|
Providers: map[string]terraform.ResourceProvider{
|
||||||
|
"test": mp,
|
||||||
|
},
|
||||||
|
CheckDestroy: checkDestroyFn,
|
||||||
|
Steps: []TestStep{
|
||||||
|
TestStep{
|
||||||
|
Config: testConfigStr,
|
||||||
|
Check: checkStepFn,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if !mt.failed() {
|
||||||
|
t.Fatal("test should've failed")
|
||||||
|
}
|
||||||
|
t.Logf("Fail message: %s", mt.failMessage())
|
||||||
|
|
||||||
|
if !checkDestroy {
|
||||||
|
t.Fatal("didn't call check for destroy")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// mockT implements TestT for testing
|
// mockT implements TestT for testing
|
||||||
type mockT struct {
|
type mockT struct {
|
||||||
ErrorCalled bool
|
ErrorCalled bool
|
||||||
|
@ -151,6 +194,13 @@ func (t *mockT) failMessage() string {
|
||||||
|
|
||||||
func testProvider() *terraform.MockResourceProvider {
|
func testProvider() *terraform.MockResourceProvider {
|
||||||
mp := new(terraform.MockResourceProvider)
|
mp := new(terraform.MockResourceProvider)
|
||||||
|
mp.DiffReturn = &terraform.ResourceDiff{
|
||||||
|
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||||
|
"foo": &terraform.ResourceAttrDiff{
|
||||||
|
New: "bar",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
mp.ResourcesReturn = []terraform.ResourceType{
|
mp.ResourcesReturn = []terraform.ResourceType{
|
||||||
terraform.ResourceType{Name: "test_instance"},
|
terraform.ResourceType{Name: "test_instance"},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue