Merge pull request #1623 from AllenZMC/improve_test

improve test coverage for validation
This commit is contained in:
karmada-bot 2022-04-19 11:26:03 +08:00 committed by GitHub
commit 5b3ef7d93f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 105 additions and 0 deletions

View File

@ -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")
}
})
}
}