@@ -306,6 +306,65 @@ describe('core/auth/auth_impl', () => {
306
306
} ) ;
307
307
} ) ;
308
308
309
+ context ( 'with Proactive Refresh' , ( ) => {
310
+ let oldUser : UserInternal ;
311
+
312
+ beforeEach ( ( ) => {
313
+ oldUser = testUser ( auth , 'old-user-uid' ) ;
314
+
315
+ for ( const u of [ user , oldUser ] ) {
316
+ sinon . spy ( u , '_startProactiveRefresh' ) ;
317
+ sinon . spy ( u , '_stopProactiveRefresh' ) ;
318
+ }
319
+ } ) ;
320
+
321
+ it ( 'null -> user: does not turn on if not enabled' , async ( ) => {
322
+ await auth . _updateCurrentUser ( null ) ;
323
+ await auth . _updateCurrentUser ( user ) ;
324
+
325
+ expect ( user . _startProactiveRefresh ) . not . to . have . been . called ;
326
+ } ) ;
327
+
328
+ it ( 'null -> user: turns on if enabled' , async ( ) => {
329
+ await auth . _updateCurrentUser ( null ) ;
330
+ auth . _startProactiveRefresh ( ) ;
331
+ await auth . _updateCurrentUser ( user ) ;
332
+
333
+ expect ( user . _startProactiveRefresh ) . to . have . been . called ;
334
+ } ) ;
335
+
336
+ it ( 'user -> user: does not turn on if not enabled' , async ( ) => {
337
+ await auth . _updateCurrentUser ( oldUser ) ;
338
+ await auth . _updateCurrentUser ( user ) ;
339
+
340
+ expect ( user . _startProactiveRefresh ) . not . to . have . been . called ;
341
+ } ) ;
342
+
343
+ it ( 'user -> user: turns on if enabled' , async ( ) => {
344
+ auth . _startProactiveRefresh ( ) ;
345
+ await auth . _updateCurrentUser ( oldUser ) ;
346
+ await auth . _updateCurrentUser ( user ) ;
347
+
348
+ expect ( oldUser . _stopProactiveRefresh ) . to . have . been . called ;
349
+ expect ( user . _startProactiveRefresh ) . to . have . been . called ;
350
+ } ) ;
351
+
352
+ it ( 'calling start on auth triggers user to start' , async ( ) => {
353
+ await auth . _updateCurrentUser ( user ) ;
354
+ auth . _startProactiveRefresh ( ) ;
355
+
356
+ expect ( user . _startProactiveRefresh ) . to . have . been . calledOnce ;
357
+ } ) ;
358
+
359
+ it ( 'calling stop stops the refresh on the current user' , async ( ) => {
360
+ auth . _startProactiveRefresh ( ) ;
361
+ await auth . _updateCurrentUser ( user ) ;
362
+ auth . _stopProactiveRefresh ( ) ;
363
+
364
+ expect ( user . _stopProactiveRefresh ) . to . have . been . called ;
365
+ } ) ;
366
+ } ) ;
367
+
309
368
it ( 'onAuthStateChange works for multiple listeners' , async ( ) => {
310
369
const cb1 = sinon . spy ( ) ;
311
370
const cb2 = sinon . spy ( ) ;
0 commit comments