add a test for +m

This commit is contained in:
Shivaram Lingamneni 2020-10-21 19:26:31 -04:00
parent 706e794df6
commit 95a26bfa57

View File

@ -842,6 +842,40 @@ class TopicPrivileges(cases.BaseServerTestCase):
self.assertNotIn('TOPIC', replies) 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): class OpModerated(cases.BaseServerTestCase):
@cases.SpecificationSelector.requiredBySpecification('Oragono') @cases.SpecificationSelector.requiredBySpecification('Oragono')