github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/namespacedname/namespacedname_test.go (about) 1 package namespacedname 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestParse(t *testing.T) { 11 namespace := "namespace" 12 name := "resource-name" 13 emptyStr := "" 14 15 t.Run("Should return error if empty string is provided", func(t *testing.T) { 16 // given 17 str := emptyStr 18 19 // when 20 namespacedname, err := Parse(str) 21 22 // then 23 require.Error(t, err) 24 require.Contains(t, err.Error(), "the value cannot be empty") 25 require.Empty(t, namespacedname) 26 }) 27 28 t.Run("Should return error when the string is not in the expected format", func(t *testing.T) { 29 // given 30 str := fmt.Sprintf("%s/%s/wrong", namespace, name) 31 32 // when 33 namespacedname, err := Parse(str) 34 35 // then 36 require.Error(t, err) 37 require.Contains(t, err.Error(), fmt.Sprintf("the given value: %s is not in the expected format - <namespace>/<name>", str)) 38 require.Empty(t, namespacedname) 39 }) 40 41 t.Run("If single value is provided should return it as resource name and use default namespace", func(t *testing.T) { 42 // given 43 str := name 44 45 // when 46 namespacedname, err := Parse(str) 47 48 // then 49 require.NoError(t, err) 50 require.Equal(t, namespacedname.Namespace, "default") 51 require.Equal(t, namespacedname.Name, name) 52 }) 53 54 t.Run("Should return error when only slash is provided", func(t *testing.T) { 55 // given 56 str := "/" 57 58 // when 59 namespacedname, err := Parse(str) 60 61 // then 62 require.Error(t, err) 63 require.Contains(t, err.Error(), "resource name should not be empty") 64 require.Empty(t, namespacedname) 65 }) 66 67 t.Run("If namespace is empty use the provided resource name with default namespace", func(t *testing.T) { 68 // given 69 str := fmt.Sprintf("%s/%s", emptyStr, name) 70 71 // when 72 namespacedname, err := Parse(str) 73 74 // then 75 require.NoError(t, err) 76 require.Equal(t, namespacedname.Namespace, "default") 77 require.Equal(t, namespacedname.Name, name) 78 }) 79 80 t.Run("Successful when both namespace and resource name are provided", func(t *testing.T) { 81 // given 82 str := fmt.Sprintf("%s/%s", namespace, name) 83 84 // when 85 namespacedname, err := Parse(str) 86 87 // then 88 require.NoError(t, err) 89 require.Equal(t, namespacedname.Namespace, namespace) 90 require.Equal(t, namespacedname.Name, name) 91 }) 92 }