packer-cn/fix/fixer_amazon_private_ip_test.go
Brendan Devenney 73c532e772 Ensure amazon-private-ip fixes string values
The "ssh_private_ip" key works with either boolean values or string
representations of booleans. The fixer errors when the value is defined
as, for example, "true" (with quotation marks). This commit will attempt
to convert the string into a bool when necessary to ensure this case is
handled.

Signed-off-by: Brendan Devenney <brendan.devenney@cloudreach.com>
2018-07-05 16:57:54 +01:00

78 lines
1.5 KiB
Go

package fix
import (
"reflect"
"testing"
)
func TestFixerAmazonPrivateIP_Impl(t *testing.T) {
var _ Fixer = new(FixerAmazonPrivateIP)
}
func TestFixerAmazonPrivateIP(t *testing.T) {
cases := []struct {
Input map[string]interface{}
Expected map[string]interface{}
}{
// Attach field == false
{
Input: map[string]interface{}{
"type": "amazon-ebs",
"ssh_private_ip": false,
},
Expected: map[string]interface{}{
"type": "amazon-ebs",
"ssh_interface": "public_ip",
},
},
// Attach field == true
{
Input: map[string]interface{}{
"type": "amazon-ebs",
"ssh_private_ip": true,
},
Expected: map[string]interface{}{
"type": "amazon-ebs",
"ssh_interface": "private_ip",
},
},
// ssh_private_ip specified as string
{
Input: map[string]interface{}{
"type": "amazon-ebs",
"ssh_private_ip": "true",
},
Expected: map[string]interface{}{
"type": "amazon-ebs",
"ssh_interface": "private_ip",
},
},
}
for _, tc := range cases {
var f FixerAmazonPrivateIP
input := map[string]interface{}{
"builders": []map[string]interface{}{tc.Input},
}
expected := map[string]interface{}{
"builders": []map[string]interface{}{tc.Expected},
}
output, err := f.Fix(input)
if err != nil {
t.Fatalf("err: %s", err)
}
if !reflect.DeepEqual(output, expected) {
t.Fatalf("unexpected: %#v\nexpected: %#v\n", output, expected)
}
}
}