@@ -343,3 +343,96 @@ func TestAuthenticateFailure(t *testing.T) {
343
343
err = as .Authenticate ("print" , "fake-browser" )
344
344
assert .Contains (t , err .Error (), "some error" )
345
345
}
346
+
347
+ func TestReauthenticate (t * testing.T ) {
348
+ tfile , err := ioutil .TempFile ("" , "*storage.json" )
349
+ assert .NoError (t , err )
350
+
351
+ jstore , err := storage .OpenJsonStore (tfile .Name ())
352
+ assert .NoError (t , err )
353
+
354
+ defer os .Remove (tfile .Name ())
355
+
356
+ as := & AWSSSO {
357
+ SsoRegion : "us-west-1" ,
358
+ StartUrl : "https://testing.awsapps.com/start" ,
359
+ store : jstore ,
360
+ urlAction : "invalid" ,
361
+ browser : "no-such-browser" ,
362
+ urlExecCommand : []interface {}{"/dev/null" },
363
+ }
364
+
365
+ secs , _ := time .ParseDuration ("5s" )
366
+ expires := time .Now ().Add (secs ).Unix ()
367
+
368
+ as .ssooidc = & mockSsoOidcApi {
369
+ Results : []mockSsoOidcApiResults {
370
+ {
371
+ RegisterClient : & ssooidc.RegisterClientOutput {
372
+ AuthorizationEndpoint : nil ,
373
+ ClientId : aws .String ("this-is-my-client-id" ),
374
+ ClientSecret : aws .String ("this-is-my-client-secret" ),
375
+ ClientIdIssuedAt : time .Now ().Unix (),
376
+ ClientSecretExpiresAt : int64 (expires ),
377
+ TokenEndpoint : nil ,
378
+ },
379
+ Error : nil ,
380
+ },
381
+ {
382
+ StartDeviceAuthorization : & ssooidc.StartDeviceAuthorizationOutput {
383
+ DeviceCode : aws .String ("device-code" ),
384
+ UserCode : aws .String ("user-code" ),
385
+ VerificationUri : aws .String ("verification-uri" ),
386
+ VerificationUriComplete : aws .String ("verification-uri-complete" ),
387
+ ExpiresIn : int32 (expires ),
388
+ Interval : 5 ,
389
+ },
390
+ Error : nil ,
391
+ },
392
+ {
393
+ CreateToken : & ssooidc.CreateTokenOutput {},
394
+ Error : fmt .Errorf ("some error" ),
395
+ },
396
+ },
397
+ }
398
+
399
+ // invalid urlAction
400
+ assert .Panics (t , func () { as .reauthenticate () })
401
+
402
+ // valid urlAction, but command is invalid
403
+ as .urlAction = "exec"
404
+ as .ssooidc = & mockSsoOidcApi {
405
+ Results : []mockSsoOidcApiResults {
406
+ {
407
+ RegisterClient : & ssooidc.RegisterClientOutput {
408
+ AuthorizationEndpoint : nil ,
409
+ ClientId : aws .String ("this-is-my-client-id" ),
410
+ ClientSecret : aws .String ("this-is-my-client-secret" ),
411
+ ClientIdIssuedAt : time .Now ().Unix (),
412
+ ClientSecretExpiresAt : int64 (expires ),
413
+ TokenEndpoint : nil ,
414
+ },
415
+ Error : nil ,
416
+ },
417
+ {
418
+ StartDeviceAuthorization : & ssooidc.StartDeviceAuthorizationOutput {
419
+ DeviceCode : aws .String ("device-code" ),
420
+ UserCode : aws .String ("user-code" ),
421
+ VerificationUri : aws .String ("verification-uri" ),
422
+ VerificationUriComplete : aws .String ("verification-uri-complete" ),
423
+ ExpiresIn : int32 (expires ),
424
+ Interval : 5 ,
425
+ },
426
+ Error : nil ,
427
+ },
428
+ {
429
+ CreateToken : & ssooidc.CreateTokenOutput {},
430
+ Error : fmt .Errorf ("some error" ),
431
+ },
432
+ },
433
+ }
434
+
435
+ err = as .reauthenticate ()
436
+ assert .Contains (t , err .Error (), "Unable to exec" )
437
+
438
+ }
0 commit comments