aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGravatar Jannes Jonkers <[email protected]>2020-05-07 20:41:31 +0200
committerGravatar Jannes Jonkers <[email protected]>2020-05-07 20:41:31 +0200
commit3090141f673279f2836cb3aca95397eb9950ad0f (patch)
tree6539561180aca7f9f37a84d73d0996adad305ab6 /tests
parentAntiMalware Tests - Added unittest for cog setup (diff)
AntiMalware Tests - Added unittest message deletion log
Diffstat (limited to 'tests')
-rw-r--r--tests/bot/cogs/test_antimalware.py32
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)