github.com/myhau/pulumi/pkg/v3@v3.70.2-0.20221116134521-f2775972e587/util/validation/stack_test.go (about) 1 package validation 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 8 "github.com/pulumi/pulumi/sdk/v3/go/common/apitype" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestValidateStackTag(t *testing.T) { 13 t.Parallel() 14 15 t.Run("valid tags", func(t *testing.T) { 16 t.Parallel() 17 18 names := []string{ 19 "tag-name", 20 "-", 21 "..", 22 "foo:bar:baz", 23 "__underscores__", 24 "AaBb123", 25 } 26 27 for _, name := range names { 28 name := name 29 t.Run(name, func(t *testing.T) { 30 tags := map[apitype.StackTagName]string{ 31 name: "tag-value", 32 } 33 34 err := ValidateStackTags(tags) 35 assert.NoError(t, err) 36 }) 37 } 38 }) 39 40 t.Run("invalid stack tag names", func(t *testing.T) { 41 t.Parallel() 42 43 var names = []string{ 44 "tag!", 45 "something with spaces", 46 "escape\nsequences\there", 47 "😄", 48 "foo***bar", 49 } 50 51 for _, name := range names { 52 name := name 53 t.Run(name, func(t *testing.T) { 54 t.Parallel() 55 56 tags := map[apitype.StackTagName]string{ 57 name: "tag-value", 58 } 59 60 err := ValidateStackTags(tags) 61 assert.Error(t, err) 62 msg := "stack tag names may only contain alphanumerics, hyphens, underscores, periods, or colons" 63 assert.Equal(t, err.Error(), msg) 64 }) 65 } 66 }) 67 68 t.Run("too long tag name", func(t *testing.T) { 69 t.Parallel() 70 71 tags := map[apitype.StackTagName]string{ 72 strings.Repeat("v", 41): "tag-value", 73 } 74 75 err := ValidateStackTags(tags) 76 assert.Error(t, err) 77 msg := fmt.Sprintf("stack tag %q is too long (max length %d characters)", strings.Repeat("v", 41), 40) 78 assert.Equal(t, err.Error(), msg) 79 }) 80 81 t.Run("too long tag value", func(t *testing.T) { 82 t.Parallel() 83 84 tags := map[apitype.StackTagName]string{ 85 "tag-name": strings.Repeat("v", 257), 86 } 87 88 err := ValidateStackTags(tags) 89 assert.Error(t, err) 90 msg := fmt.Sprintf("stack tag %q value is too long (max length %d characters)", "tag-name", 256) 91 assert.Equal(t, err.Error(), msg) 92 }) 93 }