@@ -301,84 +301,65 @@ func TestWriteCSRFilesIfNotExist(t *testing.T) {
301
301
302
302
}
303
303
304
- func TestWriteKeyFilesIfNotExist (t * testing.T ) {
305
-
306
- setupKey , _ := NewServiceAccountSigningKey ()
307
- key , _ := NewServiceAccountSigningKey ()
304
+ func TestCreateServiceAccountKeyAndPublicKeyFiles (t * testing.T ) {
305
+ setupKey , err := keyutil .MakeEllipticPrivateKeyPEM ()
306
+ if err != nil {
307
+ t .Fatalf ("Can't setup test: %v" , err )
308
+ }
308
309
309
- var tests = []struct {
310
- setupFunc func (pkiDir string ) error
311
- expectedError bool
312
- expectedKey crypto.Signer
310
+ tcases := []struct {
311
+ name string
312
+ setupFunc func (pkiDir string ) error
313
+ expectedErr bool
314
+ expectedKey []byte
313
315
}{
314
316
{ // key does not exists > key written
315
- expectedKey : key ,
317
+ name : "generate successfully" ,
316
318
},
317
319
{ // key exists > existing key used
320
+ name : "use existing key" ,
318
321
setupFunc : func (pkiDir string ) error {
319
- return writeKeyFilesIfNotExist (pkiDir , "dummy" , setupKey )
322
+ err := keyutil .WriteKey (filepath .Join (pkiDir , kubeadmconstants .ServiceAccountPrivateKeyName ), setupKey )
323
+ return err
320
324
},
321
325
expectedKey : setupKey ,
322
326
},
323
327
{ // some file exists, but it is not a valid key > err
328
+ name : "empty key" ,
324
329
setupFunc : func (pkiDir string ) error {
325
- testutil .SetupEmptyFiles (t , pkiDir , "dummy.key" )
330
+ testutil .SetupEmptyFiles (t , pkiDir , kubeadmconstants . ServiceAccountPrivateKeyName )
326
331
return nil
327
332
},
328
- expectedError : true ,
333
+ expectedErr : true ,
329
334
},
330
335
}
336
+ for _ , tt := range tcases {
337
+ t .Run (tt .name , func (t * testing.T ) {
338
+ dir := testutil .SetupTempDir (t )
339
+ defer os .RemoveAll (dir )
331
340
332
- for _ , test := range tests {
333
- // Create temp folder for the test case
334
- tmpdir := testutil .SetupTempDir (t )
335
- defer os .RemoveAll (tmpdir )
336
-
337
- // executes setup func (if necessary)
338
- if test .setupFunc != nil {
339
- if err := test .setupFunc (tmpdir ); err != nil {
340
- t .Errorf ("error executing setupFunc: %v" , err )
341
- continue
341
+ if tt .setupFunc != nil {
342
+ if err := tt .setupFunc (dir ); err != nil {
343
+ t .Fatalf ("error executing setupFunc: %v" , err )
344
+ }
342
345
}
343
- }
344
346
345
- // executes create func
346
- err := writeKeyFilesIfNotExist (tmpdir , "dummy" , key )
347
-
348
- if ! test .expectedError && err != nil {
349
- t .Errorf ("error writeKeyFilesIfNotExist failed when not expected to fail: %v" , err )
350
- continue
351
- } else if test .expectedError && err == nil {
352
- t .Error ("error writeKeyFilesIfNotExist didn't failed when expected" )
353
- continue
354
- } else if test .expectedError || test .expectedKey == nil {
355
- continue
356
- }
357
-
358
- // asserts expected files are there
359
- testutil .AssertFileExists (t , tmpdir , "dummy.key" , "dummy.pub" )
360
-
361
- // check created key
362
- resultingKey , err := pkiutil .TryLoadKeyFromDisk (tmpdir , "dummy" )
363
- if err != nil {
364
- t .Errorf ("failure reading created key: %v" , err )
365
- continue
366
- }
367
-
368
- resultingKeyPEM , err := keyutil .MarshalPrivateKeyToPEM (resultingKey )
369
- if err != nil {
370
- t .Errorf ("failure marshaling created key: %v" , err )
371
- continue
372
- }
373
-
374
- expectedKeyPEM , err := keyutil .MarshalPrivateKeyToPEM (test .expectedKey )
375
- if err != nil {
376
- t .Fatalf ("Failed to marshal expected private key: %v" , err )
377
- }
347
+ err := CreateServiceAccountKeyAndPublicKeyFiles (dir )
348
+ if (err != nil ) != tt .expectedErr {
349
+ t .Fatalf ("expected error: %v, got: %v, error: %v" , tt .expectedErr , err != nil , err )
350
+ } else if tt .expectedErr {
351
+ return
352
+ }
378
353
379
- if ! bytes .Equal (resultingKeyPEM , expectedKeyPEM ) {
380
- t .Error ("created key does not match expected key" )
381
- }
354
+ resultingKeyPEM , wasGenerated , err := keyutil .LoadOrGenerateKeyFile (filepath .Join (dir , kubeadmconstants .ServiceAccountPrivateKeyName ))
355
+ if err != nil {
356
+ t .Errorf ("Can't load created key: %v" , err )
357
+ } else if wasGenerated {
358
+ t .Error ("The key was not created" )
359
+ } else if tt .expectedKey != nil && ! bytes .Equal (resultingKeyPEM , tt .expectedKey ) {
360
+ t .Error ("Non-existing key is used" )
361
+ }
362
+ })
382
363
}
383
364
}
384
365
0 commit comments