@@ -263,12 +263,53 @@ func TestValidateCertificateSigningRequestCreate(t *testing.T) {
263
263
},
264
264
errs : field.ErrorList {},
265
265
},
266
+ "missing usages" : {
267
+ csr : capi.CertificateSigningRequest {
268
+ ObjectMeta : validObjectMeta ,
269
+ Spec : capi.CertificateSigningRequestSpec {
270
+ Usages : []capi.KeyUsage {},
271
+ Request : newCSRPEM (t ),
272
+ SignerName : validSignerName ,
273
+ },
274
+ },
275
+ errs : field.ErrorList {
276
+ field .Required (specPath .Child ("usages" ), "usages must be provided" ),
277
+ },
278
+ },
279
+ "unknown and duplicate usages - v1beta1" : {
280
+ gv : schema.GroupVersion {Group : capi .SchemeGroupVersion .Group , Version : "v1beta1" },
281
+ csr : capi.CertificateSigningRequest {
282
+ ObjectMeta : validObjectMeta ,
283
+ Spec : capi.CertificateSigningRequestSpec {
284
+ Usages : []capi.KeyUsage {"unknown" , "unknown" },
285
+ Request : newCSRPEM (t ),
286
+ SignerName : validSignerName ,
287
+ },
288
+ },
289
+ errs : field.ErrorList {},
290
+ },
291
+ "unknown and duplicate usages - v1" : {
292
+ gv : schema.GroupVersion {Group : capi .SchemeGroupVersion .Group , Version : "v1" },
293
+ csr : capi.CertificateSigningRequest {
294
+ ObjectMeta : validObjectMeta ,
295
+ Spec : capi.CertificateSigningRequestSpec {
296
+ Usages : []capi.KeyUsage {"unknown" , "unknown" },
297
+ Request : newCSRPEM (t ),
298
+ SignerName : validSignerName ,
299
+ },
300
+ },
301
+ errs : field.ErrorList {
302
+ field .NotSupported (specPath .Child ("usages" ).Index (0 ), capi .KeyUsage ("unknown" ), allValidUsages .List ()),
303
+ field .NotSupported (specPath .Child ("usages" ).Index (1 ), capi .KeyUsage ("unknown" ), allValidUsages .List ()),
304
+ field .Duplicate (specPath .Child ("usages" ).Index (1 ), capi .KeyUsage ("unknown" )),
305
+ },
306
+ },
266
307
}
267
308
for name , test := range tests {
268
309
t .Run (name , func (t * testing.T ) {
269
310
el := ValidateCertificateSigningRequestCreate (& test .csr , test .gv )
270
311
if ! reflect .DeepEqual (el , test .errs ) {
271
- t .Errorf ("returned and expected errors did not match - expected %v but got %v" , test .errs .ToAggregate (), el .ToAggregate ())
312
+ t .Errorf ("returned and expected errors did not match - expected\n %v \n but got\n %v" , test .errs .ToAggregate (), el .ToAggregate ())
272
313
}
273
314
})
274
315
}
@@ -331,6 +372,8 @@ func Test_getValidationOptions(t *testing.T) {
331
372
allowDuplicateConditionTypes : true ,
332
373
allowEmptyConditionType : true ,
333
374
allowArbitraryCertificate : true ,
375
+ allowUnknownUsages : true ,
376
+ allowDuplicateUsages : true ,
334
377
},
335
378
},
336
379
{
@@ -352,6 +395,8 @@ func Test_getValidationOptions(t *testing.T) {
352
395
allowDuplicateConditionTypes : true ,
353
396
allowEmptyConditionType : true ,
354
397
allowArbitraryCertificate : true ,
398
+ allowUnknownUsages : true ,
399
+ allowDuplicateUsages : true ,
355
400
},
356
401
},
357
402
{
@@ -424,6 +469,22 @@ func Test_getValidationOptions(t *testing.T) {
424
469
allowArbitraryCertificate : true ,
425
470
},
426
471
},
472
+ {
473
+ name : "v1 compatible update, existing unknown usages" ,
474
+ version : schema.GroupVersion {Group : "certificates.k8s.io" , Version : "v1" },
475
+ oldCSR : & capi.CertificateSigningRequest {Spec : capi.CertificateSigningRequestSpec {Usages : []capi.KeyUsage {"unknown" }}},
476
+ want : certificateValidationOptions {
477
+ allowUnknownUsages : true ,
478
+ },
479
+ },
480
+ {
481
+ name : "v1 compatible update, existing duplicate usages" ,
482
+ version : schema.GroupVersion {Group : "certificates.k8s.io" , Version : "v1" },
483
+ oldCSR : & capi.CertificateSigningRequest {Spec : capi.CertificateSigningRequestSpec {Usages : []capi.KeyUsage {"any" , "any" }}},
484
+ want : certificateValidationOptions {
485
+ allowDuplicateUsages : true ,
486
+ },
487
+ },
427
488
}
428
489
for _ , tt := range tests {
429
490
t .Run (tt .name , func (t * testing.T ) {
@@ -587,6 +648,19 @@ func TestValidateCertificateSigningRequestStatusUpdate(t *testing.T) {
587
648
newCSR : & capi.CertificateSigningRequest {ObjectMeta : validUpdateMeta , Spec : validSpec , Status : capi.CertificateSigningRequestStatus {Certificate : invalidCertificateNoPEM }},
588
649
oldCSR : & capi.CertificateSigningRequest {ObjectMeta : validUpdateMetaWithFinalizers , Spec : validSpec , Status : capi.CertificateSigningRequestStatus {Certificate : invalidCertificateNoPEM }},
589
650
},
651
+ {
652
+ name : "finalizer change with duplicate and unknown usages" ,
653
+ newCSR : & capi.CertificateSigningRequest {ObjectMeta : validUpdateMeta , Spec : capi.CertificateSigningRequestSpec {
654
+ Usages : []capi.KeyUsage {"unknown" , "unknown" },
655
+ Request : newCSRPEM (t ),
656
+ SignerName : validSignerName ,
657
+ }},
658
+ oldCSR : & capi.CertificateSigningRequest {ObjectMeta : validUpdateMetaWithFinalizers , Spec : capi.CertificateSigningRequestSpec {
659
+ Usages : []capi.KeyUsage {"unknown" , "unknown" },
660
+ Request : newCSRPEM (t ),
661
+ SignerName : validSignerName ,
662
+ }},
663
+ },
590
664
{
591
665
name : "add Approved condition" ,
592
666
newCSR : & capi.CertificateSigningRequest {ObjectMeta : validUpdateMeta , Spec : validSpec , Status : capi.CertificateSigningRequestStatus {
0 commit comments