@@ -38,7 +38,8 @@ import { sleep } from '../util/sleep';
38
38
import { getToken } from './get-token' ;
39
39
40
40
const FID = 'dont-talk-to-strangers' ;
41
- const AUTH_TOKEN = 'authTokenFromServer' ;
41
+ const AUTH_TOKEN = 'authToken' ;
42
+ const NEW_AUTH_TOKEN = 'newAuthToken' ;
42
43
const ONE_WEEK_MS = 7 * 24 * 60 * 60 * 1000 ;
43
44
44
45
/**
@@ -104,7 +105,7 @@ const setupInstallationEntryMap: Map<
104
105
const updatedEntry : RegisteredInstallationEntry = {
105
106
...entry ,
106
107
authToken : {
107
- token : AUTH_TOKEN ,
108
+ token : NEW_AUTH_TOKEN ,
108
109
expiresIn : ONE_WEEK_MS ,
109
110
requestStatus : RequestStatus . COMPLETED ,
110
111
creationTime : Date . now ( )
@@ -196,7 +197,7 @@ describe('getToken', () => {
196
197
registrationStatus : RequestStatus . COMPLETED ,
197
198
refreshToken : 'refreshToken' ,
198
199
authToken : {
199
- token : AUTH_TOKEN ,
200
+ token : NEW_AUTH_TOKEN ,
200
201
expiresIn : ONE_WEEK_MS ,
201
202
requestStatus : RequestStatus . COMPLETED ,
202
203
creationTime : Date . now ( )
@@ -210,7 +211,7 @@ describe('getToken', () => {
210
211
) . callsFake ( async ( ) => {
211
212
await sleep ( 100 ) ; // Request would take some time
212
213
const result : CompletedAuthToken = {
213
- token : AUTH_TOKEN ,
214
+ token : NEW_AUTH_TOKEN ,
214
215
expiresIn : ONE_WEEK_MS ,
215
216
requestStatus : RequestStatus . COMPLETED ,
216
217
creationTime : Date . now ( )
@@ -226,7 +227,7 @@ describe('getToken', () => {
226
227
227
228
it ( 'resolves with an auth token' , async ( ) => {
228
229
const token = await getToken ( app ) ;
229
- expect ( token ) . to . equal ( AUTH_TOKEN ) ;
230
+ expect ( token ) . to . be . oneOf ( [ AUTH_TOKEN , NEW_AUTH_TOKEN ] ) ;
230
231
} ) ;
231
232
232
233
it ( 'saves the token in the DB' , async ( ) => {
@@ -382,16 +383,27 @@ describe('getToken', () => {
382
383
expect ( generateAuthTokenSpy ) . not . to . be . called ;
383
384
} ) ;
384
385
386
+ it ( 'refreshes the token if forceRefresh is true' , async ( ) => {
387
+ const token = await getToken ( app , true ) ;
388
+ expect ( token ) . to . equal ( NEW_AUTH_TOKEN ) ;
389
+ expect ( generateAuthTokenSpy ) . to . be . called ;
390
+ } ) ;
391
+
385
392
it ( 'works even if the app is offline' , async ( ) => {
386
393
stub ( navigator , 'onLine' ) . value ( false ) ;
387
394
388
395
const token = await getToken ( app ) ;
389
396
expect ( token ) . to . equal ( AUTH_TOKEN ) ;
390
397
} ) ;
398
+
399
+ it ( 'throws if the app is offline and forceRefresh is true' , async ( ) => {
400
+ stub ( navigator , 'onLine' ) . value ( false ) ;
401
+
402
+ await expect ( getToken ( app , true ) ) . to . be . rejected ;
403
+ } ) ;
391
404
} ) ;
392
405
393
406
describe ( 'when there is an auth token that is about to expire in the DB' , ( ) => {
394
- const DB_AUTH_TOKEN = 'authTokenFromDB' ;
395
407
let clock : SinonFakeTimers ;
396
408
397
409
beforeEach ( async ( ) => {
@@ -401,7 +413,7 @@ describe('getToken', () => {
401
413
registrationStatus : RequestStatus . COMPLETED ,
402
414
refreshToken : 'refreshToken' ,
403
415
authToken : {
404
- token : DB_AUTH_TOKEN ,
416
+ token : AUTH_TOKEN ,
405
417
expiresIn : ONE_WEEK_MS ,
406
418
requestStatus : RequestStatus . COMPLETED ,
407
419
creationTime :
@@ -414,13 +426,13 @@ describe('getToken', () => {
414
426
415
427
it ( 'returns a different token after expiration' , async ( ) => {
416
428
const token1 = await getToken ( app ) ;
417
- expect ( token1 ) . to . equal ( DB_AUTH_TOKEN ) ;
429
+ expect ( token1 ) . to . equal ( AUTH_TOKEN ) ;
418
430
419
431
// Wait 30 minutes.
420
432
clock . tick ( '30:00' ) ;
421
433
422
434
const token2 = await getToken ( app ) ;
423
- await expect ( token2 ) . to . equal ( AUTH_TOKEN ) ;
435
+ await expect ( token2 ) . to . equal ( NEW_AUTH_TOKEN ) ;
424
436
await expect ( token2 ) . not . to . equal ( token1 ) ;
425
437
} ) ;
426
438
} ) ;
@@ -441,6 +453,12 @@ describe('getToken', () => {
441
453
await set ( appConfig , installationEntry ) ;
442
454
} ) ;
443
455
456
+ it ( 'returns a different token' , async ( ) => {
457
+ const token = await getToken ( app ) ;
458
+ expect ( token ) . to . equal ( NEW_AUTH_TOKEN ) ;
459
+ expect ( generateAuthTokenSpy ) . to . be . called ;
460
+ } ) ;
461
+
444
462
it ( 'throws if the app is offline' , async ( ) => {
445
463
stub ( navigator , 'onLine' ) . value ( false ) ;
446
464
0 commit comments