import sys import sleekxmpp from sleekxmpp.exceptions import XMPPError from sleekxmpp.test import * class TestStreamExceptions(SleekTest): """ Test handling roster updates. """ def tearDown(self): self.stream_close() def testXMPPErrorException(self): """Test raising an XMPPError exception.""" def message(msg): raise XMPPError(condition='feature-not-implemented', text="We don't do things that way here.", etype='cancel', extension='foo', extension_ns='foo:error', extension_args={'test': 'true'}) self.stream_start() self.xmpp.add_event_handler('message', message) self.recv(""" This is going to cause an error. """) self.send(""" We don't do things that way here. """, use_values=False) def testThreadedXMPPErrorException(self): """Test raising an XMPPError exception in a threaded handler.""" def message(msg): raise XMPPError(condition='feature-not-implemented', text="We don't do things that way here.", etype='cancel') self.stream_start() self.xmpp.add_event_handler('message', message, threaded=True) self.recv(""" This is going to cause an error. """) self.send(""" We don't do things that way here. """) def testUnknownException(self): """Test raising an generic exception in a threaded handler.""" def message(msg): raise ValueError("Did something wrong") self.stream_start() self.xmpp.add_event_handler('message', message) self.recv(""" This is going to cause an error. """) if sys.version_info < (3, 0): self.send(""" SleekXMPP got into trouble. """) else: # Unfortunately, tracebacks do not make for very portable tests. pass suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamExceptions)