core: Fix tests for EvalConfigProvider

The interface of this eval node has changed for v0.12, now requiring both
a provider address and the actual provider object.

We also need to give it a working ctx.EvalBlock implementation on the
mock EvalContext, so we just use installSimpleEval here to get our simple
implementation that just knows how to evaluate constant expressions.
This commit is contained in:
Martin Atkins 2018-05-11 10:53:16 -07:00
parent 9833d9991d
commit 0a59da418a

View File

@ -49,11 +49,20 @@ func TestEvalConfigProvider_impl(t *testing.T) {
func TestEvalConfigProvider(t *testing.T) {
config := &configs.Provider{
Name: "foo",
Config: configs.SynthBody("", map[string]cty.Value{
"test_string": cty.StringVal("hello"),
}),
}
provider := mockProviderWithConfigSchema(simpleTestSchema())
rp := ResourceProvider(provider)
n := &EvalConfigProvider{
Addr: addrs.ProviderConfig{Type: "foo"},
Config: config,
Provider: &rp,
}
provider := &MockResourceProvider{}
n := &EvalConfigProvider{Config: config}
ctx := &MockEvalContext{ProviderProvider: provider}
ctx.installSimpleEval()
if _, err := n.Eval(ctx); err != nil {
t.Fatalf("err: %s", err)
}
@ -61,8 +70,13 @@ func TestEvalConfigProvider(t *testing.T) {
if !ctx.ConfigureProviderCalled {
t.Fatal("should be called")
}
if !reflect.DeepEqual(ctx.ConfigureProviderConfig, config) {
t.Fatalf("bad: %#v", ctx.ConfigureProviderConfig)
gotObj := ctx.ConfigureProviderConfig
if !gotObj.Type().HasAttribute("test_string") {
t.Fatal("configuration object does not have \"test_string\" attribute")
}
if got, want := gotObj.GetAttr("test_string"), cty.StringVal("hello"); !got.RawEquals(want) {
t.Errorf("wrong configuration value\ngot: %#v\nwant: %#v", got, want)
}
}