From 2d1bb23b9d5592c5e2774abef75b3ec807639777 Mon Sep 17 00:00:00 2001 From: AllenZMC Date: Mon, 18 Apr 2022 21:03:20 +0800 Subject: [PATCH] improve test coverage for validation Signed-off-by: AllenZMC --- pkg/util/validation/validation_test.go | 105 +++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/pkg/util/validation/validation_test.go b/pkg/util/validation/validation_test.go index c9adf4828..1b59e01b9 100644 --- a/pkg/util/validation/validation_test.go +++ b/pkg/util/validation/validation_test.go @@ -3,7 +3,10 @@ package validation import ( "testing" + corev1 "k8s.io/api/core/v1" + policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1" + "github.com/karmada-io/karmada/pkg/util" ) func TestValidateOverrideSpec(t *testing.T) { @@ -113,3 +116,105 @@ func TestValidateOverrideSpec(t *testing.T) { } } } + +func TestValidatePolicyFieldSelector(t *testing.T) { + fakeProvider := []string{"fooCloud"} + fakeRegion := []string{"fooRegion"} + fakeZone := []string{"fooZone"} + + tests := []struct { + name string + filedSelector *policyv1alpha1.FieldSelector + expectError bool + }{ + { + name: "supported key", + filedSelector: &policyv1alpha1.FieldSelector{ + MatchExpressions: []corev1.NodeSelectorRequirement{ + { + Key: util.ProviderField, + Operator: corev1.NodeSelectorOpIn, + Values: fakeProvider, + }, + { + Key: util.RegionField, + Operator: corev1.NodeSelectorOpNotIn, + Values: fakeRegion, + }, + { + Key: util.ZoneField, + Operator: corev1.NodeSelectorOpNotIn, + Values: fakeZone, + }, + }, + }, + expectError: false, + }, + { + name: "unsupported key", + filedSelector: &policyv1alpha1.FieldSelector{ + MatchExpressions: []corev1.NodeSelectorRequirement{ + { + Key: "foo", + Operator: corev1.NodeSelectorOpIn, + Values: fakeProvider, + }, + { + Key: util.RegionField, + Operator: corev1.NodeSelectorOpNotIn, + Values: fakeRegion, + }, + }, + }, + expectError: true, + }, + { + name: "supported operator", + filedSelector: &policyv1alpha1.FieldSelector{ + MatchExpressions: []corev1.NodeSelectorRequirement{ + { + Key: util.ProviderField, + Operator: corev1.NodeSelectorOpIn, + Values: fakeProvider, + }, + { + Key: util.RegionField, + Operator: corev1.NodeSelectorOpNotIn, + Values: fakeRegion, + }, + }, + }, + expectError: false, + }, + { + name: "unsupported operator", + filedSelector: &policyv1alpha1.FieldSelector{ + MatchExpressions: []corev1.NodeSelectorRequirement{ + { + Key: util.ProviderField, + Operator: corev1.NodeSelectorOpExists, + Values: fakeProvider, + }, + { + Key: util.RegionField, + Operator: corev1.NodeSelectorOpNotIn, + Values: fakeRegion, + }, + }, + }, + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidatePolicyFieldSelector(tt.filedSelector) + if err != nil && tt.expectError != true { + t.Fatalf("expect no error but got: %v", err) + } + if err == nil && tt.expectError == true { + t.Fatalf("expect an error but got none") + } + }) + } +}