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  }