diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bot/cogs/test_antimalware.py | 32 | 
1 files changed, 28 insertions, 4 deletions
| diff --git a/tests/bot/cogs/test_antimalware.py b/tests/bot/cogs/test_antimalware.py index 67c640d23..b4e31b5ce 100644 --- a/tests/bot/cogs/test_antimalware.py +++ b/tests/bot/cogs/test_antimalware.py @@ -1,14 +1,17 @@  import asyncio  import logging  import unittest +from os.path import splitext  from unittest.mock import AsyncMock, Mock  from discord import NotFound  from bot.cogs import antimalware -from bot.constants import Roles, URLs +from bot.constants import AntiMalware as AntiMalwareConfig, Roles, URLs  from tests.helpers import MockAttachment, MockBot, MockMessage, MockRole +MODULE = "bot.cogs.antimalware" +  class AntiMalwareCogTests(unittest.TestCase):      """Test the AntiMalware cog.""" @@ -78,17 +81,38 @@ class AntiMalwareCogTests(unittest.TestCase):      def test_removing_deleted_message_logs(self):          """Removing an already deleted message logs the correct message""" -        attachment = MockAttachment(filename="python.py") +        attachment = MockAttachment(filename="python.asdfsff")          self.message.attachments = [attachment]          self.message.delete = AsyncMock(side_effect=NotFound(response=Mock(status=""), message=""))          coroutine = self.cog.on_message(self.message) -        logger = logging.getLogger("bot.cogs.antimalware") +        logger = logging.getLogger(MODULE)          with self.assertLogs(logger=logger, level="INFO") as logs:              asyncio.run(coroutine)          self.assertIn( -            f"INFO:bot.cogs.antimalware:Tried to delete message `{self.message.id}`, but message could not be found.", +            f"INFO:{MODULE}:Tried to delete message `{self.message.id}`, but message could not be found.", +            logs.output) + +    def test_message_with_illegal_attachment_logs(self): +        """Deleting a message with an illegal attachment should result in a log.""" +        attachment = MockAttachment(filename="python.asdfsff") +        self.message.attachments = [attachment] + +        coroutine = self.cog.on_message(self.message) +        file_extensions = {splitext(attachment.filename.lower())[1] for attachment in self.message.attachments} +        extensions_blocked = file_extensions - set(AntiMalwareConfig.whitelist) +        blocked_extensions_str = ', '.join(extensions_blocked) +        logger = logging.getLogger(MODULE) + +        with self.assertLogs(logger=logger, level="INFO") as logs: +            asyncio.run(coroutine) +        self.assertEqual( +            [ +                f"INFO:{MODULE}:" +                f"User '{self.message.author}' ({self.message.author.id}) " +                f"uploaded blacklisted file(s): {blocked_extensions_str}" +            ],              logs.output) | 
