Merge pull request #81961 from pohly/ephemeral-unit-tests

storage: enhance test for ValidateCSIDriverUpdate
This commit is contained in:
Kubernetes Prow Robot 2020-07-01 07:10:34 -07:00 committed by GitHub
commit b1b1fc8034
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1800,7 +1800,7 @@ func TestCSIDriverValidation(t *testing.T) {
}, },
}, },
{ {
// AttachRequired not set // PodInfoOnMount not set
ObjectMeta: metav1.ObjectMeta{Name: driverName}, ObjectMeta: metav1.ObjectMeta{Name: driverName},
Spec: storage.CSIDriverSpec{ Spec: storage.CSIDriverSpec{
AttachRequired: &attachNotRequired, AttachRequired: &attachNotRequired,
@ -1856,64 +1856,86 @@ func TestCSIDriverValidationUpdate(t *testing.T) {
} }
} }
errorCases := []storage.CSIDriver{ // Each test case changes exactly one field. None of that is valid.
errorCases := []struct {
name string
modify func(new *storage.CSIDriver)
}{
{ {
ObjectMeta: metav1.ObjectMeta{Name: invalidName}, name: "invalid name",
Spec: storage.CSIDriverSpec{ modify: func(new *storage.CSIDriver) {
AttachRequired: &attachRequired, new.Name = invalidName
PodInfoOnMount: &podInfoOnMount,
}, },
}, },
{ {
ObjectMeta: metav1.ObjectMeta{Name: longName}, name: "long name",
Spec: storage.CSIDriverSpec{ modify: func(new *storage.CSIDriver) {
AttachRequired: &attachNotRequired, new.Name = longName
PodInfoOnMount: &notPodInfoOnMount,
}, },
}, },
{ {
// AttachRequired not set name: "AttachRequired not set",
ObjectMeta: metav1.ObjectMeta{Name: driverName}, modify: func(new *storage.CSIDriver) {
Spec: storage.CSIDriverSpec{ new.Spec.AttachRequired = nil
AttachRequired: nil,
PodInfoOnMount: &podInfoOnMount,
}, },
}, },
{ {
// AttachRequired not set name: "PodInfoOnMount not set",
ObjectMeta: metav1.ObjectMeta{Name: driverName}, modify: func(new *storage.CSIDriver) {
Spec: storage.CSIDriverSpec{ new.Spec.PodInfoOnMount = nil
AttachRequired: &attachNotRequired,
PodInfoOnMount: nil,
}, },
}, },
{ {
// invalid mode name: "AttachRequired changed",
ObjectMeta: metav1.ObjectMeta{Name: driverName}, modify: func(new *storage.CSIDriver) {
Spec: storage.CSIDriverSpec{ new.Spec.AttachRequired = &attachRequired
AttachRequired: &attachNotRequired, },
PodInfoOnMount: &notPodInfoOnMount, },
VolumeLifecycleModes: []storage.VolumeLifecycleMode{ {
name: "PodInfoOnMount changed",
modify: func(new *storage.CSIDriver) {
new.Spec.PodInfoOnMount = &podInfoOnMount
},
},
{
name: "invalid volume lifecycle mode",
modify: func(new *storage.CSIDriver) {
new.Spec.VolumeLifecycleModes = []storage.VolumeLifecycleMode{
"no-such-mode", "no-such-mode",
}, }
}, },
}, },
{ {
// different modes name: "volume lifecycle modes not set",
ObjectMeta: metav1.ObjectMeta{Name: driverName}, modify: func(new *storage.CSIDriver) {
Spec: storage.CSIDriverSpec{ new.Spec.VolumeLifecycleModes = nil
AttachRequired: &attachNotRequired, },
PodInfoOnMount: &notPodInfoOnMount, },
VolumeLifecycleModes: []storage.VolumeLifecycleMode{ {
name: "VolumeLifecyclePersistent removed",
modify: func(new *storage.CSIDriver) {
new.Spec.VolumeLifecycleModes = []storage.VolumeLifecycleMode{
storage.VolumeLifecycleEphemeral, storage.VolumeLifecycleEphemeral,
}, }
},
},
{
name: "VolumeLifecycleEphemeral removed",
modify: func(new *storage.CSIDriver) {
new.Spec.VolumeLifecycleModes = []storage.VolumeLifecycleMode{
storage.VolumeLifecyclePersistent,
}
}, },
}, },
} }
for _, csiDriver := range errorCases { for _, test := range errorCases {
if errs := ValidateCSIDriverUpdate(&csiDriver, &old); len(errs) == 0 { t.Run(test.name, func(t *testing.T) {
t.Errorf("Expected failure for test: %v", csiDriver) new := old.DeepCopy()
} test.modify(new)
if errs := ValidateCSIDriverUpdate(new, &old); len(errs) == 0 {
t.Errorf("Expected failure for test: %v", new)
}
})
} }
} }