Ticket #4915: Twisted-tests.diff

File Twisted-tests.diff, 2.3 KB (added by devinj, 5 years ago)

Patch to test cases

  • Twisted/twisted/words/test/test_irc_service.py

     
    77
    88from twisted.trial import unittest
    99from twisted.test import proto_helpers
    10 from twisted.words.service import InMemoryWordsRealm, IRCFactory
     10from twisted.words.service import InMemoryWordsRealm, IRCFactory, IRCUser
    1111from twisted.words.protocols import irc
    1212from twisted.cred import checkers, portal
    1313
     
    108108             ('example.com', '004',
    109109              ['john', 'example.com', self.factory._serverInfo["serviceVersion"],
    110110               'w', 'n'])])
     111
     112
     113
     114class MocksyIRCUser(IRCUser):
     115    def __init__(self):
     116        self._mocked_codes = []
     117   
     118    def sendMessage(self, code, *_, **__):
     119        self._mocked_codes.append(code)
     120
     121BADTEXT = '\xff'
     122
     123class IRCUserBadEncodingTestCase(unittest.TestCase):
     124    # TODO: irc_NICK -- but NICKSERV is used for that, so it isn't as easy.
     125   
     126    def setUp(self):
     127        self.ircuser = MocksyIRCUser()
     128   
     129    def assert_chokesOnBadBytes(self, irc_x, error):
     130        getattr(self.ircuser, 'irc_%s' % irc_x)(None, [BADTEXT])
     131        self.assertEqual(self.ircuser._mocked_codes, [error])
     132   
     133    # no such channel
     134   
     135    def test_JOIN(self):
     136        self.assert_chokesOnBadBytes('JOIN', irc.ERR_NOSUCHCHANNEL)
     137   
     138    def test_NAMES(self):
     139        self.assert_chokesOnBadBytes('NAMES', irc.ERR_NOSUCHCHANNEL)
     140   
     141    def test_TOPIC(self):
     142        self.assert_chokesOnBadBytes('TOPIC', irc.ERR_NOSUCHCHANNEL)
     143   
     144    def test_LIST(self):
     145        self.assert_chokesOnBadBytes('LIST', irc.ERR_NOSUCHCHANNEL)
     146   
     147    # no such nick
     148   
     149    def test_MODE(self):
     150        self.assert_chokesOnBadBytes('MODE', irc.ERR_NOSUCHNICK)
     151   
     152    def test_PRIVMSG(self):
     153        self.assert_chokesOnBadBytes('PRIVMSG', irc.ERR_NOSUCHNICK)
     154   
     155    def test_WHOIS(self):
     156        self.assert_chokesOnBadBytes('WHOIS', irc.ERR_NOSUCHNICK)
     157   
     158    # not on channel
     159   
     160    def test_PART(self):
     161        self.assert_chokesOnBadBytes('PART', irc.ERR_NOTONCHANNEL)
     162   
     163    # probably nothing
     164   
     165    def test_WHO(self):
     166        self.assert_chokesOnBadBytes('WHO', irc.RPL_ENDOFWHO)
     167