diff --git a/packages/accounts-base/accounts_server.js b/packages/accounts-base/accounts_server.js index f694b3a2bb..abeebd651a 100644 --- a/packages/accounts-base/accounts_server.js +++ b/packages/accounts-base/accounts_server.js @@ -1140,7 +1140,7 @@ Ap._expirePasswordResetTokens = function (oldestValidDate, userId) { { "services.password.reset.when": { $lt: +oldestValidDate } } ] }), { - $pull: { + $unset: { "services.password.reset": { $or: [ { when: { $lt: oldestValidDate } }, diff --git a/packages/accounts-password/password_tests.js b/packages/accounts-password/password_tests.js index fcabdfe8d3..61c78060e4 100644 --- a/packages/accounts-password/password_tests.js +++ b/packages/accounts-password/password_tests.js @@ -1468,6 +1468,20 @@ if (Meteor.isServer) (function () { }, /Incorrect password/); }); + Tinytest.add( + 'passwords - reset tokens get cleaned up', + function (test) { + var email = test.id + '-intercept@example.com'; + var userId = Accounts.createUser({email: email, password: 'password'}); + Accounts.sendResetPasswordEmail(userId, email); + test.isTrue(!!Meteor.users.findOne(userId).services.password.reset); + + Accounts._expirePasswordResetTokens(new Date(), userId); + + test.isUndefined(Meteor.users.findOne(userId).services.password.reset); + } + ) + // We should be able to change the username Tinytest.add("passwords - change username", function (test) { var username = Random.id();