github.com/kikitux/packer@v0.10.1-0.20160322154024-6237df566f9f/builder/azure/arm/template_parameters_test.go (about)

     1  // Copyright (c) Microsoft Corporation. All rights reserved.
     2  // Licensed under the MIT License. See the LICENSE file in builder/azure for license information.
     3  
     4  package arm
     5  
     6  import (
     7  	"encoding/json"
     8  	"fmt"
     9  	"strings"
    10  	"testing"
    11  )
    12  
    13  func TestTemplateParametersShouldHaveExpectedKeys(t *testing.T) {
    14  	params := TemplateParameters{
    15  		AdminUsername:      &TemplateParameter{"sentinel"},
    16  		AdminPassword:      &TemplateParameter{"sentinel"},
    17  		DnsNameForPublicIP: &TemplateParameter{"sentinel"},
    18  		ImageOffer:         &TemplateParameter{"sentinel"},
    19  		ImagePublisher:     &TemplateParameter{"sentinel"},
    20  		ImageSku:           &TemplateParameter{"sentinel"},
    21  		OSDiskName:         &TemplateParameter{"sentinel"},
    22  		SshAuthorizedKey:   &TemplateParameter{"sentinel"},
    23  		StorageAccountName: &TemplateParameter{"sentinel"},
    24  		VMName:             &TemplateParameter{"sentinel"},
    25  		VMSize:             &TemplateParameter{"sentinel"},
    26  	}
    27  
    28  	bs, err := json.Marshal(params)
    29  	if err != nil {
    30  		t.Fail()
    31  	}
    32  
    33  	var doc map[string]*json.RawMessage
    34  	err = json.Unmarshal(bs, &doc)
    35  
    36  	if err != nil {
    37  		t.Fail()
    38  	}
    39  
    40  	expectedKeys := []string{
    41  		"adminUsername",
    42  		"adminPassword",
    43  		"dnsNameForPublicIP",
    44  		"imageOffer",
    45  		"imagePublisher",
    46  		"imageSku",
    47  		"osDiskName",
    48  		"sshAuthorizedKey",
    49  		"storageAccountName",
    50  		"vmSize",
    51  		"vmName",
    52  	}
    53  
    54  	for _, expectedKey := range expectedKeys {
    55  		_, containsKey := doc[expectedKey]
    56  		if containsKey == false {
    57  			t.Fatalf("Expected template parameters to contain the key value '%s', but it did not!", expectedKey)
    58  		}
    59  	}
    60  }
    61  
    62  func TestParameterValuesShouldBeSet(t *testing.T) {
    63  	params := TemplateParameters{
    64  		AdminUsername:      &TemplateParameter{"adminusername00"},
    65  		AdminPassword:      &TemplateParameter{"adminpassword00"},
    66  		DnsNameForPublicIP: &TemplateParameter{"dnsnameforpublicip00"},
    67  		ImageOffer:         &TemplateParameter{"imageoffer00"},
    68  		ImagePublisher:     &TemplateParameter{"imagepublisher00"},
    69  		ImageSku:           &TemplateParameter{"imagesku00"},
    70  		OSDiskName:         &TemplateParameter{"osdiskname00"},
    71  		SshAuthorizedKey:   &TemplateParameter{"sshauthorizedkey00"},
    72  		StorageAccountName: &TemplateParameter{"storageaccountname00"},
    73  		VMName:             &TemplateParameter{"vmname00"},
    74  		VMSize:             &TemplateParameter{"vmsize00"},
    75  	}
    76  
    77  	bs, err := json.Marshal(params)
    78  	if err != nil {
    79  		t.Fail()
    80  	}
    81  
    82  	var doc map[string]map[string]interface{}
    83  	err = json.Unmarshal(bs, &doc)
    84  
    85  	if err != nil {
    86  		t.Fail()
    87  	}
    88  
    89  	for k, v := range doc {
    90  		var expectedValue = fmt.Sprintf("%s00", strings.ToLower(k))
    91  		var actualValue, exists = v["value"]
    92  		if exists != true {
    93  			t.Errorf("Expected to find a 'value' key under '%s', but it was missing!", k)
    94  		}
    95  
    96  		if expectedValue != actualValue {
    97  			t.Errorf("Expected '%s', but actual was '%s'!", expectedValue, actualValue)
    98  		}
    99  	}
   100  }
   101  
   102  func TestEmptyValuesShouldBeOmitted(t *testing.T) {
   103  	params := TemplateParameters{
   104  		AdminUsername: &TemplateParameter{"adminusername00"},
   105  	}
   106  
   107  	bs, err := json.Marshal(params)
   108  	if err != nil {
   109  		t.Fail()
   110  	}
   111  
   112  	var doc map[string]map[string]interface{}
   113  	err = json.Unmarshal(bs, &doc)
   114  
   115  	if err != nil {
   116  		t.Fail()
   117  	}
   118  
   119  	if len(doc) != 1 {
   120  		t.Errorf("Failed to omit empty template parameters from the JSON document!")
   121  		t.Errorf("doc=%+v", doc)
   122  		t.Fail()
   123  	}
   124  }