diff --git a/test/api/v3/unit/middlewares/cronMiddleware.js b/test/api/v3/unit/middlewares/cronMiddleware.js index f973bfe36d..e18301b91b 100644 --- a/test/api/v3/unit/middlewares/cronMiddleware.js +++ b/test/api/v3/unit/middlewares/cronMiddleware.js @@ -166,8 +166,11 @@ describe('cron middleware', () => { await new Promise((resolve, reject) => { cronMiddleware(req, res, (err) => { if (err) return reject(err); - expect(user.stats.hp).to.be.lessThan(hpBefore); - resolve(); + User.findOne({_id: user._id}, function (secondErr, updatedUser) { + if (secondErr) return reject(secondErr); + expect(updatedUser.stats.hp).to.be.lessThan(hpBefore); + resolve(); + }); }); }); }); @@ -217,8 +220,11 @@ describe('cron middleware', () => { await new Promise((resolve, reject) => { cronMiddleware(req, res, (err) => { if (err) return reject(err); - expect(user.stats.hp).to.be.lessThan(hpBefore); - resolve(); + User.findOne({_id: user._id}, function (secondErr, updatedUser) { + if (secondErr) return reject(secondErr); + expect(updatedUser.stats.hp).to.be.lessThan(hpBefore); + resolve(); + }); }); }); }); diff --git a/website/server/middlewares/cron.js b/website/server/middlewares/cron.js index 750cf1ab8c..15a66b02bf 100644 --- a/website/server/middlewares/cron.js +++ b/website/server/middlewares/cron.js @@ -23,7 +23,6 @@ async function checkForActiveCron (user, now) { }, { $set: { _cronSignature, - lastCron: now, // setting lastCron now so we don't risk re-running parts of cron if it fails 'auth.timestamps.loggedin': now, }, }).exec(); @@ -35,6 +34,14 @@ async function checkForActiveCron (user, now) { } } +async function updateLastCron (user, now) { + await User.update({ + _id: user._id, + }, { + lastCron: now, // setting lastCron now so we don't risk re-running parts of cron if it fails + }).exec(); +} + async function unlockUser (user) { await User.update({ _id: user._id, @@ -51,9 +58,12 @@ async function cronAsync (req, res) { let now = new Date(); try { + await checkForActiveCron(user, now); + + user = res.locals.user = await User.findOne({_id: user._id}).exec(); let {daysMissed, timezoneOffsetFromUserPrefs} = user.daysUserHasMissed(now, req); - await checkForActiveCron(user, now); + await updateLastCron(user, now); if (daysMissed <= 0) { if (user.isModified()) await user.save();