@@ -423,6 +423,22 @@ func TestDefaultIdentityProviderResponseParser(t *testing.T) {
423
423
assert .NotNil (t , token )
424
424
})
425
425
426
+ t .Run ("Default IdentityProviderResponseParser with expired JWT Token" , func (t * testing.T ) {
427
+ idpResponse , err := NewIDPResponse (ResponseTypeRawToken , testJWTExpiredToken )
428
+ assert .NoError (t , err )
429
+ token , err := parser .ParseResponse (idpResponse )
430
+ assert .Error (t , err )
431
+ assert .Nil (t , token )
432
+ })
433
+
434
+ t .Run ("Default IdentityProviderResponseParser with zero expiry JWT Token" , func (t * testing.T ) {
435
+ idpResponse , err := NewIDPResponse (ResponseTypeRawToken , testJWTWithZeroExpiryToken )
436
+ assert .NoError (t , err )
437
+ token , err := parser .ParseResponse (idpResponse )
438
+ assert .Error (t , err )
439
+ assert .Nil (t , token )
440
+ })
441
+
426
442
t .Run ("NewIDPResponse with type Unknown" , func (t * testing.T ) {
427
443
idpResponse , err := NewIDPResponse ("Unknown" , testJWTtoken )
428
444
assert .Error (t , err )
@@ -567,3 +583,42 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
567
583
568
584
})
569
585
}
586
+
587
+ func TestEntraidTokenManager_durationToRenewal (t * testing.T ) {
588
+ // Test the durationToRenewal function
589
+ t .Parallel ()
590
+ t .Run ("durationToRenewal" , func (t * testing.T ) {
591
+ idp := & mockIdentityProvider {}
592
+ tokenManager , err := NewTokenManager (idp , TokenManagerOptions {
593
+ LowerRefreshBoundMs : 1000 * 60 * 60 , // 1 hour
594
+
595
+ })
596
+ assert .NoError (t , err )
597
+ assert .NotNil (t , tokenManager )
598
+ tm , ok := tokenManager .(* entraidTokenManager )
599
+ assert .True (t , ok )
600
+
601
+ result := tm .durationToRenewal ()
602
+ // returns 0 for nil token
603
+ assert .Equal (t , time .Duration (0 ), result )
604
+
605
+ // get token that expires before the lower bound
606
+ assert .NotPanics (t , func () {
607
+ expiresSoon := & public.AuthResult {
608
+ ExpiresOn : time .Now ().Add (time .Duration (tm .lowerBoundDuration ) - time .Minute ).UTC (),
609
+ }
610
+ idpResponse , err := NewIDPResponse (ResponseTypeAuthResult ,
611
+ expiresSoon )
612
+ assert .NoError (t , err )
613
+ idp .On ("RequestToken" ).Return (idpResponse , nil )
614
+
615
+ _ , err = tm .GetToken ()
616
+ assert .NoError (t , err )
617
+ assert .NotNil (t , tm .token )
618
+ })
619
+
620
+ // return the lower bound
621
+ result = tm .durationToRenewal ()
622
+ assert .Equal (t , tm .lowerBoundDuration , result )
623
+ })
624
+ }
0 commit comments