diff options
Diffstat (limited to 'tests/test_stream.py')
-rw-r--r-- | tests/test_stream.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/test_stream.py b/tests/test_stream.py new file mode 100644 index 00000000..deac24a5 --- /dev/null +++ b/tests/test_stream.py @@ -0,0 +1,79 @@ +import time +from sleekxmpp.test import * + + +class TestStreamTester(SleekTest): + """ + Test that we can simulate and test a stanza stream. + """ + + def tearDown(self): + self.stream_close() + + def testClientEcho(self): + """Test that we can interact with a ClientXMPP instance.""" + self.stream_start(mode='client') + + def echo(msg): + msg.reply('Thanks for sending: %(body)s' % msg).send() + + self.xmpp.add_event_handler('message', echo) + + self.recv(""" + <message to="tester@localhost" from="user@localhost"> + <body>Hi!</body> + </message> + """) + + self.send(""" + <message to="user@localhost"> + <body>Thanks for sending: Hi!</body> + </message> + """) + + def testComponentEcho(self): + """Test that we can interact with a ComponentXMPP instance.""" + self.stream_start(mode='component') + + def echo(msg): + msg.reply('Thanks for sending: %(body)s' % msg).send() + + self.xmpp.add_event_handler('message', echo) + + self.recv(""" + <message to="tester.localhost" from="user@localhost"> + <body>Hi!</body> + </message> + """) + + self.send(""" + <message to="user@localhost" from="tester.localhost"> + <body>Thanks for sending: Hi!</body> + </message> + """) + + def testSendStreamHeader(self): + """Test that we can check a sent stream header.""" + self.stream_start(mode='client', skip=False) + self.send_header(sto='localhost') + + def testStreamDisconnect(self): + """Test that the test socket can simulate disconnections.""" + self.stream_start() + events = set() + + def stream_error(event): + events.add('socket_error') + + self.xmpp.add_event_handler('socket_error', stream_error) + + self.stream_disconnect() + self.xmpp.send_raw(' ') + + time.sleep(.1) + + self.failUnless('socket_error' in events, + "Stream error event not raised: %s" % events) + + +suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamTester) |