Skip to content

Commit 2455c7c

Browse files
committed
Tighten expire checks to differentiate between 0 and unset, rename function for readability
1 parent 451080b commit 2455c7c

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/Service.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -631,18 +631,18 @@ Service_.prototype.parseToken_ = function(content) {
631631
} else {
632632
throw new Error('Unknown token format: ' + this.tokenFormat_);
633633
}
634-
this.setExpiresAt_(token);
634+
this.ensureExpiresAtSet_(token);
635635
return token;
636636
};
637637

638638
/**
639-
* Adds expiresAt annotations on the token.
639+
* Adds expiresAt annotations on the token if not set.
640640
* @param {string} token A token.
641641
* @private
642642
*/
643-
Service_.prototype.setExpiresAt_ = function(token) {
643+
Service_.prototype.ensureExpiresAtSet_ = function(token) {
644644
// handle prior migrations
645-
if (token.expiresAt) {
645+
if (token.expiresAt !== undefined) {
646646
return;
647647
}
648648

@@ -686,8 +686,9 @@ Service_.prototype.refresh = function() {
686686
if (!newToken.refresh_token) {
687687
newToken.refresh_token = token.refresh_token;
688688
}
689-
this.setExpiresAt_(token);
690-
if (token.refreshTokenExpiresAt) {
689+
this.ensureExpiresAtSet_(token);
690+
// Propagate refresh token expiry if new token omits it
691+
if (newToken.refreshTokenExpiresAt === undefined) {
691692
newToken.refreshTokenExpiresAt = token.refreshTokenExpiresAt;
692693
}
693694
this.saveToken_(newToken);
@@ -776,8 +777,8 @@ Service_.prototype.isExpired_ = function(token) {
776777
*/
777778
Service_.prototype.canRefresh_ = function(token) {
778779
if (!token.refresh_token) return false;
779-
this.setExpiresAt_(token);
780-
if (!token.refreshTokenExpiresAt) {
780+
this.ensureExpiresAtSet_(token);
781+
if (token.refreshTokenExpiresAt === undefined) {
781782
return true;
782783
} else {
783784
var now = getTimeInSeconds_(new Date());

test/test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ describe('Service', () => {
575575
});
576576
});
577577

578-
describe('#setExpiresAt_()', () => {
578+
describe('#ensureExpiresAtSet_()', () => {
579579
const NOW_SECONDS = OAuth2.getTimeInSeconds_(new Date());
580580
var service = OAuth2.createService('test')
581581
.setPropertyStore(new MockProperties())
@@ -586,7 +586,7 @@ describe('Service', () => {
586586
granted_time: NOW_SECONDS,
587587
expires_in_sec: 100
588588
};
589-
service.setExpiresAt_(token);
589+
service.ensureExpiresAtSet_(token);
590590
assert.include(token, {
591591
expiresAt: NOW_SECONDS + 100
592592
});
@@ -597,7 +597,7 @@ describe('Service', () => {
597597
granted_time: NOW_SECONDS,
598598
refresh_token_expires_in: 200
599599
};
600-
service.setExpiresAt_(token);
600+
service.ensureExpiresAtSet_(token);
601601
assert.include(token, {
602602
refreshTokenExpiresAt: NOW_SECONDS + 200
603603
});

0 commit comments

Comments
 (0)