From dee9cca3c8219b972368b413d775806eea43f636 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 28 Jan 2022 15:41:22 -0500 Subject: [PATCH] fix: email ban tests --- src/emailer.js | 2 +- test/emailer.js | 45 +++++++++++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/emailer.js b/src/emailer.js index 36cab7d692..929e737017 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -230,7 +230,7 @@ Emailer.send = async (template, uid, params) => { if (!meta.config.sendEmailToBanned && template !== 'banned') { if (userData.banned) { winston.warn(`[emailer/send] User ${userData.username} (uid: ${uid}) is banned; not sending email due to system config.`); - return false; + return; } } diff --git a/test/emailer.js b/test/emailer.js index d39f6068f6..b5b819746f 100644 --- a/test/emailer.js +++ b/test/emailer.js @@ -144,39 +144,52 @@ describe('emailer', () => { }); describe('emailer.send()', () => { - let senderUid; let recipientUid; 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' }); 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); - const success = await Emailer.send('test', recipientUid, {}); - assert.strictEqual(success, false); + await Emailer.send('test', recipientUid, {}); + + Plugins.hooks.unregister('emailer-test', 'filter:email.send'); }); it('should return true if the template is "banned"', async () => { - const success = await Emailer.send('banned', recipientUid, {}); - assert.strictEqual(success, true); + Plugins.hooks.register('emailer-test', { + 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 () => { + Plugins.hooks.register('emailer-test', { + hook: 'filter:email.send', + method: async () => { + assert(true); // if thrown, email was sent + }, + }); + meta.config.sendEmailToBanned = 1; - const success = await Emailer.send('test', recipientUid, {}); - assert.strictEqual(success, true); + await Emailer.send('test', recipientUid, {}); meta.config.sendEmailToBanned = 0; - }); + await user.bans.unban(recipientUid); - after(() => { Plugins.hooks.unregister('emailer-test', 'filter:email.send'); }); });