diff --git a/test/api/v3/unit/libs/slack.js b/test/api/v3/unit/libs/slack.js index b3d579349a..b133380384 100644 --- a/test/api/v3/unit/libs/slack.js +++ b/test/api/v3/unit/libs/slack.js @@ -1,7 +1,10 @@ /* eslint-disable camelcase */ import { IncomingWebhook } from '@slack/client'; +import requireAgain from 'require-again'; import slack from '../../../../../website/server/libs/slack'; +import logger from '../../../../../website/server/libs/logger'; import { TAVERN_ID } from '../../../../../website/server/models/group'; +import nconf from 'nconf'; describe('slack', () => { describe('sendFlagNotification', () => { @@ -93,5 +96,21 @@ describe('slack', () => { })], }); }); + + it('noops if no flagging url is provided', () => { + sandbox.stub(nconf, 'get').withArgs('SLACK:FLAGGING_URL').returns(''); + sandbox.stub(logger, 'error'); + let reRequiredSlack = requireAgain('../../../../../website/server/libs/slack'); + + expect(logger.error).to.be.calledOnce; + + reRequiredSlack.sendFlagNotification({ + flagger, + group, + message, + }); + + expect(IncomingWebhook.prototype.send).to.not.be.called; + }); }); }); diff --git a/website/server/libs/slack.js b/website/server/libs/slack.js index e67ab26030..2c309ae430 100644 --- a/website/server/libs/slack.js +++ b/website/server/libs/slack.js @@ -1,5 +1,6 @@ /* eslint-disable camelcase */ import { IncomingWebhook } from '@slack/client'; +import logger from './logger'; import { TAVERN_ID } from '../models/group'; import nconf from 'nconf'; @@ -7,13 +8,22 @@ const SLACK_FLAGGING_URL = nconf.get('SLACK:FLAGGING_URL'); const SLACK_FLAGGING_FOOTER_LINK = nconf.get('SLACK:FLAGGING_FOOTER_LINK'); const BASE_URL = nconf.get('BASE_URL'); -let flagSlack = new IncomingWebhook(SLACK_FLAGGING_URL); +let flagSlack; + +try { + flagSlack = new IncomingWebhook(SLACK_FLAGGING_URL); +} catch (err) { + logger.error(err); +} function sendFlagNotification ({ flagger, group, message, }) { + if (!SLACK_FLAGGING_URL) { + return; + } let titleLink; let title = `Flag in ${group.name}`; let text = `${flagger.profile.name} (${flagger.id}) flagged a message`;