@@ -2,6 +2,7 @@ package entraid
2
2
3
3
import (
4
4
"fmt"
5
+ "log"
5
6
"math/rand"
6
7
"os"
7
8
"reflect"
@@ -538,7 +539,7 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
538
539
assert .NoError (t , err )
539
540
assert .NotNil (t , tm .listener )
540
541
541
- token , err := tokenManager .GetToken ()
542
+ token , err := tokenManager .GetToken (false )
542
543
assert .NoError (t , err )
543
544
assert .NotNil (t , token )
544
545
@@ -591,7 +592,7 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
591
592
592
593
idp .On ("RequestToken" ).Return (idpResponse , nil )
593
594
594
- token , err := tokenManager .GetToken ()
595
+ token , err := tokenManager .GetToken (false )
595
596
assert .Error (t , err )
596
597
assert .Nil (t , token )
597
598
})
@@ -611,7 +612,7 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
611
612
612
613
idp .On ("RequestToken" ).Return (rawResponse , nil )
613
614
614
- token , err := tokenManager .GetToken ()
615
+ token , err := tokenManager .GetToken (false )
615
616
assert .Error (t , err )
616
617
assert .Nil (t , token )
617
618
})
@@ -634,7 +635,7 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
634
635
idp .On ("RequestToken" ).Return (idpResponse , nil )
635
636
mParser .On ("ParseResponse" , idpResponse ).Return (nil , nil )
636
637
637
- token , err := tokenManager .GetToken ()
638
+ token , err := tokenManager .GetToken (false )
638
639
assert .Error (t , err )
639
640
assert .Nil (t , token )
640
641
})
@@ -654,7 +655,7 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
654
655
655
656
idp .On ("RequestToken" ).Return (nil , fmt .Errorf ("idp error" ))
656
657
657
- token , err := tokenManager .GetToken ()
658
+ token , err := tokenManager .GetToken (false )
658
659
assert .Error (t , err )
659
660
assert .Nil (t , token )
660
661
})
@@ -687,7 +688,7 @@ func TestEntraidTokenManager_durationToRenewal(t *testing.T) {
687
688
assert .NoError (t , err )
688
689
idp .On ("RequestToken" ).Return (idpResponse , nil ).Once ()
689
690
tm .token = nil
690
- _ , err = tm .GetToken ()
691
+ _ , err = tm .GetToken (false )
691
692
assert .NoError (t , err )
692
693
assert .NotNil (t , tm .token )
693
694
@@ -707,7 +708,7 @@ func TestEntraidTokenManager_durationToRenewal(t *testing.T) {
707
708
assert .NoError (t , err )
708
709
idp .On ("RequestToken" ).Return (idpResponse , nil ).Once ()
709
710
tm .token = nil
710
- _ , err = tm .GetToken ()
711
+ _ , err = tm .GetToken (false )
711
712
assert .NoError (t , err )
712
713
assert .NotNil (t , tm .token )
713
714
@@ -771,14 +772,17 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
771
772
assert .NotNil (t , tm .listener )
772
773
assert .NoError (t , tokenManager .Close ())
773
774
assert .Nil (t , tm .listener )
775
+ assert .Panics (t , func () {
776
+ close (tm .closed )
777
+ })
778
+
774
779
<- time .After (toRenewal )
775
780
assert .Error (t , tokenManager .Close ())
776
781
mock .AssertExpectationsForObjects (t , idp , mParser , listener )
777
782
})
778
783
t .Run ("Start and Listen" , func (t * testing.T ) {
779
784
idp := & mockIdentityProvider {}
780
785
listener := & mockTokenListener {}
781
- mParser := & mockIdentityProviderResponseParser {}
782
786
tokenManager , err := NewTokenManager (idp ,
783
787
TokenManagerOptions {},
784
788
)
@@ -821,6 +825,67 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
821
825
822
826
<- time .After (toRenewal + time .Second )
823
827
824
- mock .AssertExpectationsForObjects (t , idp , mParser , listener )
828
+ mock .AssertExpectationsForObjects (t , idp , listener )
829
+ })
830
+
831
+ t .Run ("Start and Listen with retryable error" , func (t * testing.T ) {
832
+ idp := & mockIdentityProvider {}
833
+ listener := & mockTokenListener {}
834
+ tokenManager , err := NewTokenManager (idp ,
835
+ TokenManagerOptions {},
836
+ )
837
+ assert .NoError (t , err )
838
+ assert .NotNil (t , tokenManager )
839
+ tm , ok := tokenManager .(* entraidTokenManager )
840
+ assert .True (t , ok )
841
+ assert .Nil (t , tm .listener )
842
+
843
+ assert .NoError (t , err )
844
+
845
+ expiresIn := time .Second
846
+ expiresOn := time .Now ().Add (expiresIn ).UTC ()
847
+ res := & public.AuthResult {
848
+ ExpiresOn : expiresOn ,
849
+ }
850
+ idpResponse , err := NewIDPResponse (ResponseTypeAuthResult ,
851
+ res )
852
+ assert .NoError (t , err )
853
+ var returnErr error
854
+ var secondResponse bool
855
+
856
+ idp .On ("RequestToken" ).Run (func (args mock.Arguments ) {
857
+ if secondResponse {
858
+ returnErr = mockError {isTimeout : true }
859
+ return
860
+ }
861
+ expiresOn := time .Now ().Add (expiresIn ).UTC ()
862
+ res := & public.AuthResult {
863
+ ExpiresOn : expiresOn ,
864
+ }
865
+ response := idpResponse .(* authResult )
866
+ response .authResult = res
867
+ secondResponse = true
868
+ }).Return (idpResponse , returnErr )
869
+
870
+ listener .On ("OnTokenNext" , mock .AnythingOfType ("*entraid.Token" )).Return ()
871
+ listener .On ("OnTokenError" , mock .Anything ).Run (func (args mock.Arguments ) {
872
+ err := args .Get (0 )
873
+ assert .NotNil (t , err )
874
+ log .Printf ("Found TOKEN Error: %v" , err )
875
+ }).Return ()
876
+
877
+ cancel , err := tokenManager .Start (listener )
878
+ assert .NotNil (t , cancel )
879
+ assert .NoError (t , err )
880
+ assert .NotNil (t , tm .listener )
881
+
882
+ toRenewal := tm .durationToRenewal ()
883
+ assert .NotEqual (t , 0 , toRenewal )
884
+ assert .NotEqual (t , expiresIn , toRenewal )
885
+ assert .True (t , expiresIn > toRenewal )
886
+
887
+ <- time .After (toRenewal + time .Second )
888
+
889
+ mock .AssertExpectationsForObjects (t , idp , listener )
825
890
})
826
891
}
0 commit comments