terraform/terraform/semantics_test.go

58 lines
1.1 KiB
Go

package terraform
import (
"testing"
)
func TestSMCUserVariables(t *testing.T) {
c := testConfig(t, "smc-uservars")
// Required variables not set
errs := smcUserVariables(c, nil)
if len(errs) == 0 {
t.Fatal("should have errors")
}
// Required variables set, optional variables unset
errs = smcUserVariables(c, map[string]interface{}{"foo": "bar"})
if len(errs) != 0 {
t.Fatalf("err: %#v", errs)
}
// Mapping element override
errs = smcUserVariables(c, map[string]interface{}{
"foo": "bar",
"map.foo": "baz",
})
if len(errs) == 0 {
t.Fatalf("err: %#v", errs)
}
// Mapping complete override
errs = smcUserVariables(c, map[string]interface{}{
"foo": "bar",
"map": "baz",
})
if len(errs) == 0 {
t.Fatal("should have errors")
}
}
func TestSMCUserVariables_mapFromJSON(t *testing.T) {
c := testConfig(t, "uservars-map")
// ensure that a single map in a list can satisfy a map variable, since it
// will be coerced later to a map
err := smcUserVariables(c, map[string]interface{}{
"test_map": []map[string]interface{}{
map[string]interface{}{
"foo": "bar",
},
},
})
if err != nil {
t.Fatal(err)
}
}