From f401d711aac67a3e102042fd926fa7932967288b Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Mon, 16 Dec 2019 08:37:38 +0100 Subject: [PATCH] networkPolicy validation ipv6 unit tests Add ipv6 cases to the validation unit tests. --- .../networking/validation/validation_test.go | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) diff --git a/pkg/apis/networking/validation/validation_test.go b/pkg/apis/networking/validation/validation_test.go index ea264ece95d..619a035ae60 100644 --- a/pkg/apis/networking/validation/validation_test.go +++ b/pkg/apis/networking/validation/validation_test.go @@ -283,6 +283,99 @@ func TestValidateNetworkPolicy(t *testing.T) { }, }, }, + { + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, + Spec: networking.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{"a": "b"}, + }, + Egress: []networking.NetworkPolicyEgressRule{ + { + To: []networking.NetworkPolicyPeer{ + { + NamespaceSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{"c": "d"}, + }, + }, + }, + }, + }, + Ingress: []networking.NetworkPolicyIngressRule{ + { + From: []networking.NetworkPolicyPeer{ + { + IPBlock: &networking.IPBlock{ + CIDR: "fd00:192:168::/48", + Except: []string{"fd00:192:168:3::/64", "fd00:192:168:4::/64"}, + }, + }, + }, + }, + }, + }, + }, + { + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, + Spec: networking.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{"a": "b"}, + }, + Ingress: []networking.NetworkPolicyIngressRule{ + { + From: []networking.NetworkPolicyPeer{ + { + IPBlock: &networking.IPBlock{ + CIDR: "fd00:192:168::/48", + Except: []string{"fd00:192:168:3::/64", "fd00:192:168:4::/64"}, + }, + }, + }, + }, + }, + }, + }, + { + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, + Spec: networking.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{"a": "b"}, + }, + Egress: []networking.NetworkPolicyEgressRule{ + { + To: []networking.NetworkPolicyPeer{ + { + IPBlock: &networking.IPBlock{ + CIDR: "fd00:192:168::/48", + Except: []string{"fd00:192:168:3::/64", "fd00:192:168:4::/64"}, + }, + }, + }, + }, + }, + PolicyTypes: []networking.PolicyType{networking.PolicyTypeEgress}, + }, + }, + { + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, + Spec: networking.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{"a": "b"}, + }, + Egress: []networking.NetworkPolicyEgressRule{ + { + To: []networking.NetworkPolicyPeer{ + { + IPBlock: &networking.IPBlock{ + CIDR: "fd00:192:168::/48", + Except: []string{"fd00:192:168:3::/64", "fd00:192:168:4::/64"}, + }, + }, + }, + }, + }, + PolicyTypes: []networking.PolicyType{networking.PolicyTypeIngress, networking.PolicyTypeEgress}, + }, + }, } // Success cases are expected to pass validation. @@ -562,6 +655,26 @@ func TestValidateNetworkPolicy(t *testing.T) { }, }, }, + "invalid ipv6 cidr format": { + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, + Spec: networking.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{"a": "b"}, + }, + Ingress: []networking.NetworkPolicyIngressRule{ + { + From: []networking.NetworkPolicyPeer{ + { + IPBlock: &networking.IPBlock{ + CIDR: "fd00:192:168::", + Except: []string{"fd00:192:168:3::/64", "fd00:192:168:4::/64"}, + }, + }, + }, + }, + }, + }, + }, "except field is an empty string": { ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, Spec: networking.NetworkPolicySpec{ @@ -602,6 +715,26 @@ func TestValidateNetworkPolicy(t *testing.T) { }, }, }, + "except IPv6 is outside of CIDR range": { + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, + Spec: networking.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{"a": "b"}, + }, + Ingress: []networking.NetworkPolicyIngressRule{ + { + From: []networking.NetworkPolicyPeer{ + { + IPBlock: &networking.IPBlock{ + CIDR: "fd00:192:168:1::/64", + Except: []string{"fd00:192:168:2::/64"}, + }, + }, + }, + }, + }, + }, + }, "invalid policyTypes": { ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, Spec: networking.NetworkPolicySpec{