terraform/config/loader_test.go

125 lines
2.1 KiB
Go
Raw Normal View History

2014-05-23 01:56:28 +02:00
package config
import (
"fmt"
"path/filepath"
"strings"
"testing"
)
2014-05-24 00:42:29 +02:00
func TestLoad_badType(t *testing.T) {
_, err := Load(filepath.Join(fixtureDir, "bad_type.tf.nope"))
if err == nil {
t.Fatal("should have error")
}
}
2014-05-23 01:56:28 +02:00
func TestLoadBasic(t *testing.T) {
c, err := Load(filepath.Join(fixtureDir, "basic.tf"))
if err != nil {
t.Fatalf("err: %s", err)
}
if c == nil {
t.Fatal("config should not be nil")
}
actual := variablesStr(c.Variables)
if actual != strings.TrimSpace(basicVariablesStr) {
t.Fatalf("bad:\n%s", actual)
}
actual = resourcesStr(c.Resources)
if actual != strings.TrimSpace(basicResourcesStr) {
t.Fatalf("bad:\n%s", actual)
}
}
2014-05-24 00:11:57 +02:00
func TestLoadBasic_import(t *testing.T) {
c, err := Load(filepath.Join(fixtureDir, "import.tf"))
if err != nil {
t.Fatalf("err: %s", err)
}
if c == nil {
t.Fatal("config should not be nil")
}
actual := variablesStr(c.Variables)
if actual != strings.TrimSpace(importVariablesStr) {
t.Fatalf("bad:\n%s", actual)
}
actual = resourcesStr(c.Resources)
2014-05-24 01:25:54 +02:00
if actual != strings.TrimSpace(importResourcesStr) {
2014-05-24 00:11:57 +02:00
t.Fatalf("bad:\n%s", actual)
}
}
2014-05-23 01:56:28 +02:00
// This helper turns a resources field into a deterministic
// string value for comparison in tests.
func resourcesStr(rs []Resource) string {
result := ""
for _, r := range rs {
result += fmt.Sprintf(
"%s[%s]\n",
r.Type,
r.Name)
for k, _ := range r.Config {
result += fmt.Sprintf(" %s\n", k)
}
}
return strings.TrimSpace(result)
}
// This helper turns a variables field into a deterministic
// string value for comparison in tests.
func variablesStr(vs map[string]Variable) string {
result := ""
for k, v := range vs {
2014-05-24 01:09:41 +02:00
if v.Default == "" {
v.Default = "<>"
}
if v.Description == "" {
v.Description = "<>"
}
2014-05-23 01:56:28 +02:00
result += fmt.Sprintf(
"%s\n %s\n %s\n",
k,
v.Default,
v.Description)
}
return strings.TrimSpace(result)
}
const basicResourcesStr = `
aws_security_group[firewall]
aws_instance[web]
ami
security_groups
`
const basicVariablesStr = `
foo
bar
bar
`
2014-05-24 00:11:57 +02:00
2014-05-24 01:25:54 +02:00
const importResourcesStr = `
aws_security_group[db]
aws_security_group[web]
`
2014-05-24 00:11:57 +02:00
const importVariablesStr = `
2014-05-24 01:09:41 +02:00
bar
<>
<>
2014-05-24 00:11:57 +02:00
foo
bar
bar
`