github.com/cilium/cilium@v1.16.2/pkg/clustermesh/types/types_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package types 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestClusterNameValidate(t *testing.T) { 13 tests := []struct { 14 name string 15 clusterName string 16 check assert.ErrorAssertionFunc 17 }{ 18 { 19 name: "empty", 20 clusterName: "", 21 check: assert.Error, 22 }, 23 { 24 name: "single character", 25 clusterName: "a", 26 check: assert.NoError, 27 }, 28 { 29 name: "32 characters", 30 clusterName: "abcdefghijklmnopqrstuvwxyz-01234", 31 check: assert.NoError, 32 }, 33 { 34 name: "33 characters", 35 clusterName: "abcdefghijklmnopqrstuvwxyz-012345", 36 check: assert.Error, 37 }, 38 { 39 name: "start and end with lowercase letter", 40 clusterName: "az", 41 check: assert.NoError, 42 }, 43 { 44 name: "start and end with number", 45 clusterName: "09", 46 check: assert.NoError, 47 }, 48 { 49 name: "start with a dash", 50 clusterName: "-a", 51 check: assert.Error, 52 }, 53 { 54 name: "end with a dash", 55 clusterName: "0-", 56 check: assert.Error, 57 }, 58 { 59 name: "uppercase letters", 60 clusterName: "aBYz", 61 check: assert.Error, 62 }, 63 { 64 name: "invalid characters", 65 clusterName: "a^x", 66 check: assert.Error, 67 }, 68 } 69 70 for _, tt := range tests { 71 t.Run(tt.name, func(t *testing.T) { 72 tt.check(t, ValidateClusterName(tt.clusterName)) 73 }) 74 } 75 }