github.com/cilium/cilium@v1.16.2/pkg/policy/api/rules_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package api 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 ) 11 12 // TestRulesDeepEqual tests that individual rules (via Rule.DeepEqual()) and 13 // a collection of rules (via Rules.DeepEqual()) correctly validates the 14 // equality of the rule or rules. 15 func TestRulesDeepEqual(t *testing.T) { 16 setUpSuite(t) 17 18 var invalidRules *Rules 19 20 require.Equal(t, true, invalidRules.DeepEqual(nil)) 21 require.Equal(t, true, invalidRules.DeepEqual(invalidRules)) 22 23 wcSelector1 := WildcardEndpointSelector 24 validPortRules := Rules{ 25 NewRule().WithEndpointSelector(wcSelector1). 26 WithIngressRules([]IngressRule{{ 27 IngressCommonRule: IngressCommonRule{ 28 FromEndpoints: []EndpointSelector{WildcardEndpointSelector}, 29 }, 30 ToPorts: []PortRule{{ 31 Ports: []PortProtocol{ 32 {Port: "80", Protocol: ProtoTCP}, 33 {Port: "81", Protocol: ProtoTCP}, 34 }, 35 Rules: &L7Rules{ 36 HTTP: []PortRuleHTTP{ 37 {Method: "GET", Path: "/"}, 38 }, 39 }, 40 }}, 41 }}), 42 } 43 44 require.Equal(t, false, invalidRules.DeepEqual(&validPortRules)) 45 require.Equal(t, false, validPortRules.DeepEqual(invalidRules)) 46 require.Equal(t, false, validPortRules.DeepEqual(nil)) 47 require.Equal(t, true, validPortRules.DeepEqual(&validPortRules)) 48 49 // Same as WildcardEndpointSelector, but different pointer. 50 wcSelector2 := NewESFromLabels() 51 validPortRulesClone := Rules{ 52 validPortRules[0].DeepCopy(), 53 } 54 validPortRulesClone[0].EndpointSelector = wcSelector2 55 56 require.Equal(t, true, validPortRules.DeepEqual(&validPortRulesClone)) 57 }