github.com/cilium/cilium@v1.16.2/operator/pkg/model/translation/helper_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package translation 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 11 slim_metav1 "github.com/cilium/cilium/pkg/k8s/slim/k8s/apis/meta/v1" 12 ) 13 14 func TestParseNodeLabelSelector(t *testing.T) { 15 testCases := []struct { 16 desc string 17 input string 18 expectedLabelSelector *slim_metav1.LabelSelector 19 }{ 20 { 21 desc: "Empty", 22 input: "", 23 expectedLabelSelector: nil, 24 }, 25 { 26 desc: "Single label value", 27 input: "a=b", 28 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 29 "a": "b", 30 }}, 31 }, 32 { 33 desc: "Multiple label values", 34 input: "a=b,c=d,e=f", 35 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 36 "a": "b", 37 "c": "d", 38 "e": "f", 39 }}, 40 }, 41 { 42 desc: "Empty key is not allowed", 43 input: "a=b,c=d,=f", 44 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 45 "a": "b", 46 "c": "d", 47 }}, 48 }, 49 { 50 desc: "Empty value", 51 input: "a=b,c=d,e=", 52 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 53 "a": "b", 54 "c": "d", 55 "e": "", 56 }}, 57 }, 58 { 59 desc: "No value", 60 input: "a=b,c=d,e", 61 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 62 "a": "b", 63 "c": "d", 64 }}, 65 }, 66 { 67 desc: "Space before value", 68 input: "a=b,c=d,e= f", 69 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 70 "a": "b", 71 "c": "d", 72 "e": " f", 73 }}, 74 }, 75 { 76 desc: "Space after value", 77 input: "a=b,c=d,e=f ", 78 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 79 "a": "b", 80 "c": "d", 81 "e": "f ", 82 }}, 83 }, 84 { 85 desc: "Space before key", 86 input: "a=b,c=d, e=f", 87 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 88 "a": "b", 89 "c": "d", 90 " e": "f", 91 }}, 92 }, 93 { 94 desc: "Space after key", 95 input: "a=b,c=d,e =f", 96 expectedLabelSelector: &slim_metav1.LabelSelector{MatchLabels: map[string]slim_metav1.MatchLabelsValue{ 97 "a": "b", 98 "c": "d", 99 "e ": "f", 100 }}, 101 }, 102 } 103 for _, tC := range testCases { 104 t.Run(tC.desc, func(t *testing.T) { 105 ls := ParseNodeLabelSelector(tC.input) 106 107 assert.Equal(t, tC.expectedLabelSelector, ls) 108 }) 109 } 110 }