diff options
Diffstat (limited to 'tests/test_stream_exceptions.py')
-rw-r--r-- | tests/test_stream_exceptions.py | 99 |
1 files changed, 95 insertions, 4 deletions
diff --git a/tests/test_stream_exceptions.py b/tests/test_stream_exceptions.py index 1143ce28..c41edbb2 100644 --- a/tests/test_stream_exceptions.py +++ b/tests/test_stream_exceptions.py @@ -12,7 +12,6 @@ class TestStreamExceptions(SleekTest): """ def tearDown(self): - sys.excepthook = sys.__excepthook__ self.stream_close() def testExceptionReply(self): @@ -23,8 +22,33 @@ class TestStreamExceptions(SleekTest): msg['body'] = 'Body changed' raise XMPPError(clear=False) + self.stream_start() + self.xmpp.add_event_handler('message', message) + + self.recv(""" + <message> + <body>This is going to cause an error.</body> + </message> + """) + + self.send(""" + <message type="error"> + <body>This is going to cause an error.</body> + <error type="cancel" code="500"> + <undefined-condition + xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> + </error> + </message> + """) + + def testExceptionContinueWorking(self): + """Test that Sleek continues to respond after an XMPPError is raised.""" + + def message(msg): + msg.reply() + msg['body'] = 'Body changed' + raise XMPPError(clear=False) - sys.excepthook = lambda *args, **kwargs: None self.stream_start() self.xmpp.add_event_handler('message', message) @@ -44,6 +68,22 @@ class TestStreamExceptions(SleekTest): </message> """) + self.recv(""" + <message> + <body>This is going to cause an error.</body> + </message> + """) + + self.send(""" + <message type="error"> + <body>This is going to cause an error.</body> + <error type="cancel" code="500"> + <undefined-condition + xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> + </error> + </message> + """) + def testXMPPErrorException(self): """Test raising an XMPPError exception.""" @@ -153,9 +193,8 @@ class TestStreamExceptions(SleekTest): def catch_error(*args, **kwargs): raised_errors.append(True) - sys.excepthook = catch_error - self.stream_start() + self.xmpp.exception = catch_error self.xmpp.add_event_handler('message', message) self.recv(""" @@ -178,6 +217,58 @@ class TestStreamExceptions(SleekTest): self.assertEqual(raised_errors, [True], "Exception was not raised: %s" % raised_errors) + def testUnknownException(self): + """Test Sleek continues to respond after an unknown exception.""" + + raised_errors = [] + + def message(msg): + raise ValueError("Did something wrong") + + def catch_error(*args, **kwargs): + raised_errors.append(True) + + self.stream_start() + self.xmpp.exception = catch_error + self.xmpp.add_event_handler('message', message) + + self.recv(""" + <message> + <body>This is going to cause an error.</body> + </message> + """) + + self.send(""" + <message type="error"> + <error type="cancel" code="500"> + <undefined-condition + xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> + <text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"> + SleekXMPP got into trouble. + </text> + </error> + </message> + """) + + self.recv(""" + <message> + <body>This is going to cause an error.</body> + </message> + """) + + self.send(""" + <message type="error"> + <error type="cancel" code="500"> + <undefined-condition + xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> + <text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"> + SleekXMPP got into trouble. + </text> + </error> + </message> + """) + + self.assertEqual(raised_errors, [True, True], "Exceptions were not raised: %s" % raised_errors) suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamExceptions) |