...
1
16
17 package storageclass
18
19 import (
20 "testing"
21
22 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23 genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
24 api "k8s.io/kubernetes/pkg/apis/core"
25 "k8s.io/kubernetes/pkg/apis/storage"
26 )
27
28 func TestStorageClassStrategy(t *testing.T) {
29 ctx := genericapirequest.NewDefaultContext()
30 if Strategy.NamespaceScoped() {
31 t.Errorf("StorageClass must not be namespace scoped")
32 }
33 if Strategy.AllowCreateOnUpdate() {
34 t.Errorf("StorageClass should not allow create on update")
35 }
36
37 deleteReclaimPolicy := api.PersistentVolumeReclaimDelete
38 bindingMode := storage.VolumeBindingWaitForFirstConsumer
39 storageClass := &storage.StorageClass{
40 ObjectMeta: metav1.ObjectMeta{
41 Name: "valid-class",
42 },
43 Provisioner: "kubernetes.io/aws-ebs",
44 Parameters: map[string]string{
45 "foo": "bar",
46 },
47 ReclaimPolicy: &deleteReclaimPolicy,
48 VolumeBindingMode: &bindingMode,
49 }
50
51 Strategy.PrepareForCreate(ctx, storageClass)
52
53 errs := Strategy.Validate(ctx, storageClass)
54 if len(errs) != 0 {
55 t.Errorf("unexpected error validating %v", errs)
56 }
57
58 newStorageClass := &storage.StorageClass{
59 ObjectMeta: metav1.ObjectMeta{
60 Name: "valid-class-2",
61 ResourceVersion: "4",
62 },
63 Provisioner: "kubernetes.io/aws-ebs",
64 Parameters: map[string]string{
65 "foo": "bar",
66 },
67 ReclaimPolicy: &deleteReclaimPolicy,
68 VolumeBindingMode: &bindingMode,
69 }
70
71 Strategy.PrepareForUpdate(ctx, newStorageClass, storageClass)
72
73 errs = Strategy.ValidateUpdate(ctx, newStorageClass, storageClass)
74 if len(errs) == 0 {
75 t.Errorf("Expected a validation error")
76 }
77 }
78
View as plain text