@@ -19,10 +19,10 @@ package v1beta1_test
19
19
import (
20
20
"context"
21
21
22
+ infrav1 "github.com/aws/cluster-api-provider-cloudstack/api/v1beta1"
22
23
"github.com/aws/cluster-api-provider-cloudstack/test/dummies"
23
24
. "github.com/onsi/ginkgo"
24
25
. "github.com/onsi/gomega"
25
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26
26
)
27
27
28
28
var _ = Describe ("CloudStackMachineTemplate webhook" , func () {
@@ -33,268 +33,72 @@ var _ = Describe("CloudStackMachineTemplate webhook", func() {
33
33
ctx = context .Background ()
34
34
})
35
35
36
- Context ("When creating a CloudStackMachineTemplate with all validated attributes" , func () {
37
- It ("Should succeed" , func () {
38
- cloudStackMachineTemplate := & CloudStackMachineTemplate {
39
- TypeMeta : metav1.TypeMeta {
40
- APIVersion : apiVersion ,
41
- Kind : templateKind ,
42
- },
43
- ObjectMeta : metav1.ObjectMeta {
44
- Name : templateName ,
45
- Namespace : namespace ,
46
- },
47
- Spec : CloudStackMachineTemplateSpec {
48
- Spec : CloudStackMachineTemplateResource {
49
- ObjectMeta : metav1.ObjectMeta {
50
- Name : templateResourceName ,
51
- Namespace : namespace ,
52
- },
53
- Spec : CloudStackMachineSpec {
54
- IdentityRef : & CloudStackIdentityReference {
55
- Kind : defaultIdentityRefKind ,
56
- Name : identityReferenceName ,
57
- },
58
- Template : template ,
59
- Offering : offering ,
60
- },
61
- },
62
- },
63
- }
64
- Expect (k8sClient .Create (ctx , cloudStackMachineTemplate )).Should (Succeed ())
65
- })
66
- })
67
-
68
- Context ("When creating a CloudStackMachineTemplate with all attributes" , func () {
69
- It ("Should succeed" , func () {
70
- ctx := context .Background ()
71
- cloudStackMachineTemplate := & CloudStackMachineTemplate {
72
- TypeMeta : metav1.TypeMeta {
73
- APIVersion : apiVersion ,
74
- Kind : templateKind ,
75
- },
76
- ObjectMeta : metav1.ObjectMeta {
77
- Name : "test-machinetemplate-2" ,
78
- Namespace : namespace ,
79
- },
80
- Spec : CloudStackMachineTemplateSpec {
81
- Spec : CloudStackMachineTemplateResource {
82
- ObjectMeta : metav1.ObjectMeta {
83
- Name : templateResourceName ,
84
- Namespace : namespace ,
85
- },
86
- Spec : CloudStackMachineSpec {
87
- IdentityRef : & CloudStackIdentityReference {
88
- Kind : defaultIdentityRefKind ,
89
- Name : identityReferenceName ,
90
- },
91
- Template : template ,
92
- Offering : offering ,
93
- Details : map [string ]string {
94
- "memoryOvercommitRatio" : "1.2" ,
95
- },
96
- },
97
- },
98
- },
99
- }
100
- Expect (k8sClient .Create (ctx , cloudStackMachineTemplate )).Should (Succeed ())
101
- })
102
- })
103
-
104
36
Context ("When creating a CloudStackMachineTemplate with all attributes" , func () {
105
37
It ("Should succeed" , func () {
106
- ctx := context .Background ()
107
- cloudStackMachineTemplate := & CloudStackMachineTemplate {
108
- TypeMeta : metav1.TypeMeta {
109
- APIVersion : apiVersion ,
110
- Kind : templateKind ,
111
- },
112
- ObjectMeta : metav1.ObjectMeta {
113
- Name : "test-machinetemplate-3" ,
114
- Namespace : namespace ,
115
- },
116
- Spec : CloudStackMachineTemplateSpec {
117
- Spec : CloudStackMachineTemplateResource {
118
- ObjectMeta : metav1.ObjectMeta {
119
- Name : templateResourceName ,
120
- Namespace : namespace ,
121
- },
122
- Spec : CloudStackMachineSpec {
123
- IdentityRef : & CloudStackIdentityReference {
124
- Kind : defaultIdentityRefKind ,
125
- Name : identityReferenceName ,
126
- },
127
- Template : template ,
128
- Offering : offering ,
129
- AffinityGroupIds : []string {"41eeb6e4-946f-4a18-b543-b2184815f1e4" },
130
- },
131
- },
132
- },
133
- }
134
- Expect (k8sClient .Create (ctx , cloudStackMachineTemplate )).Should (Succeed ())
38
+ Expect (k8sClient .Create (ctx , dummies .CSMachineTemplate1 )).Should (Succeed ())
135
39
})
136
40
})
137
41
138
42
Context ("When creating a CloudStackMachineTemplate with missing Offering attribute" , func () {
139
43
It ("Should be rejected by the validating webhooks" , func () {
140
- ctx := context .Background ()
141
- cloudStackMachineTemplate := & CloudStackMachineTemplate {
142
- TypeMeta : metav1.TypeMeta {
143
- APIVersion : apiVersion ,
144
- Kind : templateKind ,
145
- },
146
- ObjectMeta : metav1.ObjectMeta {
147
- Name : templateName ,
148
- Namespace : namespace ,
149
- },
150
- Spec : CloudStackMachineTemplateSpec {
151
- Spec : CloudStackMachineTemplateResource {
152
- ObjectMeta : metav1.ObjectMeta {
153
- Name : templateResourceName ,
154
- Namespace : namespace ,
155
- },
156
- Spec : CloudStackMachineSpec {
157
- IdentityRef : & CloudStackIdentityReference {
158
- Kind : defaultIdentityRefKind ,
159
- Name : identityReferenceName ,
160
- },
161
- Template : template ,
162
- },
163
- },
164
- },
165
- }
166
- Expect (k8sClient .Create (ctx , cloudStackMachineTemplate ).Error ()).Should (MatchRegexp ("admission webhook.*denied the request.*Required value\\ : Offering" ))
44
+ dummies .CSMachine1 .Spec .Offering = ""
45
+ Expect (k8sClient .Create (ctx , dummies .CSMachineTemplate1 ).Error ()).
46
+ Should (MatchRegexp ("admission webhook.*denied the request.*Required value\\ : Offering" ))
167
47
})
168
48
})
169
49
170
50
Context ("When creating a CloudStackMachineTemplate with missing Template attribute" , func () {
171
51
It ("Should be rejected by the validating webhooks" , func () {
172
- ctx := context .Background ()
173
- cloudStackMachineTemplate := & CloudStackMachineTemplate {
174
- TypeMeta : metav1.TypeMeta {
175
- APIVersion : apiVersion ,
176
- Kind : templateKind ,
177
- },
178
- ObjectMeta : metav1.ObjectMeta {
179
- Name : templateName ,
180
- Namespace : namespace ,
181
- },
182
- Spec : CloudStackMachineTemplateSpec {
183
- Spec : CloudStackMachineTemplateResource {
184
- ObjectMeta : metav1.ObjectMeta {
185
- Name : templateResourceName ,
186
- Namespace : namespace ,
187
- },
188
- Spec : CloudStackMachineSpec {
189
- IdentityRef : & CloudStackIdentityReference {
190
- Kind : defaultIdentityRefKind ,
191
- Name : identityReferenceName ,
192
- },
193
- Offering : offering ,
194
- },
195
- },
196
- },
197
- }
198
- Expect (k8sClient .Create (ctx , cloudStackMachineTemplate ).Error ()).Should (MatchRegexp ("admission webhook.*denied the request.*Required value\\ : Template" ))
52
+ dummies .CSMachine1 .Spec .Template = ""
53
+ Expect (k8sClient .Create (ctx , dummies .CSMachineTemplate1 ).Error ()).
54
+ Should (MatchRegexp ("admission webhook.*denied the request.*Required value\\ : Template" ))
199
55
})
200
56
})
201
57
202
58
Context ("When creating a CloudStackMachineTemplate with the wrong kind of IdentityReference" , func () {
203
59
It ("Should be rejected by the validating webhooks" , func () {
204
- ctx := context .Background ()
205
- cloudStackMachineTemplate := & CloudStackMachineTemplate {
206
- TypeMeta : metav1.TypeMeta {
207
- APIVersion : apiVersion ,
208
- Kind : templateKind ,
209
- },
210
- ObjectMeta : metav1.ObjectMeta {
211
- Name : templateName ,
212
- Namespace : namespace ,
213
- },
214
- Spec : CloudStackMachineTemplateSpec {
215
- Spec : CloudStackMachineTemplateResource {
216
- ObjectMeta : metav1.ObjectMeta {
217
- Name : templateResourceName ,
218
- Namespace : namespace ,
219
- },
220
- Spec : CloudStackMachineSpec {
221
- IdentityRef : & CloudStackIdentityReference {
222
- Kind : identityReferenceKind ,
223
- Name : identityReferenceName ,
224
- },
225
- Offering : offering ,
226
- Template : template ,
227
- },
228
- },
229
- },
230
- }
231
- Expect (k8sClient .Create (ctx , cloudStackMachineTemplate ).Error ()).Should (MatchRegexp ("admission webhook.*denied the request.*Forbidden\\ : must be a Secret" ))
60
+ dummies .CSMachine1 .Spec .IdentityRef .Kind = "ConfigMap"
61
+ Expect (k8sClient .Create (ctx , dummies .CSMachine1 ).Error ()).
62
+ Should (MatchRegexp ("admission webhook.*denied the request.*Forbidden\\ : must be a Secret" ))
232
63
})
233
64
})
234
65
235
66
Context ("When updating a CloudStackMachine" , func () {
236
67
It ("Should be rejected by the validating webhooks" , func () {
237
- ctx := context .Background ()
238
- cloudStackMachineTemplate := & CloudStackMachineTemplate {
239
- TypeMeta : metav1.TypeMeta {
240
- APIVersion : apiVersion ,
241
- Kind : templateKind ,
242
- },
243
- ObjectMeta : metav1.ObjectMeta {
244
- Name : "test-machinetemplate-4" ,
245
- Namespace : namespace ,
246
- },
247
- Spec : CloudStackMachineTemplateSpec {
248
- Spec : CloudStackMachineTemplateResource {
249
- ObjectMeta : metav1.ObjectMeta {
250
- Name : templateResourceName ,
251
- Namespace : namespace ,
252
- },
253
- Spec : CloudStackMachineSpec {
254
- IdentityRef : & CloudStackIdentityReference {
255
- Kind : defaultIdentityRefKind ,
256
- Name : identityReferenceName ,
257
- },
258
- Template : template ,
259
- Offering : offering ,
260
- Details : map [string ]string {
261
- "memoryOvercommitRatio" : "1.2" ,
262
- },
263
- AffinityGroupIds : []string {"41eeb6e4-946f-4a18-b543-b2184815f1e4" },
264
- },
265
- },
266
- },
267
- }
268
- Expect (k8sClient .Create (ctx , cloudStackMachineTemplate )).Should (Succeed ())
68
+ Expect (k8sClient .Create (ctx , dummies .CSMachineTemplate1 )).Should (Succeed ())
269
69
270
70
forbiddenRegex := "admission webhook.*denied the request.*Forbidden\\ : %s"
271
- cloudStackMachineTemplateUpdate := & CloudStackMachineTemplate {}
71
+ cloudStackMachineTemplateUpdate := & infrav1. CloudStackMachineTemplate {}
272
72
273
- cloudStackMachineTemplate .DeepCopyInto (cloudStackMachineTemplateUpdate )
73
+ dummies . CSMachineTemplate1 .DeepCopyInto (cloudStackMachineTemplateUpdate )
274
74
cloudStackMachineTemplateUpdate .Spec .Spec .Spec .Template = "Template2"
275
- Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).Should (MatchRegexp (forbiddenRegex , "template" ))
75
+ Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).
76
+ Should (MatchRegexp (forbiddenRegex , "template" ))
276
77
277
- cloudStackMachineTemplate .DeepCopyInto (cloudStackMachineTemplateUpdate )
78
+ dummies . CSMachineTemplate1 .DeepCopyInto (cloudStackMachineTemplateUpdate )
278
79
cloudStackMachineTemplateUpdate .Spec .Spec .Spec .Offering = "Offering2"
279
- Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).Should (MatchRegexp (forbiddenRegex , "offering" ))
80
+ Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).
81
+ Should (MatchRegexp (forbiddenRegex , "offering" ))
280
82
281
- cloudStackMachineTemplate .DeepCopyInto (cloudStackMachineTemplateUpdate )
282
- cloudStackMachineTemplateUpdate .Spec .Spec .Spec .Details = map [string ]string {
283
- "memoryOvercommitRatio" : "1.5" ,
284
- }
285
- Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).Should (MatchRegexp (forbiddenRegex , "details" ))
83
+ dummies .CSMachineTemplate1 .DeepCopyInto (cloudStackMachineTemplateUpdate )
84
+ cloudStackMachineTemplateUpdate .Spec .Spec .Spec .Details = map [string ]string {"memoryOvercommitRatio" : "1.5" }
85
+ Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).
86
+ Should (MatchRegexp (forbiddenRegex , "details" ))
286
87
287
- cloudStackMachineTemplate .DeepCopyInto (cloudStackMachineTemplateUpdate )
288
- cloudStackMachineTemplateUpdate .Spec .Spec .Spec .IdentityRef .Kind = identityReferenceKind
289
- Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).Should (MatchRegexp (forbiddenRegex , "identityRef\\ .Kind" ))
88
+ dummies .CSMachineTemplate1 .DeepCopyInto (cloudStackMachineTemplateUpdate )
89
+ cloudStackMachineTemplateUpdate .Spec .Spec .Spec .IdentityRef .Kind = "configMap"
90
+ Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).
91
+ Should (MatchRegexp (forbiddenRegex , "identityRef\\ .Kind" ))
290
92
291
- cloudStackMachineTemplate .DeepCopyInto (cloudStackMachineTemplateUpdate )
93
+ dummies . CSMachineTemplate1 .DeepCopyInto (cloudStackMachineTemplateUpdate )
292
94
cloudStackMachineTemplateUpdate .Spec .Spec .Spec .IdentityRef .Name = "IdentityConfigMap"
293
- Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).Should (MatchRegexp (forbiddenRegex , "identityRef\\ .Name" ))
95
+ Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate ).Error ()).
96
+ Should (MatchRegexp (forbiddenRegex , "identityRef\\ .Name" ))
294
97
295
- cloudStackMachineTemplate .DeepCopyInto (cloudStackMachineTemplateUpdate )
98
+ dummies . CSMachineTemplate1 .DeepCopyInto (cloudStackMachineTemplateUpdate )
296
99
cloudStackMachineTemplateUpdate .Spec .Spec .Spec .AffinityGroupIds = []string {"28b907b8-75a7-4214-bd3d-6c61961fc2ag" }
297
- Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate )).ShouldNot (Succeed ())
100
+ Expect (k8sClient .Update (ctx , cloudStackMachineTemplateUpdate )).
101
+ ShouldNot (Succeed ())
298
102
})
299
103
})
300
104
})
0 commit comments