74 lines
1.3 KiB
Go
74 lines
1.3 KiB
Go
package resource
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform/helper/config"
|
|
"github.com/hashicorp/terraform/terraform"
|
|
)
|
|
|
|
func TestMapResources(t *testing.T) {
|
|
m := &Map{
|
|
Mapping: map[string]Resource{
|
|
"aws_elb": Resource{},
|
|
"aws_instance": Resource{},
|
|
},
|
|
}
|
|
|
|
rts := m.Resources()
|
|
|
|
expected := []terraform.ResourceType{
|
|
terraform.ResourceType{
|
|
Name: "aws_elb",
|
|
},
|
|
terraform.ResourceType{
|
|
Name: "aws_instance",
|
|
},
|
|
}
|
|
|
|
if !reflect.DeepEqual(rts, expected) {
|
|
t.Fatalf("bad: %#v", rts)
|
|
}
|
|
}
|
|
|
|
func TestMapValidate(t *testing.T) {
|
|
m := &Map{
|
|
Mapping: map[string]Resource{
|
|
"aws_elb": Resource{
|
|
ConfigValidator: &config.Validator{
|
|
Required: []string{"foo"},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
var c *terraform.ResourceConfig
|
|
var ws []string
|
|
var es []error
|
|
|
|
// Valid
|
|
c = testConfigForMap(t, map[string]interface{}{"foo": "bar"})
|
|
ws, es = m.Validate("aws_elb", c)
|
|
if len(ws) > 0 {
|
|
t.Fatalf("bad: %#v", ws)
|
|
}
|
|
if len(es) > 0 {
|
|
t.Fatalf("bad: %#v", es)
|
|
}
|
|
|
|
// Invalid
|
|
c = testConfigForMap(t, map[string]interface{}{})
|
|
ws, es = m.Validate("aws_elb", c)
|
|
if len(ws) > 0 {
|
|
t.Fatalf("bad: %#v", ws)
|
|
}
|
|
if len(es) == 0 {
|
|
t.Fatalf("bad: %#v", es)
|
|
}
|
|
}
|
|
|
|
func testConfigForMap(t *testing.T, c map[string]interface{}) *terraform.ResourceConfig {
|
|
return terraform.NewResourceConfigRaw(c)
|
|
}
|