Esempio n. 1
0
    async def test_take_action(self, format_log_message, logger,
                               mod_log_property):
        """Should delete the message and send a mod log."""
        cog = TokenRemover(self.bot)
        mod_log = mock.create_autospec(ModLog, spec_set=True, instance=True)
        token = mock.create_autospec(Token, spec_set=True, instance=True)
        log_msg = "testing123"

        mod_log_property.return_value = mod_log
        format_log_message.return_value = log_msg

        await cog.take_action(self.msg, token)

        self.msg.delete.assert_called_once_with()
        self.msg.channel.send.assert_called_once_with(
            token_remover.DELETION_MESSAGE_TEMPLATE.format(
                mention=self.msg.author.mention))

        format_log_message.assert_called_once_with(self.msg, token)
        logger.debug.assert_called_with(log_msg)
        self.bot.stats.incr.assert_called_once_with("tokens.removed_tokens")

        mod_log.ignore.assert_called_once_with(constants.Event.message_delete,
                                               self.msg.id)
        mod_log.send_log_message.assert_called_once_with(
            icon_url=constants.Icons.token_removed,
            colour=Colour(constants.Colours.soft_red),
            title="Token removed!",
            text=log_msg,
            thumbnail=self.msg.author.avatar_url_as.return_value,
            channel_id=constants.Channels.mod_alerts)
Esempio n. 2
0
    async def test_on_message_ignores_dms_bots(self, find_token_in_message):
        """Shouldn't parse a message if it is a DM or authored by a bot."""
        cog = TokenRemover(self.bot)
        dm_msg = MockMessage(guild=None)
        bot_msg = MockMessage(author=MagicMock(bot=True))

        for msg in (dm_msg, bot_msg):
            await cog.on_message(msg)
            find_token_in_message.assert_not_called()
Esempio n. 3
0
    def setUp(self):
        """Adds the cog, a bot, and a message to the instance for usage in tests."""
        self.bot = MockBot()
        self.cog = TokenRemover(bot=self.bot)

        self.msg = MockMessage(id=555, content="hello world")
        self.msg.channel.mention = "#lemonade-stand"
        self.msg.author.__str__ = MagicMock(return_value=self.msg.author.name)
        self.msg.author.avatar_url_as.return_value = "picture-lemon.png"
Esempio n. 4
0
    async def test_on_message_skips_missing_token(self, find_token_in_message,
                                                  take_action):
        """Shouldn't take action if a valid token isn't found when a message is sent."""
        cog = TokenRemover(self.bot)
        find_token_in_message.return_value = False

        await cog.on_message(self.msg)

        find_token_in_message.assert_called_once_with(self.msg)
        take_action.assert_not_awaited()
Esempio n. 5
0
    async def test_on_message_takes_action(self, find_token_in_message,
                                           take_action):
        """Should take action if a valid token is found when a message is sent."""
        cog = TokenRemover(self.bot)
        found_token = "foobar"
        find_token_in_message.return_value = found_token

        await cog.on_message(self.msg)

        find_token_in_message.assert_called_once_with(self.msg)
        take_action.assert_awaited_once_with(cog, self.msg, found_token)
Esempio n. 6
0
    async def test_take_action_delete_failure(self, mod_log_property):
        """Shouldn't send any messages if the token message can't be deleted."""
        cog = TokenRemover(self.bot)
        mod_log_property.return_value = mock.create_autospec(ModLog,
                                                             spec_set=True,
                                                             instance=True)
        self.msg.delete.side_effect = NotFound(MagicMock(), MagicMock())

        token = mock.create_autospec(Token, spec_set=True, instance=True)
        await cog.take_action(self.msg, token)

        self.msg.delete.assert_called_once_with()
        self.msg.channel.send.assert_not_awaited()
Esempio n. 7
0
    def setUp(self):
        """Adds the cog, a bot, and a message to the instance for usage in tests."""
        self.bot = MockBot()
        self.bot.get_cog.return_value = MagicMock()
        self.bot.get_cog.return_value.send_log_message = AsyncMock()
        self.cog = TokenRemover(bot=self.bot)

        self.msg = MockMessage(id=555, content='')
        self.msg.author.__str__ = MagicMock()
        self.msg.author.__str__.return_value = 'lemon'
        self.msg.author.bot = False
        self.msg.author.avatar_url_as.return_value = 'picture-lemon.png'
        self.msg.author.id = 42
        self.msg.author.mention = '@lemon'
        self.msg.channel.mention = "#lemonade-stand"
Esempio n. 8
0
def token_remover():
    bot = MagicMock()
    bot.get_cog.return_value = MagicMock()
    bot.get_cog.return_value.send_log_message = AsyncMock()
    return TokenRemover(bot=bot)