2015-02-06 22:31:59 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"testing"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
const exampleStateFile = `
|
|
|
|
{
|
|
|
|
"version": 1,
|
|
|
|
"serial": 1,
|
|
|
|
"modules": [
|
|
|
|
{
|
|
|
|
"path": [
|
|
|
|
"root"
|
|
|
|
],
|
|
|
|
"outputs": {},
|
|
|
|
"resources": {
|
|
|
|
"aws_instance.one": {
|
|
|
|
"type": "aws_instance",
|
|
|
|
"primary": {
|
|
|
|
"id": "i-aaaaaaaa",
|
|
|
|
"attributes": {
|
|
|
|
"ami": "ami-XXXXXXXX",
|
|
|
|
"id": "i-aaaaaaaa"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"aws_instance.two": {
|
|
|
|
"type": "aws_instance",
|
|
|
|
"primary": {
|
|
|
|
"id": "i-bbbbbbbb",
|
|
|
|
"attributes": {
|
|
|
|
"ami": "ami-YYYYYYYY",
|
|
|
|
"id": "i-bbbbbbbb"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"aws_security_group.example": {
|
|
|
|
"type": "aws_security_group",
|
|
|
|
"primary": {
|
|
|
|
"id": "sg-cccccccc",
|
|
|
|
"attributes": {
|
|
|
|
"description": "Whatever",
|
|
|
|
"id": "sg-cccccccc"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
`
|
|
|
|
|
|
|
|
func TestStateRead(t *testing.T) {
|
|
|
|
r := strings.NewReader(exampleStateFile)
|
|
|
|
|
|
|
|
var s state
|
|
|
|
err := s.read(r)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
|
|
|
exp := state{
|
|
|
|
Modules: []moduleState{
|
|
|
|
moduleState{
|
|
|
|
Resources: map[string]resourceState{
|
|
|
|
"aws_instance.one": resourceState{
|
|
|
|
Type: "aws_instance",
|
|
|
|
Primary: instanceState{
|
|
|
|
ID: "i-aaaaaaaa",
|
|
|
|
Attributes: map[string]string{
|
|
|
|
"ami": "ami-XXXXXXXX",
|
|
|
|
"id": "i-aaaaaaaa",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"aws_instance.two": resourceState{
|
|
|
|
Type: "aws_instance",
|
|
|
|
Primary: instanceState{
|
|
|
|
ID: "i-bbbbbbbb",
|
|
|
|
Attributes: map[string]string{
|
|
|
|
"ami": "ami-YYYYYYYY",
|
|
|
|
"id": "i-bbbbbbbb",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"aws_security_group.example": resourceState{
|
|
|
|
Type: "aws_security_group",
|
|
|
|
Primary: instanceState{
|
|
|
|
ID: "sg-cccccccc",
|
|
|
|
Attributes: map[string]string{
|
|
|
|
"description": "Whatever",
|
|
|
|
"id": "sg-cccccccc",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
assert.Equal(t, exp, s)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestInstances(t *testing.T) {
|
|
|
|
r := strings.NewReader(exampleStateFile)
|
|
|
|
|
|
|
|
var s state
|
|
|
|
err := s.read(r)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
|
|
|
inst := s.instances()
|
|
|
|
assert.Equal(t, 2, len(inst))
|
2015-02-09 21:09:40 +01:00
|
|
|
assert.Equal(t, "i-aaaaaaaa", inst["one"].ID)
|
|
|
|
assert.Equal(t, "i-bbbbbbbb", inst["two"].ID)
|
2015-02-06 22:31:59 +01:00
|
|
|
}
|