@@ -496,17 +496,6 @@ func TestDefaultIdentityProviderResponseParser(t *testing.T) {
496
496
assert .Error (t , err )
497
497
assert .Nil (t , token )
498
498
})
499
- t .Run ("Default IdentityProviderResponseParser with token that will expire soon" , func (t * testing.T ) {
500
- authResult := & public.AuthResult {
501
- ExpiresOn : time .Now ().Add (MinTokenTTL ).Add (- time .Minute ).UTC (),
502
- }
503
- idpResponse , err := NewIDPResponse (ResponseTypeAuthResult ,
504
- authResult )
505
- assert .NoError (t , err )
506
- token , err := parser .ParseResponse (idpResponse )
507
- assert .Error (t , err )
508
- assert .Nil (t , token )
509
- })
510
499
t .Run ("Default IdentityProviderResponseParser with token that expired" , func (t * testing.T ) {
511
500
authResult := & public.AuthResult {
512
501
ExpiresOn : time .Now ().Add (- time .Hour ).UTC (),
@@ -731,9 +720,8 @@ func TestEntraidTokenManager_durationToRenewal(t *testing.T) {
731
720
}
732
721
733
722
func TestEntraidTokenManager_Streaming (t * testing.T ) {
734
- // write a test that will cover the goroutine in the Start
735
723
t .Parallel ()
736
- t .Run ("Streaming " , func (t * testing.T ) {
724
+ t .Run ("Start and Close " , func (t * testing.T ) {
737
725
idp := & mockIdentityProvider {}
738
726
listener := & mockTokenListener {}
739
727
mParser := & mockIdentityProviderResponseParser {}
@@ -748,7 +736,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
748
736
assert .True (t , ok )
749
737
assert .Nil (t , tm .listener )
750
738
751
- expiresIn := 10 * time .Millisecond
739
+ expiresIn := time .Second
752
740
expiresOn := time .Now ().Add (expiresIn ).UTC ()
753
741
authResult := & public.AuthResult {
754
742
ExpiresOn : expiresOn ,
@@ -757,7 +745,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
757
745
authResult )
758
746
assert .NoError (t , err )
759
747
760
- idp .On ("RequestToken" ).Return (idpResponse , nil )
748
+ idp .On ("RequestToken" ).Return (idpResponse , nil ). Once ()
761
749
token := NewToken (
762
750
"test" ,
763
751
"test" ,
@@ -767,8 +755,59 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
767
755
int64 (time .Until (expiresOn )),
768
756
)
769
757
770
- mParser .On ("ParseResponse" , idpResponse ).Return (token , nil )
771
- listener .On ("OnTokenNext" , token ).Return ()
758
+ mParser .On ("ParseResponse" , idpResponse ).Return (token , nil ).Once ()
759
+ listener .On ("OnTokenNext" , token ).Return ().Once ()
760
+
761
+ cancel , err := tokenManager .Start (listener )
762
+ assert .NotNil (t , cancel )
763
+ assert .NoError (t , err )
764
+ assert .NotNil (t , tm .listener )
765
+
766
+ toRenewal := tm .durationToRenewal ()
767
+ assert .NotEqual (t , 0 , toRenewal )
768
+ assert .NotEqual (t , expiresIn , toRenewal )
769
+ assert .True (t , expiresIn > toRenewal )
770
+ <- time .After (toRenewal / 10 )
771
+ assert .NotNil (t , tm .listener )
772
+ assert .NoError (t , tokenManager .Close ())
773
+ assert .Nil (t , tm .listener )
774
+ <- time .After (toRenewal )
775
+ assert .Error (t , tokenManager .Close ())
776
+ mock .AssertExpectationsForObjects (t , idp , mParser , listener )
777
+ })
778
+ t .Run ("Start and Listen" , func (t * testing.T ) {
779
+ idp := & mockIdentityProvider {}
780
+ listener := & mockTokenListener {}
781
+ mParser := & mockIdentityProviderResponseParser {}
782
+ tokenManager , err := NewTokenManager (idp ,
783
+ TokenManagerOptions {},
784
+ )
785
+ assert .NoError (t , err )
786
+ assert .NotNil (t , tokenManager )
787
+ tm , ok := tokenManager .(* entraidTokenManager )
788
+ assert .True (t , ok )
789
+ assert .Nil (t , tm .listener )
790
+
791
+ assert .NoError (t , err )
792
+
793
+ expiresIn := time .Second
794
+ expiresOn := time .Now ().Add (expiresIn ).UTC ()
795
+ res := & public.AuthResult {
796
+ ExpiresOn : expiresOn ,
797
+ }
798
+ idpResponse , err := NewIDPResponse (ResponseTypeAuthResult ,
799
+ res )
800
+ assert .NoError (t , err )
801
+ idp .On ("RequestToken" ).Run (func (args mock.Arguments ) {
802
+ expiresOn := time .Now ().Add (expiresIn ).UTC ()
803
+ res := & public.AuthResult {
804
+ ExpiresOn : expiresOn ,
805
+ }
806
+ response := idpResponse .(* authResult )
807
+ response .authResult = res
808
+ }).Return (idpResponse , nil )
809
+
810
+ listener .On ("OnTokenNext" , mock .AnythingOfType ("*entraid.Token" )).Return ()
772
811
773
812
cancel , err := tokenManager .Start (listener )
774
813
assert .NotNil (t , cancel )
@@ -779,6 +818,9 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
779
818
assert .NotEqual (t , 0 , toRenewal )
780
819
assert .NotEqual (t , expiresIn , toRenewal )
781
820
assert .True (t , expiresIn > toRenewal )
782
- // should fail on mocks
821
+
822
+ <- time .After (toRenewal + time .Second )
823
+
824
+ mock .AssertExpectationsForObjects (t , idp , mParser , listener )
783
825
})
784
826
}
0 commit comments