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  }