diff --git a/src/auth/user-record.ts b/src/auth/user-record.ts index 9e33c19a8c..7d0ebef81b 100644 --- a/src/auth/user-record.ts +++ b/src/auth/user-record.ts @@ -326,7 +326,8 @@ export class UserMetadata { // These bugs have already been addressed since then. utils.addReadonlyGetter(this, 'creationTime', parseDate(response.createdAt)); utils.addReadonlyGetter(this, 'lastSignInTime', parseDate(response.lastLoginAt)); - utils.addReadonlyGetter(this, 'lastRefreshTime', parseDate(response.lastRefreshAt)); + const lastRefreshAt = response.lastRefreshAt ? new Date(response.lastRefreshAt).toUTCString() : null; + utils.addReadonlyGetter(this, 'lastRefreshTime', lastRefreshAt); } /** @return The plain object representation of the user's metadata. */ diff --git a/test/integration/auth.spec.ts b/test/integration/auth.spec.ts index c48215c295..b2d3c7ebdf 100755 --- a/test/integration/auth.spec.ts +++ b/test/integration/auth.spec.ts @@ -336,6 +336,10 @@ describe('admin.auth', () => { .then((userRecord) => { expect(userRecord.metadata.lastRefreshTime).to.exist; expect(isUTCString(userRecord.metadata.lastRefreshTime!)); + const creationTime = new Date(userRecord.metadata.creationTime).getTime(); + const lastRefreshTime = new Date(userRecord.metadata.lastRefreshTime!).getTime(); + expect(creationTime).lte(lastRefreshTime); + expect(lastRefreshTime).lte(creationTime + 3600 * 1000); }); } finally { admin.auth().deleteUser('lastRefreshTimeUser'); diff --git a/test/unit/auth/user-record.spec.ts b/test/unit/auth/user-record.spec.ts index fce2041ec6..af1ae9773b 100644 --- a/test/unit/auth/user-record.spec.ts +++ b/test/unit/auth/user-record.spec.ts @@ -616,10 +616,12 @@ describe('UserInfo', () => { describe('UserMetadata', () => { const expectedLastLoginAt = 1476235905000; const expectedCreatedAt = 1476136676000; + const expectedLastRefreshAt = '2016-10-12T01:31:45.000Z'; const actualMetadata: UserMetadata = new UserMetadata({ localId: 'uid123', lastLoginAt: expectedLastLoginAt.toString(), createdAt: expectedCreatedAt.toString(), + lastRefreshAt: expectedLastRefreshAt, }); const expectedMetadataJSON = { lastSignInTime: new Date(expectedLastLoginAt).toUTCString(), @@ -676,6 +678,10 @@ describe('UserMetadata', () => { (actualMetadata as any).creationTime = new Date(); }).to.throw(Error); }); + + it('should return expected lastRefreshTime', () => { + expect(actualMetadata.lastRefreshTime).to.equal(new Date(expectedLastRefreshAt).toUTCString()) + }); }); describe('toJSON', () => {