...
1
16
17 package resourceclaim
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/resource"
25 )
26
27 var resourceClaim = &resource.ResourceClaim{
28 ObjectMeta: metav1.ObjectMeta{
29 Name: "valid-claim",
30 Namespace: "default",
31 },
32 Spec: resource.ResourceClaimSpec{
33 ResourceClassName: "valid-class",
34 AllocationMode: resource.AllocationModeImmediate,
35 },
36 }
37
38 func TestClaimStrategy(t *testing.T) {
39 if !Strategy.NamespaceScoped() {
40 t.Errorf("ResourceClaim must be namespace scoped")
41 }
42 if Strategy.AllowCreateOnUpdate() {
43 t.Errorf("ResourceClaim should not allow create on update")
44 }
45 }
46
47 func TestClaimStrategyCreate(t *testing.T) {
48 ctx := genericapirequest.NewDefaultContext()
49 resourceClaim := resourceClaim.DeepCopy()
50
51 Strategy.PrepareForCreate(ctx, resourceClaim)
52 errs := Strategy.Validate(ctx, resourceClaim)
53 if len(errs) != 0 {
54 t.Errorf("unexpected error validating for create %v", errs)
55 }
56 }
57
58 func TestClaimStrategyUpdate(t *testing.T) {
59 t.Run("no-changes-okay", func(t *testing.T) {
60 ctx := genericapirequest.NewDefaultContext()
61 resourceClaim := resourceClaim.DeepCopy()
62 newClaim := resourceClaim.DeepCopy()
63 newClaim.ResourceVersion = "4"
64
65 Strategy.PrepareForUpdate(ctx, newClaim, resourceClaim)
66 errs := Strategy.ValidateUpdate(ctx, newClaim, resourceClaim)
67 if len(errs) != 0 {
68 t.Errorf("unexpected validation errors: %v", errs)
69 }
70 })
71
72 t.Run("name-change-not-allowed", func(t *testing.T) {
73 ctx := genericapirequest.NewDefaultContext()
74 resourceClaim := resourceClaim.DeepCopy()
75 newClaim := resourceClaim.DeepCopy()
76 newClaim.Name = "valid-claim-2"
77 newClaim.ResourceVersion = "4"
78
79 Strategy.PrepareForUpdate(ctx, newClaim, resourceClaim)
80 errs := Strategy.ValidateUpdate(ctx, newClaim, resourceClaim)
81 if len(errs) == 0 {
82 t.Errorf("expected a validation error")
83 }
84 })
85 }
86
View as plain text