99 lines
1.8 KiB
Go
99 lines
1.8 KiB
Go
package customdiff
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform/helper/schema"
|
|
)
|
|
|
|
func TestValidateChange(t *testing.T) {
|
|
var called bool
|
|
var gotOld, gotNew string
|
|
|
|
provider := testProvider(
|
|
map[string]*schema.Schema{
|
|
"foo": {
|
|
Type: schema.TypeString,
|
|
Optional: true,
|
|
},
|
|
},
|
|
ValidateChange("foo", func(old, new, meta interface{}) error {
|
|
called = true
|
|
gotOld = old.(string)
|
|
gotNew = new.(string)
|
|
return errors.New("bad")
|
|
}),
|
|
)
|
|
|
|
_, err := testDiff(
|
|
provider,
|
|
map[string]string{
|
|
"foo": "bar",
|
|
},
|
|
map[string]string{
|
|
"foo": "baz",
|
|
},
|
|
)
|
|
|
|
if err == nil {
|
|
t.Fatalf("Diff succeeded; want error")
|
|
}
|
|
if got, want := err.Error(), "bad"; got != want {
|
|
t.Fatalf("wrong error message %q; want %q", got, want)
|
|
}
|
|
|
|
if !called {
|
|
t.Fatal("ValidateChange callback was not called")
|
|
}
|
|
if got, want := gotOld, "bar"; got != want {
|
|
t.Errorf("wrong old value %q; want %q", got, want)
|
|
}
|
|
if got, want := gotNew, "baz"; got != want {
|
|
t.Errorf("wrong new value %q; want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestValidateValue(t *testing.T) {
|
|
var called bool
|
|
var gotValue string
|
|
|
|
provider := testProvider(
|
|
map[string]*schema.Schema{
|
|
"foo": {
|
|
Type: schema.TypeString,
|
|
Optional: true,
|
|
},
|
|
},
|
|
ValidateValue("foo", func(value, meta interface{}) error {
|
|
called = true
|
|
gotValue = value.(string)
|
|
return errors.New("bad")
|
|
}),
|
|
)
|
|
|
|
_, err := testDiff(
|
|
provider,
|
|
map[string]string{
|
|
"foo": "bar",
|
|
},
|
|
map[string]string{
|
|
"foo": "baz",
|
|
},
|
|
)
|
|
|
|
if err == nil {
|
|
t.Fatalf("Diff succeeded; want error")
|
|
}
|
|
if got, want := err.Error(), "bad"; got != want {
|
|
t.Fatalf("wrong error message %q; want %q", got, want)
|
|
}
|
|
|
|
if !called {
|
|
t.Fatal("ValidateValue callback was not called")
|
|
}
|
|
if got, want := gotValue, "baz"; got != want {
|
|
t.Errorf("wrong value %q; want %q", got, want)
|
|
}
|
|
}
|