54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
# tests for xmpppy's dispatcher_nb.py
|
|
import unittest
|
|
|
|
import testlib
|
|
testlib.setup_env()
|
|
|
|
from mock import Mock
|
|
|
|
from common.xmpp import dispatcher_nb
|
|
from common.xmpp import auth
|
|
|
|
class TestDispatcherNB(unittest.TestCase):
|
|
def test_unbound_namespace_prefix(self):
|
|
'''tests our handling of a message with an unbound namespace prefix'''
|
|
d = dispatcher_nb.Dispatcher()
|
|
|
|
conn = Mock()
|
|
|
|
owner = Mock()
|
|
owner._caller = Mock()
|
|
owner.defaultNamespace = auth.NS_CLIENT
|
|
owner.debug_flags = []
|
|
owner.Connection = conn
|
|
owner._component = False
|
|
|
|
d._owner = owner
|
|
d.plugin(owner)
|
|
|
|
msgs = []
|
|
|
|
def _got_message(conn, msg):
|
|
msgs.append(msg)
|
|
|
|
d.RegisterHandler('message', _got_message)
|
|
|
|
d.StreamInit()
|
|
|
|
d.ProcessNonBlocking("<stream:stream xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client'>")
|
|
|
|
# should be able to parse a normal message
|
|
d.ProcessNonBlocking('<message><body>hello</body></message>')
|
|
self.assertEqual(1, len(msgs))
|
|
|
|
d.ProcessNonBlocking('<message><x:y/></message>')
|
|
# we should not have been disconnected after that message
|
|
self.assertEqual(0, len(conn.mockGetNamedCalls('pollend')))
|
|
|
|
# we should be able to keep parsing
|
|
d.ProcessNonBlocking('<message><body>still here?</body></message>')
|
|
self.assertEqual(2, len(msgs))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|