Skip to content

Commit d37ca2c

Browse files
committed
cover token_manager to 100%
1 parent a8cca57 commit d37ca2c

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

token_manager_test.go

+60
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,66 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
832832
mock.AssertExpectationsForObjects(t, idp, listener)
833833
})
834834

835+
t.Run("Start and Listen with 0 renewal duration and closing the manager", func(t *testing.T) {
836+
idp := &mockIdentityProvider{}
837+
listener := &mockTokenListener{}
838+
tokenManager, err := NewTokenManager(idp,
839+
TokenManagerOptions{
840+
LowerRefreshBoundMs: 1000 * 60 * 60, // 1 hour
841+
RetryOptions: RetryOptions{
842+
InitialDelayMs: 5000, // 5 seconds
843+
},
844+
},
845+
)
846+
assert.NoError(t, err)
847+
assert.NotNil(t, tokenManager)
848+
tm, ok := tokenManager.(*entraidTokenManager)
849+
assert.True(t, ok)
850+
assert.Nil(t, tm.listener)
851+
852+
assert.NoError(t, err)
853+
854+
expiresIn := time.Second
855+
expiresOn := time.Now().Add(expiresIn).UTC()
856+
res := &public.AuthResult{
857+
ExpiresOn: expiresOn,
858+
}
859+
idpResponse, err := NewIDPResponse(ResponseTypeAuthResult,
860+
res)
861+
assert.NoError(t, err)
862+
idp.On("RequestToken").Run(func(args mock.Arguments) {
863+
expiresOn := time.Now().Add(expiresIn).UTC()
864+
res := &public.AuthResult{
865+
ExpiresOn: expiresOn,
866+
}
867+
response := idpResponse.(*authResult)
868+
response.authResult = res
869+
}).Return(idpResponse, nil)
870+
871+
listener.On("OnTokenNext", mock.AnythingOfType("*entraid.Token")).Return()
872+
873+
cancel, err := tokenManager.Start(listener)
874+
assert.NotNil(t, cancel)
875+
assert.NoError(t, err)
876+
assert.NotNil(t, tm.listener)
877+
878+
toRenewal := tm.durationToRenewal()
879+
assert.Equal(t, time.Duration(0), toRenewal)
880+
assert.True(t, expiresIn > toRenewal)
881+
882+
<-time.After(time.Duration(tm.retryOptions.InitialDelayMs/2) * time.Millisecond)
883+
assert.NoError(t, cancel())
884+
assert.Nil(t, tm.listener)
885+
assert.Panics(t, func() {
886+
close(tm.closed)
887+
})
888+
889+
// called only once since the token manager was closed prior to initial delay passing
890+
idp.AssertNumberOfCalls(t, "RequestToken", 1)
891+
listener.AssertNumberOfCalls(t, "OnTokenNext", 1)
892+
mock.AssertExpectationsForObjects(t, idp, listener)
893+
})
894+
835895
t.Run("Start and Listen", func(t *testing.T) {
836896
idp := &mockIdentityProvider{}
837897
listener := &mockTokenListener{}

0 commit comments

Comments
 (0)