provider/azurerm: Add tests for tag scaffolding

This commit is contained in:
James Nugent 2016-01-18 12:28:04 -05:00
parent f374ca77e7
commit a640ef9f16
1 changed files with 97 additions and 0 deletions

View File

@ -0,0 +1,97 @@
package azurerm
import (
"fmt"
"strings"
"testing"
)
func TestValidateMaximumNumberOfARMTags(t *testing.T) {
tagsMap := make(map[string]interface{})
for i := 0; i < 16; i++ {
tagsMap[fmt.Sprintf("key%d", i)] = fmt.Sprintf("value%d", i)
}
_, es := validateAzureRMTags(tagsMap, "tags")
if len(es) != 1 {
t.Fatal("Expected one validation error for too many tags")
}
if !strings.Contains(es[0].Error(), "a maximum of 15 tags") {
t.Fatal("Wrong validation error message for too many tags")
}
}
func TestValidateARMTagMaxKeyLength(t *testing.T) {
tooLongKey := strings.Repeat("long", 128) + "a"
tagsMap := make(map[string]interface{})
tagsMap[tooLongKey] = "value"
_, es := validateAzureRMTags(tagsMap, "tags")
if len(es) != 1 {
t.Fatal("Expected one validation error for a key which is > 512 chars")
}
if !strings.Contains(es[0].Error(), "maximum length for a tag key") {
t.Fatal("Wrong validation error message maximum tag key length")
}
if !strings.Contains(es[0].Error(), tooLongKey) {
t.Fatal("Expected validated error to contain the key name")
}
if !strings.Contains(es[0].Error(), "513") {
t.Fatal("Expected the length in the validation error for tag key")
}
}
func TestValidateARMTagMaxValueLength(t *testing.T) {
tagsMap := make(map[string]interface{})
tagsMap["toolong"] = strings.Repeat("long", 64) + "a"
_, es := validateAzureRMTags(tagsMap, "tags")
if len(es) != 1 {
t.Fatal("Expected one validation error for a value which is > 256 chars")
}
if !strings.Contains(es[0].Error(), "maximum length for a tag value") {
t.Fatal("Wrong validation error message for maximum tag value length")
}
if !strings.Contains(es[0].Error(), "toolong") {
t.Fatal("Expected validated error to contain the key name")
}
if !strings.Contains(es[0].Error(), "257") {
t.Fatal("Expected the length in the validation error for value")
}
}
func TestExpandARMTags(t *testing.T) {
testData := make(map[string]interface{})
testData["key1"] = "value1"
testData["key2"] = 21
testData["key3"] = "value3"
tempExpanded := expandTags(testData)
expanded := *tempExpanded
if len(expanded) != 3 {
t.Fatalf("Expected 3 results in expanded tag map, got %d", len(expanded))
}
for k, v := range testData {
var strVal string
switch v.(type) {
case string:
strVal = v.(string)
case int:
strVal = fmt.Sprintf("%d", v.(int))
}
if *expanded[k] != strVal {
t.Fatalf("Expanded value %q incorrect: expected %q, got %q", k, strVal, expanded[k])
}
}
}