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