From da9567b612f0838e67338323522ba9f3e6b68ec8 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sat, 27 Feb 2021 09:05:37 +0100 Subject: [PATCH] Add BanMode tests. --- .../server_tests/test_channel_operations.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/irctest/server_tests/test_channel_operations.py b/irctest/server_tests/test_channel_operations.py index d260864..9985b6b 100644 --- a/irctest/server_tests/test_channel_operations.py +++ b/irctest/server_tests/test_channel_operations.py @@ -7,6 +7,7 @@ from irctest import cases, client_mock, runner from irctest.irc_utils import ambiguities from irctest.numerics import ( ERR_BADCHANNELKEY, + ERR_BANNEDFROMCHAN, ERR_CANNOTSENDTOCHAN, ERR_CHANOPRIVSNEEDED, ERR_INVALIDMODEPARAM, @@ -1038,6 +1039,49 @@ class TopicPrivileges(cases.BaseServerTestCase): ) +class BanMode(cases.BaseServerTestCase): + @cases.mark_specifications("RFC1459", "RFC2812") + def testBan(self): + """Basic ban operation""" + self.connectClient("chanop", name="chanop") + self.joinChannel("chanop", "#chan") + self.getMessages("chanop") + self.sendLine("chanop", "MODE #chan +b bar!*@*") + self.assertMessageEqual(self.getMessage("chanop"), command="MODE") + + self.connectClient("Bar", name="bar", capabilities=["echo-message"]) + self.getMessages("bar") + self.sendLine("bar", "JOIN #chan") + self.assertMessageEqual(self.getMessage("bar"), command=ERR_BANNEDFROMCHAN) + + self.sendLine("chanop", "MODE #chan -b bar!*@*") + self.assertMessageEqual(self.getMessage("chanop"), command="MODE") + + self.sendLine("bar", "JOIN #chan") + self.assertMessageEqual(self.getMessage("bar"), command="JOIN") + + @cases.mark_specifications("Oragono") + def testCaseInsensitive(self): + """Some clients allow unsetting modes if their argument matches + up to normalization""" + self.connectClient("chanop", name="chanop") + self.joinChannel("chanop", "#chan") + self.getMessages("chanop") + self.sendLine("chanop", "MODE #chan +b BAR!*@*") + self.assertMessageEqual(self.getMessage("chanop"), command="MODE") + + self.connectClient("Bar", name="bar", capabilities=["echo-message"]) + self.getMessages("bar") + self.sendLine("bar", "JOIN #chan") + self.assertMessageEqual(self.getMessage("bar"), command=ERR_BANNEDFROMCHAN) + + self.sendLine("chanop", "MODE #chan -b bar!*@*") + self.assertMessageEqual(self.getMessage("chanop"), command="MODE") + + self.sendLine("bar", "JOIN #chan") + self.assertMessageEqual(self.getMessage("bar"), command="JOIN") + + class ModeratedMode(cases.BaseServerTestCase): @cases.mark_specifications("RFC2812") def testModeratedMode(self):