func autoConvert_v1_EgressNetworkPolicyRule_To_api_EgressNetworkPolicyRule(in *EgressNetworkPolicyRule, out *api.EgressNetworkPolicyRule, s conversion.Scope) error {
	out.Type = api.EgressNetworkPolicyRuleType(in.Type)
	if err := Convert_v1_EgressNetworkPolicyPeer_To_api_EgressNetworkPolicyPeer(&in.To, &out.To, s); err != nil {
		return err
	}
	return nil
}
示例#2
0
func TestValidateEgressNetworkPolicy(t *testing.T) {
	tests := []struct {
		name           string
		fw             *api.EgressNetworkPolicy
		expectedErrors int
	}{
		{
			name: "Empty",
			fw: &api.EgressNetworkPolicy{
				ObjectMeta: kapi.ObjectMeta{
					Name:      "default",
					Namespace: "testing",
				},
				Spec: api.EgressNetworkPolicySpec{
					Egress: []api.EgressNetworkPolicyRule{},
				},
			},
			expectedErrors: 0,
		},
		{
			name: "Good one",
			fw: &api.EgressNetworkPolicy{
				ObjectMeta: kapi.ObjectMeta{
					Name:      "default",
					Namespace: "testing",
				},
				Spec: api.EgressNetworkPolicySpec{
					Egress: []api.EgressNetworkPolicyRule{
						{
							Type: api.EgressNetworkPolicyRuleAllow,
							To: api.EgressNetworkPolicyPeer{
								CIDRSelector: "1.2.3.0/24",
							},
						},
						{
							Type: api.EgressNetworkPolicyRuleDeny,
							To: api.EgressNetworkPolicyPeer{
								CIDRSelector: "1.2.3.4/32",
							},
						},
					},
				},
			},
			expectedErrors: 0,
		},
		{
			name: "Bad policy",
			fw: &api.EgressNetworkPolicy{
				ObjectMeta: kapi.ObjectMeta{
					Name:      "default",
					Namespace: "testing",
				},
				Spec: api.EgressNetworkPolicySpec{
					Egress: []api.EgressNetworkPolicyRule{
						{
							Type: api.EgressNetworkPolicyRuleType("Bob"),
							To: api.EgressNetworkPolicyPeer{
								CIDRSelector: "1.2.3.0/24",
							},
						},
						{
							Type: api.EgressNetworkPolicyRuleDeny,
							To: api.EgressNetworkPolicyPeer{
								CIDRSelector: "1.2.3.4/32",
							},
						},
					},
				},
			},
			expectedErrors: 1,
		},
		{
			name: "Bad destination",
			fw: &api.EgressNetworkPolicy{
				ObjectMeta: kapi.ObjectMeta{
					Name:      "default",
					Namespace: "testing",
				},
				Spec: api.EgressNetworkPolicySpec{
					Egress: []api.EgressNetworkPolicyRule{
						{
							Type: api.EgressNetworkPolicyRuleAllow,
							To: api.EgressNetworkPolicyPeer{
								CIDRSelector: "1.2.3.4",
							},
						},
						{
							Type: api.EgressNetworkPolicyRuleDeny,
							To: api.EgressNetworkPolicyPeer{
								CIDRSelector: "",
							},
						},
					},
				},
			},
			expectedErrors: 2,
		},
	}

	for _, tc := range tests {
		errs := ValidateEgressNetworkPolicy(tc.fw)

		if len(errs) != tc.expectedErrors {
			t.Errorf("Test case %s expected %d error(s), got %d. %v", tc.name, tc.expectedErrors, len(errs), errs)
		}
	}
}