fix: email ban tests

isekai-main
Julian Lam 3 years ago
parent e25c0313d1
commit dee9cca3c8

@ -230,7 +230,7 @@ Emailer.send = async (template, uid, params) => {
if (!meta.config.sendEmailToBanned && template !== 'banned') { if (!meta.config.sendEmailToBanned && template !== 'banned') {
if (userData.banned) { if (userData.banned) {
winston.warn(`[emailer/send] User ${userData.username} (uid: ${uid}) is banned; not sending email due to system config.`); winston.warn(`[emailer/send] User ${userData.username} (uid: ${uid}) is banned; not sending email due to system config.`);
return false; return;
} }
} }

@ -144,39 +144,52 @@ describe('emailer', () => {
}); });
describe('emailer.send()', () => { describe('emailer.send()', () => {
let senderUid;
let recipientUid; let recipientUid;
before(async () => { before(async () => {
Plugins.hooks.register('emailer-test', {
hook: 'filter:email.send',
method: async () => {}, // noop
});
senderUid = await user.create({ username: 'sender' });
recipientUid = await user.create({ username: 'recipient', email: 'test@example.org' }); recipientUid = await user.create({ username: 'recipient', email: 'test@example.org' });
await user.email.confirmByUid(recipientUid); await user.email.confirmByUid(recipientUid);
}); });
it('should return false on attempted email send to a banned user', async () => { it('should not send email to a banned user', async () => {
Plugins.hooks.register('emailer-test', {
hook: 'filter:email.send',
method: async () => {
assert(false); // if thrown, email was sent
},
});
await user.bans.ban(recipientUid); await user.bans.ban(recipientUid);
const success = await Emailer.send('test', recipientUid, {}); await Emailer.send('test', recipientUid, {});
assert.strictEqual(success, false);
Plugins.hooks.unregister('emailer-test', 'filter:email.send');
}); });
it('should return true if the template is "banned"', async () => { it('should return true if the template is "banned"', async () => {
const success = await Emailer.send('banned', recipientUid, {}); Plugins.hooks.register('emailer-test', {
assert.strictEqual(success, true); hook: 'filter:email.send',
method: async () => {
assert(true); // if thrown, email was sent
},
});
await Emailer.send('banned', recipientUid, {});
Plugins.hooks.unregister('emailer-test', 'filter:email.send');
}); });
it('should return true if system settings allow sending to banned users', async () => { it('should return true if system settings allow sending to banned users', async () => {
Plugins.hooks.register('emailer-test', {
hook: 'filter:email.send',
method: async () => {
assert(true); // if thrown, email was sent
},
});
meta.config.sendEmailToBanned = 1; meta.config.sendEmailToBanned = 1;
const success = await Emailer.send('test', recipientUid, {}); await Emailer.send('test', recipientUid, {});
assert.strictEqual(success, true);
meta.config.sendEmailToBanned = 0; meta.config.sendEmailToBanned = 0;
}); await user.bans.unban(recipientUid);
after(() => {
Plugins.hooks.unregister('emailer-test', 'filter:email.send'); Plugins.hooks.unregister('emailer-test', 'filter:email.send');
}); });
}); });

Loading…
Cancel
Save