Skip to content

Commit b62faba

Browse files
committed
Address comments in token manager, restore yarn.lock
1 parent 50bfb92 commit b62faba

File tree

3 files changed

+57
-73
lines changed

3 files changed

+57
-73
lines changed

packages-exp/auth-exp/src/core/user/token_manager.test.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import { expect, use } from 'chai';
1919
import * as chaiAsPromised from 'chai-as-promised';
20-
import { StsTokenManager, DATE_GENERATOR } from './token_manager';
20+
import { StsTokenManager, TOKEN_REFRESH_BUFFER_MS } from './token_manager';
2121
import { IdTokenResponse } from '../../model/id_token';
2222
import { createSandbox } from 'sinon';
2323

@@ -32,7 +32,7 @@ describe('core/user/token_manager', () => {
3232
beforeEach(() => {
3333
stsTokenManager = new StsTokenManager();
3434
now = Date.now();
35-
sandbox.stub(DATE_GENERATOR, 'now').returns(now);
35+
sandbox.stub(Date, 'now').returns(now);
3636
});
3737

3838
afterEach(() => sandbox.restore());
@@ -44,13 +44,12 @@ describe('core/user/token_manager', () => {
4444
});
4545

4646
it('is true if exp is in future but within buffer', () => {
47-
// Buffer is 30_000
48-
stsTokenManager.expirationTime = now + 20_000;
47+
stsTokenManager.expirationTime = now + (TOKEN_REFRESH_BUFFER_MS - 10);
4948
expect(stsTokenManager.isExpired).to.eq(true);
5049
});
5150

5251
it('is fals if exp is far enough in future', () => {
53-
stsTokenManager.expirationTime = now + 40_000;
52+
stsTokenManager.expirationTime = now + (TOKEN_REFRESH_BUFFER_MS + 10);
5453
expect(stsTokenManager.isExpired).to.eq(false);
5554
});
5655
});
@@ -75,19 +74,19 @@ describe('core/user/token_manager', () => {
7574
accessToken: 'token',
7675
expirationTime: now + 100_000
7776
});
78-
await expect(stsTokenManager.getToken(true)).to.be.rejectedWith(Error);
77+
await expect(stsTokenManager.getToken(true)).to.be.rejectedWith(Error, 'StsTokenManager: token refresh not implemented');
7978
});
8079

8180
it('throws if token is expired', async () => {
8281
Object.assign(stsTokenManager, {
8382
accessToken: 'token',
8483
expirationTime: now - 1
8584
});
86-
await expect(stsTokenManager.getToken()).to.be.rejectedWith(Error);
85+
await expect(stsTokenManager.getToken()).to.be.rejectedWith(Error, 'StsTokenManager: token refresh not implemented');
8786
});
8887

8988
it('throws if access token is missing', async () => {
90-
await expect(stsTokenManager.getToken()).to.be.rejectedWith(Error);
89+
await expect(stsTokenManager.getToken()).to.be.rejectedWith(Error, 'StsTokenManager: token refresh not implemented');
9190
});
9291

9392
it('returns access token if not expired, not refreshing', async () => {

packages-exp/auth-exp/src/core/user/token_manager.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,13 @@ import { IdTokenResponse } from '../../model/id_token';
2121
* The number of milliseconds before the official expiration time of a token
2222
* to refresh that token, to provide a buffer for RPCs to complete.
2323
*/
24-
const TOKEN_REFRESH_BUFFER_MS = 30_000;
24+
export const TOKEN_REFRESH_BUFFER_MS = 30_000;
2525

2626
export interface Tokens {
2727
accessToken: string;
2828
refreshToken: string | null;
2929
}
3030

31-
export const DATE_GENERATOR = {
32-
now: () => Date.now()
33-
};
34-
3531
export class StsTokenManager {
3632
refreshToken: string | null = null;
3733
accessToken: string | null = null;
@@ -40,19 +36,19 @@ export class StsTokenManager {
4036
get isExpired(): boolean {
4137
return (
4238
!this.expirationTime ||
43-
DATE_GENERATOR.now() > this.expirationTime - TOKEN_REFRESH_BUFFER_MS
39+
Date.now() > this.expirationTime - TOKEN_REFRESH_BUFFER_MS
4440
);
4541
}
4642

4743
updateFromServerResponse({
4844
idToken,
4945
refreshToken,
50-
expiresIn
46+
expiresIn: expiresInSec
5147
}: IdTokenResponse): void {
5248
this.refreshToken = refreshToken;
5349
this.accessToken = idToken;
5450
this.expirationTime =
55-
DATE_GENERATOR.now() + Number.parseInt(expiresIn, 10) * 1000;
51+
Date.now() + Number.parseInt(expiresInSec, 10) * 1000;
5652
}
5753

5854
async getToken(forceRefresh = false): Promise<Tokens> {
@@ -66,5 +62,8 @@ export class StsTokenManager {
6662
throw new Error('StsTokenManager: token refresh not implemented');
6763
}
6864

69-
// TODO: There are a few more methods in here that need implemented
65+
// TODO: There are a few more methods in here that need implemented:
66+
// # toPlainObject
67+
// # fromPlainObject
68+
// # (private) performRefresh
7069
}

yarn.lock

Lines changed: 42 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -10397,36 +10397,6 @@ [email protected]:
1039710397
yargs-parser "13.1.1"
1039810398
yargs-unparser "1.6.0"
1039910399

10400-
mocha@^7.1.1:
10401-
version "7.1.1"
10402-
resolved "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz#89fbb30d09429845b1bb893a830bf5771049a441"
10403-
integrity sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==
10404-
dependencies:
10405-
ansi-colors "3.2.3"
10406-
browser-stdout "1.3.1"
10407-
chokidar "3.3.0"
10408-
debug "3.2.6"
10409-
diff "3.5.0"
10410-
escape-string-regexp "1.0.5"
10411-
find-up "3.0.0"
10412-
glob "7.1.3"
10413-
growl "1.10.5"
10414-
he "1.2.0"
10415-
js-yaml "3.13.1"
10416-
log-symbols "3.0.0"
10417-
minimatch "3.0.4"
10418-
mkdirp "0.5.3"
10419-
ms "2.1.1"
10420-
node-environment-flags "1.0.6"
10421-
object.assign "4.1.0"
10422-
strip-json-comments "2.0.1"
10423-
supports-color "6.0.0"
10424-
which "1.3.1"
10425-
wide-align "1.1.3"
10426-
yargs "13.3.2"
10427-
yargs-parser "13.1.2"
10428-
yargs-unparser "1.6.0"
10429-
1043010400
modify-values@^1.0.0:
1043110401
version "1.0.1"
1043210402
resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
@@ -10722,6 +10692,22 @@ node-localstorage@^1.3.1:
1072210692
dependencies:
1072310693
write-file-atomic "^1.1.4"
1072410694

10695+
node-pre-gyp@*:
10696+
version "0.14.0"
10697+
resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
10698+
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
10699+
dependencies:
10700+
detect-libc "^1.0.2"
10701+
mkdirp "^0.5.1"
10702+
needle "^2.2.1"
10703+
nopt "^4.0.1"
10704+
npm-packlist "^1.1.6"
10705+
npmlog "^4.0.2"
10706+
rc "^1.2.7"
10707+
rimraf "^2.6.1"
10708+
semver "^5.3.0"
10709+
tar "^4.4.2"
10710+
1072510711
node-pre-gyp@^0.11.0:
1072610712
version "0.11.0"
1072710713
resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054"
@@ -13929,7 +13915,7 @@ [email protected]:
1392913915
safe-buffer "^5.1.2"
1393013916
yallist "^3.0.2"
1393113917

13932-
tar@^4, tar@^4.3.0, tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
13918+
tar@^4, tar@^4.3.0, tar@^4.4.10, tar@^4.4.12, tar@^4.4.2, tar@^4.4.8:
1393313919
version "4.4.13"
1393413920
resolved "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
1393513921
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
@@ -15497,21 +15483,21 @@ [email protected]:
1549715483
camelcase "^5.0.0"
1549815484
decamelize "^1.2.0"
1549915485

15500-
[email protected], yargs-parser@^13.1.0, yargs-parser@^13.1.1, yargs-parser@^13.1.2:
15501-
version "13.1.2"
15502-
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
15503-
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
15504-
dependencies:
15505-
camelcase "^5.0.0"
15506-
decamelize "^1.2.0"
15507-
1550815486
yargs-parser@^10.0.0:
1550915487
version "10.1.0"
1551015488
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
1551115489
integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==
1551215490
dependencies:
1551315491
camelcase "^4.1.0"
1551415492

15493+
yargs-parser@^13.1.0, yargs-parser@^13.1.1, yargs-parser@^13.1.2:
15494+
version "13.1.2"
15495+
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
15496+
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
15497+
dependencies:
15498+
camelcase "^5.0.0"
15499+
decamelize "^1.2.0"
15500+
1551515501
yargs-parser@^15.0.1:
1551615502
version "15.0.1"
1551715503
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3"
@@ -15577,22 +15563,6 @@ [email protected]:
1557715563
y18n "^4.0.0"
1557815564
yargs-parser "^13.1.1"
1557915565

15580-
[email protected], yargs@^13.3.0:
15581-
version "13.3.2"
15582-
resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
15583-
integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
15584-
dependencies:
15585-
cliui "^5.0.0"
15586-
find-up "^3.0.0"
15587-
get-caller-file "^2.0.1"
15588-
require-directory "^2.1.1"
15589-
require-main-filename "^2.0.0"
15590-
set-blocking "^2.0.0"
15591-
string-width "^3.0.0"
15592-
which-module "^2.0.0"
15593-
y18n "^4.0.0"
15594-
yargs-parser "^13.1.2"
15595-
1559615566
[email protected], yargs@^15.0.2:
1559715567
version "15.3.1"
1559815568
resolved "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b"
@@ -15610,6 +15580,22 @@ [email protected], yargs@^15.0.2:
1561015580
y18n "^4.0.0"
1561115581
yargs-parser "^18.1.1"
1561215582

15583+
yargs@^13.3.0:
15584+
version "13.3.2"
15585+
resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
15586+
integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
15587+
dependencies:
15588+
cliui "^5.0.0"
15589+
find-up "^3.0.0"
15590+
get-caller-file "^2.0.1"
15591+
require-directory "^2.1.1"
15592+
require-main-filename "^2.0.0"
15593+
set-blocking "^2.0.0"
15594+
string-width "^3.0.0"
15595+
which-module "^2.0.0"
15596+
y18n "^4.0.0"
15597+
yargs-parser "^13.1.2"
15598+
1561315599
yargs@^14.2.2:
1561415600
version "14.2.3"
1561515601
resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414"
@@ -15682,4 +15668,4 @@ zip-stream@^2.1.2:
1568215668
dependencies:
1568315669
archiver-utils "^2.1.0"
1568415670
compress-commons "^2.1.1"
15685-
readable-stream "^3.4.0"
15671+
readable-stream "^3.4.0"

0 commit comments

Comments
 (0)