Skip to content

Commit af65c5a

Browse files
Changes Auth integration tests for session cookies to use multiple UIDs (#288)
* Changes Auth integration tests for session cookies to use multiple UIDs to minimize the risk of flakiness in integration tests. * Fixes comment.
1 parent 40df8cb commit af65c5a

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

test/integration/auth.spec.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ const expect = chai.expect;
3232

3333
const newUserUid = generateRandomString(20);
3434
const nonexistentUid = generateRandomString(20);
35-
const sessionCookieUid = generateRandomString(20);
35+
const sessionCookieUids = [
36+
generateRandomString(20),
37+
generateRandomString(20),
38+
generateRandomString(20),
39+
];
3640
const testPhoneNumber = '+11234567890';
3741
const testPhoneNumber2 = '+16505550101';
3842
const nonexistentPhoneNumber = '+18888888888';
@@ -329,7 +333,9 @@ describe('admin.auth', () => {
329333
const expiresIn = 24 * 60 * 60 * 1000;
330334
let payloadClaims: any;
331335
let currentIdToken: string;
332-
const uid = sessionCookieUid;
336+
const uid = sessionCookieUids[0];
337+
const uid2 = sessionCookieUids[1];
338+
const uid3 = sessionCookieUids[2];
333339

334340
it('creates a valid Firebase session cookie', () => {
335341
return admin.auth().createCustomToken(uid, {admin: true, groupId: '1234'})
@@ -365,7 +371,7 @@ describe('admin.auth', () => {
365371

366372
it('creates a revocable session cookie', () => {
367373
let currentSessionCookie: string;
368-
return admin.auth().createCustomToken(uid)
374+
return admin.auth().createCustomToken(uid2)
369375
.then((customToken) => firebase.auth().signInWithCustomToken(customToken))
370376
.then(({user}) => user.getIdToken())
371377
.then((idToken) => {
@@ -375,7 +381,7 @@ describe('admin.auth', () => {
375381
.then((sessionCookie) => {
376382
currentSessionCookie = sessionCookie;
377383
return new Promise((resolve) => setTimeout(() => resolve(
378-
admin.auth().revokeRefreshTokens(uid),
384+
admin.auth().revokeRefreshTokens(uid2),
379385
), 1000));
380386
})
381387
.then(() => {
@@ -389,13 +395,13 @@ describe('admin.auth', () => {
389395
});
390396

391397
it('fails when called with a revoked ID token', () => {
392-
return admin.auth().createCustomToken(uid, {admin: true, groupId: '1234'})
398+
return admin.auth().createCustomToken(uid3, {admin: true, groupId: '1234'})
393399
.then((customToken) => firebase.auth().signInWithCustomToken(customToken))
394400
.then(({user}) => user.getIdToken())
395401
.then((idToken) => {
396402
currentIdToken = idToken;
397403
return new Promise((resolve) => setTimeout(() => resolve(
398-
admin.auth().revokeRefreshTokens(uid),
404+
admin.auth().revokeRefreshTokens(uid3),
399405
), 1000));
400406
})
401407
.then(() => {
@@ -407,7 +413,7 @@ describe('admin.auth', () => {
407413
});
408414

409415
describe('verifySessionCookie()', () => {
410-
const uid = sessionCookieUid;
416+
const uid = sessionCookieUids[0];
411417
it('fails when called with an invalid session cookie', () => {
412418
return admin.auth().verifySessionCookie('invalid-token')
413419
.should.eventually.be.rejected.and.have.property('code', 'auth/argument-error');
@@ -727,8 +733,8 @@ function cleanup() {
727733
deletePhoneNumberUser(nonexistentPhoneNumber),
728734
deletePhoneNumberUser(updatedPhone),
729735
];
730-
// Delete user created for session cookie tests.
731-
uids.push(sessionCookieUid);
736+
// Delete users created for session cookie tests.
737+
sessionCookieUids.forEach((uid) => uids.push(uid));
732738
// Delete list of users for testing listUsers.
733739
uids.forEach((uid) => {
734740
// Use safeDelete to avoid getting throttled.

0 commit comments

Comments
 (0)