From 95a26bfa5746a1e1540b1ed8dce59c1c57ef01ad Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Wed, 21 Oct 2020 19:26:31 -0400 Subject: [PATCH] add a test for +m --- .../server_tests/test_channel_operations.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/irctest/server_tests/test_channel_operations.py b/irctest/server_tests/test_channel_operations.py index 9a90b69..1e42db0 100644 --- a/irctest/server_tests/test_channel_operations.py +++ b/irctest/server_tests/test_channel_operations.py @@ -842,6 +842,40 @@ class TopicPrivileges(cases.BaseServerTestCase): self.assertNotIn('TOPIC', replies) +class ModeratedMode(cases.BaseServerTestCase): + + @cases.SpecificationSelector.requiredBySpecification('RFC2812') + def testModeratedMode(self): + # test the +m channel mode + self.connectClient('chanop', name='chanop') + self.joinChannel('chanop', '#chan') + self.getMessages('chanop') + self.sendLine('chanop', 'MODE #chan +m') + replies = self.getMessages('chanop') + modeLines = [line for line in replies if line.command == 'MODE'] + self.assertMessageEqual(modeLines[0], command='MODE', params=['#chan', '+m']) + + self.connectClient('baz', name='baz') + self.joinChannel('baz', '#chan') + self.getMessages('chanop') + # this message should be suppressed completely by +m + self.sendLine('baz', 'PRIVMSG #chan :hi from baz') + replies = self.getMessages('baz') + reply_cmds = {reply.command for reply in replies} + self.assertIn(ERR_CANNOTSENDTOCHAN, reply_cmds) + self.assertEqual(self.getMessages('chanop'), []) + + # grant +v, user should be able to send messages + self.sendLine('chanop', 'MODE #chan +v baz') + self.getMessages('chanop') + self.getMessages('baz') + self.sendLine('baz', 'PRIVMSG #chan :hi again from baz') + self.getMessages('baz') + relays = self.getMessages('chanop') + relay = relays[0] + self.assertMessageEqual(relay, command='PRIVMSG', params=['#chan', 'hi again from baz']) + + class OpModerated(cases.BaseServerTestCase): @cases.SpecificationSelector.requiredBySpecification('Oragono')