terraform: complete more nodes

This commit is contained in:
Mitchell Hashimoto 2015-02-03 19:19:18 -05:00
parent ac92c67cba
commit c2df70e499
3 changed files with 57 additions and 1 deletions

View File

@ -18,7 +18,9 @@ func (n *EvalConfigProvider) Args() ([]EvalNode, []EvalType) {
func (n *EvalConfigProvider) Eval(
ctx EvalContext, args []interface{}) (interface{}, error) {
return nil, nil
provider := args[0].(ResourceProvider)
config := args[1].(*ResourceConfig)
return nil, provider.Configure(config)
}
func (n *EvalConfigProvider) Type() EvalType {

View File

@ -1,9 +1,53 @@
package terraform
import (
"reflect"
"testing"
)
func TestEvalConfigProvider_impl(t *testing.T) {
var _ EvalNode = new(EvalConfigProvider)
}
func TestEvalConfigProvider(t *testing.T) {
config := testResourceConfig(t, map[string]interface{}{})
provider := &MockResourceProvider{}
n := &EvalConfigProvider{}
ctx := &MockEvalContext{ProviderProvider: provider}
args := []interface{}{provider, config}
if actual, err := n.Eval(ctx, args); err != nil {
t.Fatalf("err: %s", err)
} else if actual != nil {
t.Fatalf("bad: %#v", actual)
}
if !provider.ConfigureCalled {
t.Fatal("should be called")
}
if !reflect.DeepEqual(provider.ConfigureConfig, config) {
t.Fatalf("bad: %#v", provider.ConfigureConfig)
}
}
func TestEvalConfigProvider_args(t *testing.T) {
config := testResourceConfig(t, map[string]interface{}{})
provider := &MockResourceProvider{}
providerNode := &EvalLiteral{Value: provider}
configNode := &EvalLiteral{Value: config}
n := &EvalConfigProvider{Provider: providerNode, Config: configNode}
args, types := n.Args()
expectedArgs := []EvalNode{providerNode, configNode}
expectedTypes := []EvalType{EvalTypeResourceProvider, EvalTypeConfig}
if !reflect.DeepEqual(args, expectedArgs) {
t.Fatalf("bad: %#v", args)
}
if !reflect.DeepEqual(types, expectedTypes) {
t.Fatalf("bad: %#v", args)
}
}
func TestEvalInitProvider_impl(t *testing.T) {
var _ EvalNode = new(EvalInitProvider)
}

View File

@ -116,3 +116,13 @@ func TestResourceConfigGet(t *testing.T) {
}
}
}
func testResourceConfig(
t *testing.T, c map[string]interface{}) *ResourceConfig {
raw, err := config.NewRawConfig(c)
if err != nil {
t.Fatalf("err: %s", err)
}
return NewResourceConfig(raw)
}