From 4b6ae32e263bfafa8e69d20d1b21f50acb330642 Mon Sep 17 00:00:00 2001 From: Gabriel Grubba Date: Tue, 20 Dec 2022 15:48:33 -0300 Subject: [PATCH] tests: login token observes get cleaned up --- packages/accounts-password/password_tests.js | 72 +++++++++++--------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/packages/accounts-password/password_tests.js b/packages/accounts-password/password_tests.js index f9ca34d670..fee11f847e 100644 --- a/packages/accounts-password/password_tests.js +++ b/packages/accounts-password/password_tests.js @@ -12,7 +12,12 @@ const makeTestConnAsync = const simplePollAsync = (testFn) => new Promise((resolve, reject) => - simplePoll(testFn, () => resolve(true), reject)) + simplePoll(testFn, + () => { + resolve(true) + }, () => { + reject(false) + })) function hashPassword(password) { @@ -1215,42 +1220,45 @@ if (Meteor.isServer) (() => { //TODO[FIBERS] Continue later Tinytest.addAsync( 'passwords - login token observes get cleaned up', - async (test) => { + (test, onComplete) => { const username = Random.id(); - await Accounts.createUser({ + Accounts.createUser({ username: username, password: hashPassword('password') - }); - - const { clientConn, serverConn } = await makeTestConnAsync(test); - serverConn.onClose(() => { - test.isFalse(Accounts._getUserObserve(serverConn.id)); }) + .then(userId => makeTestConnAsync(test)) + .then(async ({ clientConn, serverConn }) => { + serverConn.onClose(() => { + test.isFalse(Accounts._getUserObserve(serverConn.id)); + onComplete(); + }) + const result = await clientConn.callAsync('login', { + user: { username: username }, + password: hashPassword('password') + }); - const result = await clientConn.callAsync('login', { - user: { username: username }, - password: hashPassword('password') - }); - - test.isTrue(result); - const token = Accounts._getAccountData(serverConn.id, 'loginToken'); - test.isTrue(token) - - // We poll here, instead of just checking `_getUserObserve` - // once, because the login method defers the creation of the - // observe, and setting up the observe yields, so we could end - // up here before the observe has been set up. - try { - const t = await simplePollAsync(() => !!Accounts._getUserObserve(serverConn.id)); - test.isTrue(t) - test.isTrue(Accounts._getUserObserve(serverConn.id)); - clientConn.disconnect(); - } catch (e) { - test.fail( - `timed out waiting for user observe for connection ${ serverConn.id }` - ); - } - + test.isTrue(result); + const token = Accounts._getAccountData(serverConn.id, 'loginToken'); + test.isTrue(token) + // We poll here, instead of just checking `_getUserObserve` + // once, because the login method defers the creation of the + // observe, and setting up the observe yields, so we could end + // up here before the observe has been set up. + simplePoll( + () => !!Accounts._getUserObserve(serverConn.id), + () => { + test.isTrue(Accounts._getUserObserve(serverConn.id)); + clientConn.disconnect() + onComplete(); + }, + () => { + test.fail( + `timed out waiting for user observe for connection ${ serverConn.id }` + ); + onComplete(); + } + ) + }) } );