aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar dementati <[email protected]>2021-11-05 15:00:59 +0100
committerGravatar GitHub <[email protected]>2021-11-05 15:00:59 +0100
commit043cc65e513838fd444ea65b4e58e4b317bf1aaf (patch)
treec979f9f2636f484a300ff9f205ea039ff3437b42
parentUnpin all messages when help channel goes dormant (diff)
parentMerge pull request from GHSA-j8c3-8x46-8pp6 (diff)
Merge branch 'main' into feature/1903/fix-pin-inconsistency
-rw-r--r--bot/exts/filters/filtering.py4
-rw-r--r--tests/bot/exts/filters/test_filtering.py40
2 files changed, 40 insertions, 4 deletions
diff --git a/bot/exts/filters/filtering.py b/bot/exts/filters/filtering.py
index 022b4ab02..f05b1d00b 100644
--- a/bot/exts/filters/filtering.py
+++ b/bot/exts/filters/filtering.py
@@ -496,10 +496,6 @@ class Filtering(Cog):
text = self.clean_input(text)
- # Make sure it's not a URL
- if URL_RE.search(text):
- return False, None
-
watchlist_patterns = self._get_filterlist_items('filter_token', allowed=False)
for pattern in watchlist_patterns:
match = re.search(pattern, text, flags=re.IGNORECASE)
diff --git a/tests/bot/exts/filters/test_filtering.py b/tests/bot/exts/filters/test_filtering.py
new file mode 100644
index 000000000..8ae59c1f1
--- /dev/null
+++ b/tests/bot/exts/filters/test_filtering.py
@@ -0,0 +1,40 @@
+import unittest
+from unittest.mock import patch
+
+from bot.exts.filters import filtering
+from tests.helpers import MockBot, autospec
+
+
+class FilteringCogTests(unittest.IsolatedAsyncioTestCase):
+ """Tests the `Filtering` cog."""
+
+ def setUp(self):
+ """Instantiate the bot and cog."""
+ self.bot = MockBot()
+ with patch("bot.utils.scheduling.create_task", new=lambda task, **_: task.close()):
+ self.cog = filtering.Filtering(self.bot)
+
+ @autospec(filtering.Filtering, "_get_filterlist_items", pass_mocks=False, return_value=["TOKEN"])
+ async def test_token_filter(self):
+ """Ensure that a filter token is correctly detected in a message."""
+ messages = {
+ "": False,
+ "no matches": False,
+ "TOKEN": True,
+
+ # See advisory https://github.com/python-discord/bot/security/advisories/GHSA-j8c3-8x46-8pp6
+ "https://google.com TOKEN": True,
+ "https://google.com something else": False,
+ }
+
+ for message, match in messages.items():
+ with self.subTest(input=message, match=match):
+ result, _ = await self.cog._has_watch_regex_match(message)
+
+ self.assertEqual(
+ match,
+ bool(result),
+ msg=f"Hit was {'expected' if match else 'not expected'} for this input."
+ )
+ if result:
+ self.assertEqual("TOKEN", result.group())