...
1
16
17 package storageversion
18
19 import (
20 "testing"
21
22 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23 genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
24 "k8s.io/kubernetes/pkg/apis/apiserverinternal"
25 )
26
27 func TestStorageVersionStrategy(t *testing.T) {
28 ctx := genericapirequest.NewDefaultContext()
29 if Strategy.NamespaceScoped() {
30 t.Error("StorageVersion strategy must be cluster scoped")
31 }
32 if Strategy.AllowCreateOnUpdate() {
33 t.Errorf("StorageVersion should not allow create on update")
34 }
35
36 storageVersion := validStorageVersion()
37 Strategy.PrepareForCreate(ctx, storageVersion)
38 errs := Strategy.Validate(ctx, storageVersion)
39 if len(errs) != 0 {
40 t.Errorf("Unexpected error validating %v", errs)
41 }
42 storageVersionWithoutName := &apiserverinternal.StorageVersion{
43 ObjectMeta: metav1.ObjectMeta{Name: ""},
44 }
45 Strategy.PrepareForUpdate(ctx, storageVersionWithoutName, storageVersion)
46 errs = Strategy.ValidateUpdate(ctx, storageVersionWithoutName, storageVersion)
47 if len(errs) != 0 {
48 t.Errorf("Unexpected error validating %v", errs)
49 }
50 }
51
52 func validStorageVersion() *apiserverinternal.StorageVersion {
53 ssv1 := apiserverinternal.ServerStorageVersion{
54 APIServerID: "1",
55 EncodingVersion: "v1",
56 DecodableVersions: []string{"v1", "v2"},
57 }
58 ssv2 := apiserverinternal.ServerStorageVersion{
59 APIServerID: "2",
60 EncodingVersion: "v1",
61 DecodableVersions: []string{"v1", "v2"},
62 }
63
64 ssv3 := apiserverinternal.ServerStorageVersion{
65 APIServerID: "3",
66 EncodingVersion: "v2",
67 DecodableVersions: []string{"v1", "v2"},
68 }
69 return &apiserverinternal.StorageVersion{
70 ObjectMeta: metav1.ObjectMeta{
71 Name: "core.pods",
72 },
73 Status: apiserverinternal.StorageVersionStatus{
74 StorageVersions: []apiserverinternal.ServerStorageVersion{ssv1, ssv2, ssv3},
75 },
76 }
77 }
78
View as plain text