@@ -182,7 +182,7 @@ func TestTokenManager_Close(t *testing.T) {
182
182
183
183
var stopper StopFunc
184
184
assert .NotPanics (t , func () {
185
- stopper , err = tokenManager .Start (listener )
185
+ _ , stopper , err = tokenManager .Start (listener )
186
186
assert .NotNil (t , stopper )
187
187
assert .NoError (t , err )
188
188
})
@@ -222,7 +222,7 @@ func TestTokenManager_Close(t *testing.T) {
222
222
listener .On ("OnNext" , testTokenValid ).Return ()
223
223
224
224
assert .NotPanics (t , func () {
225
- cancel , err := tokenManager .Start (listener )
225
+ _ , cancel , err := tokenManager .Start (listener )
226
226
assert .NotNil (t , cancel )
227
227
assert .NoError (t , err )
228
228
assert .NotNil (t , tm .listener )
@@ -258,7 +258,7 @@ func TestTokenManager_Close(t *testing.T) {
258
258
listener .On ("OnNext" , testTokenValid ).Return ()
259
259
260
260
assert .NotPanics (t , func () {
261
- stopper , err := tokenManager .Start (listener )
261
+ _ , stopper , err := tokenManager .Start (listener )
262
262
assert .NotNil (t , stopper )
263
263
assert .NoError (t , err )
264
264
assert .NotNil (t , tm .listener )
@@ -329,7 +329,7 @@ func TestTokenManager_Start(t *testing.T) {
329
329
go func () {
330
330
defer wg .Done ()
331
331
time .Sleep (time .Duration (int64 (rand .Intn (100 )) * int64 (time .Millisecond )))
332
- _ , err := tokenManager .Start (listener )
332
+ _ , _ , err := tokenManager .Start (listener )
333
333
if err == nil {
334
334
hasStarted += 1
335
335
return
@@ -344,7 +344,7 @@ func TestTokenManager_Start(t *testing.T) {
344
344
assert .NotNil (t , tm .listener )
345
345
assert .Equal (t , 1 , hasStarted )
346
346
assert .Equal (t , int32 (numExecutions - 1 ), atomic .LoadInt32 (& alreadyStarted ))
347
- cancel , err := tokenManager .Start (listener )
347
+ _ , cancel , err := tokenManager .Start (listener )
348
348
assert .Nil (t , cancel )
349
349
assert .Error (t , err )
350
350
assert .NotNil (t , tm .listener )
@@ -389,7 +389,7 @@ func TestTokenManager_Start(t *testing.T) {
389
389
} else {
390
390
l := & mockTokenListener {Id : num }
391
391
l .On ("OnNext" , testTokenValid ).Return ()
392
- _ , err = tokenManager .Start (l )
392
+ _ , _ , err = tokenManager .Start (l )
393
393
}
394
394
if err != nil {
395
395
if err != ErrTokenManagerAlreadyStopped && err != ErrTokenManagerAlreadyStarted {
@@ -412,7 +412,7 @@ func TestTokenManager_Start(t *testing.T) {
412
412
log .Printf ("FAILING WITH lastExecution[STOPPED]: %d" , lastExecution )
413
413
}
414
414
assert .NotNil (t , tm .listener )
415
- stopper , err := tokenManager .Start (listener )
415
+ _ , stopper , err := tokenManager .Start (listener )
416
416
assert .Nil (t , stopper )
417
417
assert .Error (t , err )
418
418
// Stop the token manager with internal stop, since stopper should be nil
@@ -588,7 +588,8 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
588
588
mParser .On ("ParseResponse" , rawResponse ).Return (testTokenValid , nil )
589
589
listener .On ("OnNext" , testTokenValid ).Return ()
590
590
591
- cancel , err := tokenManager .Start (listener )
591
+ initialToken , cancel , err := tokenManager .Start (listener )
592
+ assert .NotNil (t , initialToken )
592
593
assert .NotNil (t , cancel )
593
594
assert .NoError (t , err )
594
595
assert .NotNil (t , tm .listener )
@@ -598,6 +599,46 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
598
599
assert .NotNil (t , token1 )
599
600
})
600
601
602
+ t .Run ("GetToken with cached token" , func (t * testing.T ) {
603
+ t .Parallel ()
604
+ idp := & mockIdentityProvider {}
605
+ listener := & mockTokenListener {}
606
+ mParser := & mockIdentityProviderResponseParser {}
607
+ tokenManager , err := NewTokenManager (idp ,
608
+ TokenManagerOptions {
609
+ IdentityProviderResponseParser : mParser ,
610
+ },
611
+ )
612
+ assert .NoError (t , err )
613
+ assert .NotNil (t , tokenManager )
614
+ tm , ok := tokenManager .(* entraidTokenManager )
615
+ assert .True (t , ok )
616
+ assert .Nil (t , tm .listener )
617
+
618
+ rawResponse := & authResult {
619
+ ResultType : shared .ResponseTypeRawToken ,
620
+ RawTokenVal : "test" ,
621
+ }
622
+
623
+ idp .On ("RequestToken" , mock .Anything ).Return (rawResponse , nil )
624
+ mParser .On ("ParseResponse" , rawResponse ).Return (testTokenValid , nil )
625
+ listener .On ("OnNext" , testTokenValid ).Return ()
626
+
627
+ initialToken , cancel , err := tokenManager .Start (listener )
628
+ assert .NotNil (t , initialToken )
629
+ assert .NotNil (t , cancel )
630
+ assert .NoError (t , err )
631
+ assert .NotNil (t , tm .listener )
632
+
633
+ token1 , err := tokenManager .GetToken (false )
634
+ assert .NoError (t , err )
635
+ assert .NotNil (t , token1 )
636
+
637
+ token2 , err := tokenManager .GetToken (false )
638
+ assert .NoError (t , err )
639
+ assert .Equal (t , token1 , token2 )
640
+ })
641
+
601
642
t .Run ("GetToken with parse error" , func (t * testing.T ) {
602
643
t .Parallel ()
603
644
idp := & mockIdentityProvider {}
@@ -623,7 +664,7 @@ func TestEntraidTokenManager_GetToken(t *testing.T) {
623
664
mParser .On ("ParseResponse" , rawResponse ).Return (nil , fmt .Errorf ("parse error" ))
624
665
listener .On ("OnError" , mock .Anything ).Return ()
625
666
626
- cancel , err := tokenManager .Start (listener )
667
+ _ , cancel , err := tokenManager .Start (listener )
627
668
assert .Error (t , err )
628
669
assert .Nil (t , cancel )
629
670
assert .Nil (t , tm .listener )
@@ -814,7 +855,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
814
855
mParser .On ("ParseResponse" , idpResponse ).Return (token1 , nil ).Once ()
815
856
listener .On ("OnNext" , token1 ).Return ().Once ()
816
857
817
- stopper , err := tokenManager .Start (listener )
858
+ _ , stopper , err := tokenManager .Start (listener )
818
859
assert .NotNil (t , stopper )
819
860
assert .NoError (t , err )
820
861
assert .NotNil (t , tm .listener )
@@ -881,7 +922,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
881
922
882
923
listener .On ("OnNext" , mock .AnythingOfType ("*token.Token" )).Return ()
883
924
884
- cancel , err := tokenManager .Start (listener )
925
+ _ , cancel , err := tokenManager .Start (listener )
885
926
assert .NotNil (t , cancel )
886
927
assert .NoError (t , err )
887
928
assert .NotNil (t , tm .listener )
@@ -938,7 +979,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
938
979
939
980
listener .On ("OnNext" , mock .AnythingOfType ("*token.Token" )).Return ()
940
981
941
- cancel , err := tokenManager .Start (listener )
982
+ _ , cancel , err := tokenManager .Start (listener )
942
983
assert .NotNil (t , cancel )
943
984
assert .NoError (t , err )
944
985
assert .NotNil (t , tm .listener )
@@ -991,7 +1032,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
991
1032
992
1033
listener .On ("OnNext" , mock .AnythingOfType ("*token.Token" )).Return ()
993
1034
994
- cancel , err := tokenManager .Start (listener )
1035
+ _ , cancel , err := tokenManager .Start (listener )
995
1036
assert .NotNil (t , cancel )
996
1037
assert .NoError (t , err )
997
1038
assert .NotNil (t , tm .listener )
@@ -1041,7 +1082,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
1041
1082
assert .NotNil (t , err )
1042
1083
}).Return ().Maybe ()
1043
1084
1044
- cancel , err := tokenManager .Start (listener )
1085
+ _ , cancel , err := tokenManager .Start (listener )
1045
1086
assert .NotNil (t , cancel )
1046
1087
assert .NoError (t , err )
1047
1088
assert .NotNil (t , tm .listener )
@@ -1095,7 +1136,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
1095
1136
assert .NotNil (t , err )
1096
1137
}).Return ()
1097
1138
1098
- cancel , err := tokenManager .Start (listener )
1139
+ _ , cancel , err := tokenManager .Start (listener )
1099
1140
assert .NotNil (t , cancel )
1100
1141
assert .NoError (t , err )
1101
1142
assert .NotNil (t , tm .listener )
@@ -1174,7 +1215,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
1174
1215
close (maxAttemptsReached )
1175
1216
}).Return ()
1176
1217
1177
- cancel , err := tokenManager .Start (listener )
1218
+ _ , cancel , err := tokenManager .Start (listener )
1178
1219
assert .NotNil (t , cancel )
1179
1220
assert .NoError (t , err )
1180
1221
assert .NotNil (t , tm .listener )
@@ -1248,7 +1289,7 @@ func TestEntraidTokenManager_Streaming(t *testing.T) {
1248
1289
close (maxAttemptsReached )
1249
1290
}).Return ().Maybe ()
1250
1291
1251
- cancel , err := tokenManager .Start (listener )
1292
+ _ , cancel , err := tokenManager .Start (listener )
1252
1293
assert .NotNil (t , cancel )
1253
1294
assert .NoError (t , err )
1254
1295
assert .NotNil (t , tm .listener )
@@ -1338,7 +1379,7 @@ func BenchmarkTokenManager_Start(b *testing.B) {
1338
1379
1339
1380
b .ResetTimer ()
1340
1381
for i := 0 ; i < b .N ; i ++ {
1341
- _ , _ = tokenManager .Start (listener )
1382
+ _ , _ , _ = tokenManager .Start (listener )
1342
1383
}
1343
1384
}
1344
1385
@@ -1364,7 +1405,7 @@ func BenchmarkTokenManager_Close(b *testing.B) {
1364
1405
mParser .On ("ParseResponse" , rawResponse ).Return (testTokenValid , nil )
1365
1406
listener .On ("OnNext" , testTokenValid ).Return ()
1366
1407
1367
- stopper , err := tokenManager .Start (listener )
1408
+ _ , stopper , err := tokenManager .Start (listener )
1368
1409
if err != nil {
1369
1410
b .Fatal (err )
1370
1411
}
@@ -1477,7 +1518,7 @@ func TestConcurrentTokenManagerOperations(t *testing.T) {
1477
1518
case 0 :
1478
1519
// Start the token manager with a new listener
1479
1520
// t.Logf("Goroutine %d, Operation %d: Attempting to start token manager", routineID, j)
1480
- closeFunc , err := tm .Start (listener )
1521
+ _ , closeFunc , err := tm .Start (listener )
1481
1522
1482
1523
if err != nil {
1483
1524
if err != ErrTokenManagerAlreadyStarted {
@@ -1655,7 +1696,7 @@ func TestConcurrentTokenManagerOperations(t *testing.T) {
1655
1696
},
1656
1697
}
1657
1698
1658
- closeFunc , err := tm .Start (finalListener )
1699
+ _ , closeFunc , err := tm .Start (finalListener )
1659
1700
if err != nil && err != ErrTokenManagerAlreadyStarted {
1660
1701
t .Fatalf ("Failed to start token manager after concurrent operations: %v" , err )
1661
1702
}
0 commit comments