@@ -382,6 +382,96 @@ func TestExecutePlan(t *testing.T) {
382
382
want : []runtime.Object {service ("service" , namespace ), csv ("csv" , namespace , nil , nil )},
383
383
err : nil ,
384
384
},
385
+ {
386
+ testName : "CreateServiceAccount" ,
387
+ in : withSteps (installPlan ("p" , namespace , v1alpha1 .InstallPlanPhaseInstalling , "csv" ),
388
+ []* v1alpha1.Step {
389
+ {
390
+ Resource : v1alpha1.StepResource {
391
+ CatalogSource : "catalog" ,
392
+ CatalogSourceNamespace : namespace ,
393
+ Group : "" ,
394
+ Version : "v1" ,
395
+ Kind : "ServiceAccount" ,
396
+ Name : "sa" ,
397
+ Manifest : toManifest (serviceAccount ("sa" , namespace , "" ,
398
+ objectReference ("init secret" ))),
399
+ },
400
+ Status : v1alpha1 .StepStatusUnknown ,
401
+ },
402
+ },
403
+ ),
404
+ want : []runtime.Object {serviceAccount ("sa" , namespace , "" , objectReference ("init secret" ))},
405
+ err : nil ,
406
+ },
407
+ {
408
+ testName : "UpdateServiceAccountWithSameFields" ,
409
+ in : withSteps (installPlan ("p" , namespace , v1alpha1 .InstallPlanPhaseInstalling , "csv" ),
410
+ []* v1alpha1.Step {
411
+ {
412
+ Resource : v1alpha1.StepResource {
413
+ CatalogSource : "catalog" ,
414
+ CatalogSourceNamespace : namespace ,
415
+ Group : "" ,
416
+ Version : "v1" ,
417
+ Kind : "ServiceAccount" ,
418
+ Name : "sa" ,
419
+ Manifest : toManifest (serviceAccount ("sa" , namespace , "name" ,
420
+ objectReference ("init secret" ))),
421
+ },
422
+ Status : v1alpha1 .StepStatusUnknown ,
423
+ },
424
+ {
425
+ Resource : v1alpha1.StepResource {
426
+ CatalogSource : "catalog" ,
427
+ CatalogSourceNamespace : namespace ,
428
+ Group : "" ,
429
+ Version : "v1" ,
430
+ Kind : "ServiceAccount" ,
431
+ Name : "sa" ,
432
+ Manifest : toManifest (serviceAccount ("sa" , namespace , "name" , nil )),
433
+ },
434
+ Status : v1alpha1 .StepStatusUnknown ,
435
+ },
436
+ },
437
+ ),
438
+ want : []runtime.Object {serviceAccount ("sa" , namespace , "name" , objectReference ("init secret" ))},
439
+ err : nil ,
440
+ },
441
+ {
442
+ testName : "UpdateServiceAccountWithDiffFields" ,
443
+ in : withSteps (installPlan ("p" , namespace , v1alpha1 .InstallPlanPhaseInstalling , "csv" ),
444
+ []* v1alpha1.Step {
445
+ {
446
+ Resource : v1alpha1.StepResource {
447
+ CatalogSource : "catalog" ,
448
+ CatalogSourceNamespace : namespace ,
449
+ Group : "" ,
450
+ Version : "v1" ,
451
+ Kind : "ServiceAccount" ,
452
+ Name : "sa" ,
453
+ Manifest : toManifest (serviceAccount ("sa" , namespace , "old_name" ,
454
+ objectReference ("init secret" ))),
455
+ },
456
+ Status : v1alpha1 .StepStatusUnknown ,
457
+ },
458
+ {
459
+ Resource : v1alpha1.StepResource {
460
+ CatalogSource : "catalog" ,
461
+ CatalogSourceNamespace : namespace ,
462
+ Group : "" ,
463
+ Version : "v1" ,
464
+ Kind : "ServiceAccount" ,
465
+ Name : "sa" ,
466
+ Manifest : toManifest (serviceAccount ("sa" , namespace , "new_name" , nil )),
467
+ },
468
+ Status : v1alpha1 .StepStatusUnknown ,
469
+ },
470
+ },
471
+ ),
472
+ want : []runtime.Object {serviceAccount ("sa" , namespace , "new_name" , objectReference ("init secret" ))},
473
+ err : nil ,
474
+ },
385
475
}
386
476
387
477
for _ , tt := range tests {
@@ -411,6 +501,8 @@ func TestExecutePlan(t *testing.T) {
411
501
fetched , err = op .opClient .GetRoleBinding (namespace , o .GetName ())
412
502
case * corev1.ServiceAccount :
413
503
fetched , err = op .opClient .GetServiceAccount (namespace , o .GetName ())
504
+ case * corev1.Secret :
505
+ fetched , err = op .opClient .GetSecret (namespace , o .GetName ())
414
506
case * corev1.Service :
415
507
fetched , err = op .opClient .GetService (namespace , o .GetName ())
416
508
case * v1alpha1.ClusterServiceVersion :
@@ -1010,6 +1102,25 @@ func service(name, namespace string) *corev1.Service {
1010
1102
}
1011
1103
}
1012
1104
1105
+ func serviceAccount (name , namespace , generateName string , secretRef * corev1.ObjectReference ) * corev1.ServiceAccount {
1106
+ if secretRef == nil {
1107
+ return & corev1.ServiceAccount {
1108
+ ObjectMeta : metav1.ObjectMeta {Name : name , Namespace : namespace , GenerateName : generateName },
1109
+ }
1110
+ }
1111
+ return & corev1.ServiceAccount {
1112
+ ObjectMeta : metav1.ObjectMeta {Name : name , Namespace : namespace , GenerateName : generateName },
1113
+ Secrets : []corev1.ObjectReference {* secretRef },
1114
+ }
1115
+ }
1116
+
1117
+ func objectReference (name string ) * corev1.ObjectReference {
1118
+ if name == "" {
1119
+ return & corev1.ObjectReference {}
1120
+ }
1121
+ return & corev1.ObjectReference {Name : name }
1122
+ }
1123
+
1013
1124
func toManifest (obj runtime.Object ) string {
1014
1125
raw , _ := json .Marshal (obj )
1015
1126
return string (raw )
0 commit comments