@@ -113,10 +113,6 @@ describe('internal api', () => {
113
113
fakeRecaptchaToken
114
114
) ;
115
115
expect ( token ) . to . deep . equal ( { token : fakeRecaptchaAppCheckToken . token } ) ;
116
- // TODO: Permanently fix.
117
- // Small delay to prevent common test flakiness where this test runs
118
- // into afterEach() sometimes
119
- await new Promise ( resolve => setTimeout ( resolve , 50 ) ) ;
120
116
} ) ;
121
117
122
118
it ( 'resolves with a dummy token and an error if failed to get a token' , async ( ) => {
@@ -148,7 +144,7 @@ describe('internal api', () => {
148
144
it ( 'notifies listeners using cached token' , async ( ) => {
149
145
const appCheck = initializeAppCheck ( app , {
150
146
provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
151
- isTokenAutoRefreshEnabled : true
147
+ isTokenAutoRefreshEnabled : false
152
148
} ) ;
153
149
154
150
const clock = useFakeTimers ( ) ;
@@ -216,6 +212,7 @@ describe('internal api', () => {
216
212
} ) ;
217
213
218
214
it ( 'calls 3P error handler if there is an error getting a token' , async ( ) => {
215
+ stub ( console , 'error' ) ;
219
216
const appCheck = initializeAppCheck ( app , {
220
217
provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
221
218
isTokenAutoRefreshEnabled : true
@@ -239,6 +236,7 @@ describe('internal api', () => {
239
236
} ) ;
240
237
241
238
it ( 'ignores listeners that throw' , async ( ) => {
239
+ stub ( console , 'error' ) ;
242
240
const appCheck = initializeAppCheck ( app , {
243
241
provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
244
242
isTokenAutoRefreshEnabled : true
@@ -247,9 +245,7 @@ describe('internal api', () => {
247
245
stub ( client , 'exchangeToken' ) . returns (
248
246
Promise . resolve ( fakeRecaptchaAppCheckToken )
249
247
) ;
250
- const listener1 = ( ) : void => {
251
- throw new Error ( ) ;
252
- } ;
248
+ const listener1 = stub ( ) . throws ( new Error ( ) ) ;
253
249
const listener2 = spy ( ) ;
254
250
255
251
addTokenListener (
@@ -265,6 +261,9 @@ describe('internal api', () => {
265
261
266
262
await getToken ( appCheck as AppCheckService ) ;
267
263
264
+ expect ( listener1 ) . to . be . calledWith ( {
265
+ token : fakeRecaptchaAppCheckToken . token
266
+ } ) ;
268
267
expect ( listener2 ) . to . be . calledWith ( {
269
268
token : fakeRecaptchaAppCheckToken . token
270
269
} ) ;
@@ -344,7 +343,7 @@ describe('internal api', () => {
344
343
} ) ;
345
344
} ) ;
346
345
347
- it ( 'exchanges debug token if in debug mode' , async ( ) => {
346
+ it ( 'exchanges debug token if in debug mode and there is no cached token ' , async ( ) => {
348
347
const exchangeTokenStub : SinonStub = stub (
349
348
client ,
350
349
'exchangeToken'
@@ -393,15 +392,10 @@ describe('internal api', () => {
393
392
expect ( getState ( app ) . tokenRefresher ?. isRunning ( ) ) . to . be . true ;
394
393
} ) ;
395
394
396
- it ( 'notifies the listener with the valid token in memory immediately' , done => {
395
+ it ( 'notifies the listener with the valid token in memory immediately' , async ( ) => {
397
396
const clock = useFakeTimers ( ) ;
398
- const fakeListener : AppCheckTokenListener = token => {
399
- expect ( token ) . to . deep . equal ( {
400
- token : `fake-memory-app-check-token`
401
- } ) ;
402
- clock . restore ( ) ;
403
- done ( ) ;
404
- } ;
397
+
398
+ const listener = stub ( ) ;
405
399
406
400
setState ( app , {
407
401
...getState ( app ) ,
@@ -415,12 +409,16 @@ describe('internal api', () => {
415
409
addTokenListener (
416
410
{ app } as AppCheckService ,
417
411
ListenerType . INTERNAL ,
418
- fakeListener
412
+ listener
419
413
) ;
414
+ await clock . runAllAsync ( ) ;
415
+ expect ( listener ) . to . be . calledWith ( {
416
+ token : 'fake-memory-app-check-token'
417
+ } ) ;
418
+ clock . restore ( ) ;
420
419
} ) ;
421
420
422
421
it ( 'notifies the listener with the valid token in storage' , done => {
423
- const clock = useFakeTimers ( ) ;
424
422
const appCheck = initializeAppCheck ( app , {
425
423
provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
426
424
isTokenAutoRefreshEnabled : true
@@ -437,60 +435,15 @@ describe('internal api', () => {
437
435
expect ( token ) . to . deep . equal ( {
438
436
token : `fake-cached-app-check-token`
439
437
} ) ;
440
- clock . restore ( ) ;
441
- done ( ) ;
442
- } ;
443
-
444
- addTokenListener (
445
- appCheck as AppCheckService ,
446
- ListenerType . INTERNAL ,
447
- fakeListener
448
- ) ;
449
-
450
- clock . tick ( 1 ) ;
451
- } ) ;
452
-
453
- it ( 'notifies the listener with the debug token immediately' , done => {
454
- const fakeListener : AppCheckTokenListener = token => {
455
- expect ( token ) . to . deep . equal ( {
456
- token : `my-debug-token`
457
- } ) ;
458
438
done ( ) ;
459
439
} ;
460
440
461
- const debugState = getDebugState ( ) ;
462
- debugState . enabled = true ;
463
- debugState . token = new Deferred ( ) ;
464
- debugState . token . resolve ( 'my-debug-token' ) ;
465
-
466
- const appCheck = initializeAppCheck ( app , {
467
- provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
468
- } ) ;
469
441
addTokenListener (
470
442
appCheck as AppCheckService ,
471
443
ListenerType . INTERNAL ,
472
444
fakeListener
473
445
) ;
474
446
} ) ;
475
-
476
- it ( 'does NOT start token refresher in debug mode' , ( ) => {
477
- const debugState = getDebugState ( ) ;
478
- debugState . enabled = true ;
479
- debugState . token = new Deferred ( ) ;
480
- debugState . token . resolve ( 'my-debug-token' ) ;
481
-
482
- const appCheck = initializeAppCheck ( app , {
483
- provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
484
- } ) ;
485
- addTokenListener (
486
- appCheck as AppCheckService ,
487
- ListenerType . INTERNAL ,
488
- ( ) => { }
489
- ) ;
490
-
491
- const state = getState ( app ) ;
492
- expect ( state . tokenRefresher ) . is . undefined ;
493
- } ) ;
494
447
} ) ;
495
448
496
449
describe ( 'removeTokenListener' , ( ) => {
0 commit comments