#7817 was intended to allow separate timeouts for enrollment tokens and password reset tokens, so enrollment tokens could last for (by default) 30 days, whereas password reset tokens could be made to expire more quickly (default 3 days).

That pull request appears to have a bug which causes enrollment tokens to be cleaned up under the reset token expiry rules. The net effect is that under the default settings, enrollment tokens are destroyed after 3 days, rather than after 30 days. Regardless of what a developer sets passwordEnrollTokenExpirationInDays to in Accounts.config(), enrollment tokens will be removed from mongo after passwordResetTokenExpirationInDays days.

Observed in Meteor 1.4.2.3 (accounts-base@1.2.14), but the bug I've identified is still in master as of this writing.

Reproduction:

Enroll a new user with Accounts.sendEnrollmentEmail()

Wait N days, with N between 3 and 30, or frob that user's enrollment token's when sufficiently far into the past to be between passwordResetTokenExpirationInDays and passwordEnrollTokenExpirationInDays, e.g. in meteor mongo shell run (with your new userId):