73c532e772
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>
78 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|