113 lines
2.9 KiB
Go
113 lines
2.9 KiB
Go
package template
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestTemplateParametersShouldHaveExpectedKeys(t *testing.T) {
|
|
params := TemplateParameters{
|
|
AdminUsername: &TemplateParameter{Value: "sentinel"},
|
|
AdminPassword: &TemplateParameter{Value: "sentinel"},
|
|
DnsNameForPublicIP: &TemplateParameter{Value: "sentinel"},
|
|
OSDiskName: &TemplateParameter{Value: "sentinel"},
|
|
StorageAccountBlobEndpoint: &TemplateParameter{Value: "sentinel"},
|
|
VMName: &TemplateParameter{Value: "sentinel"},
|
|
VMSize: &TemplateParameter{Value: "sentinel"},
|
|
NsgName: &TemplateParameter{Value: "sentinel"},
|
|
}
|
|
|
|
bs, err := json.Marshal(params)
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
var doc map[string]*json.RawMessage
|
|
err = json.Unmarshal(bs, &doc)
|
|
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
expectedKeys := []string{
|
|
"adminUsername",
|
|
"adminPassword",
|
|
"dnsNameForPublicIP",
|
|
"osDiskName",
|
|
"storageAccountBlobEndpoint",
|
|
"vmSize",
|
|
"vmName",
|
|
"nsgName",
|
|
}
|
|
|
|
for _, expectedKey := range expectedKeys {
|
|
_, containsKey := doc[expectedKey]
|
|
if containsKey == false {
|
|
t.Fatalf("Expected template parameters to contain the key value '%s', but it did not!", expectedKey)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParameterValuesShouldBeSet(t *testing.T) {
|
|
params := TemplateParameters{
|
|
AdminUsername: &TemplateParameter{Value: "adminusername00"},
|
|
AdminPassword: &TemplateParameter{Value: "adminpassword00"},
|
|
DnsNameForPublicIP: &TemplateParameter{Value: "dnsnameforpublicip00"},
|
|
OSDiskName: &TemplateParameter{Value: "osdiskname00"},
|
|
StorageAccountBlobEndpoint: &TemplateParameter{Value: "storageaccountblobendpoint00"},
|
|
VMName: &TemplateParameter{Value: "vmname00"},
|
|
VMSize: &TemplateParameter{Value: "vmsize00"},
|
|
NsgName: &TemplateParameter{Value: "nsgname00"},
|
|
}
|
|
|
|
bs, err := json.Marshal(params)
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
var doc map[string]map[string]interface{}
|
|
err = json.Unmarshal(bs, &doc)
|
|
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
for k, v := range doc {
|
|
var expectedValue = fmt.Sprintf("%s00", strings.ToLower(k))
|
|
var actualValue, exists = v["value"]
|
|
if exists != true {
|
|
t.Errorf("Expected to find a 'value' key under '%s', but it was missing!", k)
|
|
}
|
|
|
|
if expectedValue != actualValue {
|
|
t.Errorf("Expected '%s', but actual was '%s'!", expectedValue, actualValue)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestEmptyValuesShouldBeOmitted(t *testing.T) {
|
|
params := TemplateParameters{
|
|
AdminUsername: &TemplateParameter{Value: "adminusername00"},
|
|
}
|
|
|
|
bs, err := json.Marshal(params)
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
var doc map[string]map[string]interface{}
|
|
err = json.Unmarshal(bs, &doc)
|
|
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
if len(doc) != 1 {
|
|
t.Errorf("Failed to omit empty template parameters from the JSON document!")
|
|
t.Errorf("doc=%+v", doc)
|
|
t.Fail()
|
|
}
|
|
}
|