From 97b3f4fb8bd8610b4fcc6ed6310075e0d4b2a3b9 Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Thu, 2 Nov 2017 01:04:15 +0000 Subject: [PATCH] Add multi-prefix testcase --- irctest/server_tests/test_multi_prefix.py | 36 +++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 irctest/server_tests/test_multi_prefix.py diff --git a/irctest/server_tests/test_multi_prefix.py b/irctest/server_tests/test_multi_prefix.py new file mode 100644 index 0000000..8b691f4 --- /dev/null +++ b/irctest/server_tests/test_multi_prefix.py @@ -0,0 +1,36 @@ +""" +Tests multi-prefix. + +""" + +from irctest import cases +from irctest import client_mock +from irctest import runner +from irctest.irc_utils import ambiguities +from irctest.irc_utils.message_parser import Message + +class MultiPrefixTestCase(cases.BaseServerTestCase): + @cases.SpecificationSelector.requiredBySpecification('IRCv3.1') + def testMultiPrefix(self): + """“When requested, the multi-prefix client capability will cause the + IRC server to send all possible prefixes which apply to a user in NAMES + and WHO output. + + These prefixes MUST be in order of ‘rank’, from highest to lowest. + """ + self.connectClient('foo', capabilities=['multi-prefix']) + self.joinChannel(1, '#chan') + self.sendLine(1, 'MODE #chan +v foo') + self.getMessages(1) + + #TODO(dan): Make sure +v is voice + + self.sendLine(1, 'NAMES #chan') + self.assertMessageEqual(self.getMessage(1), command='353', params=['foo', '=', '#chan', '@+foo'], fail_msg='Expected NAMES response (353) with @+foo, got: {msg}') + self.getMessages(1) + + self.sendLine(1, 'WHO #chan') + msg = self.getMessage(1) + self.assertEqual(msg.command, '352', msg, fail_msg='Expected WHO response (352), got: {msg}') + self.assertGreaterEqual(len(msg.params), 8, 'Expected WHO response (352) with 8 params, got: {msg}'.format(msg=msg)) + self.assertTrue('@+' in msg.params[6], 'Expected WHO response (352) with "@+" in param 7, got: {msg}'.format(msg=msg))