changeset 17de941d0c68 in /home/hg/repos/gajim
branches: gtk3 details:http://hg.gajim.org/gajim?cmd=changeset;node=17de941d0c68 description: re-enable test suite
diffstat:
test/integration/test_gui_event_integration.py | 14 +- test/integration/test_xmpp_client_nb.py | 169 --------------- test/integration/test_xmpp_transports_nb.py | 276 ------------------------- test/lib/gajim_mocks.py | 18 +- test/lib/notify.py | 19 + test/lib/xmpp_mocks.py | 3 +- test/runtests.py | 15 +- test/unit/test_caps_cache.py | 2 +- test/unit/test_contacts.py | 2 +- test/unit/test_protocol_caps.py | 58 ++-- test/unit/test_sessions.py | 155 +++++++------ test/unit/test_xmpp_dispatcher_nb.py | 97 -------- test/unit/test_xmpp_smacks.py | 133 ------------ test/unit/test_xmpp_transports_nb.py | 78 ------- 14 files changed, 164 insertions(+), 875 deletions(-)
diffs (truncated from 1290 to 300 lines):
diff -r 1dff54efd458 -r 17de941d0c68 test/integration/test_gui_event_integration.py --- a/test/integration/test_gui_event_integration.py Sat Apr 06 12:24:26 2013 +0200 +++ b/test/integration/test_gui_event_integration.py Sun Apr 07 23:41:15 2013 +0200 @@ -6,6 +6,8 @@ import lib lib.setup_env()
+import nbxmpp + from common import gajim from common import contacts as contacts_module from gajim import Interface @@ -46,8 +48,16 @@
def contact_comes_online(self, account, jid, resource, prio): '''a remote contact comes online''' - gajim.interface.handle_event_notify(account, (jid, 'online', "I'm back!", - resource, prio, None, time.time(), None)) + xml = """<presence from='%s/%s' id='123'> + <c node='http://gajim.org' ver='pRCD6cgQ4SDqNMCjdhRV6TECx5o=' + hash='sha-1' xmlns='http://jabber.org/protocol/caps%27/%3E + <status>I'm back!</status> + </presence> + """ % (jid, resource) + msg = nbxmpp.protocol.Presence(node=nbxmpp.simplexml.XML2Node(xml)) + gajim.connections[account]._presenceCB(None, msg) +# gajim.interface.handle_event_notify(account, (jid, 'online', "I'm back!", +# resource, prio, None, time.time(), None))
contact = None for c in gajim.contacts.get_contacts(account, jid): diff -r 1dff54efd458 -r 17de941d0c68 test/integration/test_xmpp_client_nb.py --- a/test/integration/test_xmpp_client_nb.py Sat Apr 06 12:24:26 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,169 +0,0 @@ -''' -Testing script for NonBlockingClient class (src/common/xmpp/client_nb.py) - -It actually connects to a xmpp server. -''' - -import unittest - -import lib -lib.setup_env() - -from xmpp_mocks import MockConnection, IdleQueueThread -from mock import Mock -from common.xmpp import client_nb - -#import logging -#log = logging.getLogger('gajim') -#log.setLevel(logging.DEBUG) - -# (XMPP server hostname, c2s port). Script will connect to the machine. -xmpp_server_port = ('gajim.org', 5222) - -# [username, password, passphrase]. Script will authenticate to server above -credentials = ['unittest', 'testtest', 'res'] - -class TestNonBlockingClient(unittest.TestCase): - ''' - Test Cases class for NonBlockingClient. - ''' - def setUp(self): - ''' IdleQueue thread is run and dummy connection is created. ''' - self.idlequeue_thread = IdleQueueThread() - self.connection = MockConnection() # for dummy callbacks - self.idlequeue_thread.start() - - def tearDown(self): - ''' IdleQueue thread is stopped. ''' - self.idlequeue_thread.stop_thread() - self.idlequeue_thread.join() - - self.client = None - - def open_stream(self, server_port, wrong_pass=False): - ''' - Method opening the XMPP connection. It returns when stream:features - is received from server. - - :param server_port: tuple of (hostname, port) for where the client should - connect. - ''' - - class TempConnection(): - def get_password(self, cb, mechanism): - if wrong_pass: - cb('wrong pass') - else: - cb(credentials[1]) - def on_connect_failure(self): - pass - - self.client = client_nb.NonBlockingClient( - domain=server_port[0], - idlequeue=self.idlequeue_thread.iq, - caller=Mock(realClass=TempConnection)) - - self.client.connect( - hostname=server_port[0], - port=server_port[1], - on_connect=lambda *args: self.connection.on_connect(True, *args), - on_connect_failure=lambda *args: self.connection.on_connect( - False, *args)) - - self.assert_(self.connection.wait(), - msg='waiting for callback from client constructor') - - # if on_connect was called, client has to be connected and vice versa - if self.connection.connect_succeeded: - self.assert_(self.client.get_connect_type()) - else: - self.assert_(not self.client.get_connect_type()) - - def client_auth(self, username, password, resource, sasl): - ''' - Method authenticating connected client with supplied credentials. Returns - when authentication is over. - - :param sasl: whether to use sasl (sasl=1) or old (sasl=0) authentication - :todo: to check and be more specific about when it returns - (bind, session..) - ''' - self.client.auth(username, password, resource, sasl, - on_auth=self.connection.on_auth) - - self.assert_(self.connection.wait(), msg='waiting for authentication') - - def do_disconnect(self): - ''' - Does disconnecting of connected client. Returns when TCP connection is - closed. - ''' - self.client.RegisterDisconnectHandler(self.connection.set_event) - self.client.disconnect() - - self.assertTrue(self.connection.wait(), msg='waiting for disconnecting') - - def test_proper_connect_sasl(self): - ''' - The ideal testcase - client is connected, authenticated with SASL and - then disconnected. - ''' - self.open_stream(xmpp_server_port) - - # if client is not connected, lets raise the AssertionError - self.assert_(self.client.get_connect_type()) - # client.disconnect() is already called from NBClient via - # _on_connected_failure, no need to call it here - - self.client_auth(credentials[0], credentials[1], credentials[2], sasl=1) - self.assert_(self.connection.con) - self.assert_(self.connection.auth=='sasl', msg='Unable to auth via SASL') - - self.do_disconnect() - - def test_proper_connect_oldauth(self): - ''' - The ideal testcase - client is connected, authenticated with old auth and - then disconnected. - ''' - self.open_stream(xmpp_server_port) - self.assert_(self.client.get_connect_type()) - self.client_auth(credentials[0], credentials[1], credentials[2], sasl=0) - self.assert_(self.connection.con) - features = self.client.Dispatcher.Stream.features - if not features.getTag('auth'): - print("Server doesn't support old authentication type, ignoring test") - else: - self.assert_(self.connection.auth=='old_auth', - msg='Unable to auth via old_auth') - self.do_disconnect() - - def test_connect_to_nonexisting_host(self): - ''' - Connect to nonexisting host. DNS request for A records should return - nothing. - ''' - self.open_stream(('fdsfsdf.fdsf.fss', 5222)) - self.assert_(not self.client.get_connect_type()) - - def test_connect_to_wrong_port(self): - ''' - Connect to nonexisting server. DNS request for A records should return an - IP but there shouldn't be XMPP server running on specified port. - ''' - self.open_stream((xmpp_server_port[0], 31337)) - self.assert_(not self.client.get_connect_type()) - - def test_connect_with_wrong_creds(self): - ''' - Connecting with invalid password. - ''' - self.open_stream(xmpp_server_port, wrong_pass=True) - self.assert_(self.client.get_connect_type()) - self.client_auth(credentials[0], 'wrong pass', credentials[2], sasl=1) - self.assert_(self.connection.auth is None) - self.do_disconnect() - - -if __name__ == '__main__': - unittest.main() diff -r 1dff54efd458 -r 17de941d0c68 test/integration/test_xmpp_transports_nb.py --- a/test/integration/test_xmpp_transports_nb.py Sat Apr 06 12:24:26 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,276 +0,0 @@ -''' -Integration test for tranports classes. See unit for the ordinary -unit tests of this module. -''' - -import unittest -import socket - -import lib -lib.setup_env() - -from xmpp_mocks import IdleQueueThread, IdleMock -from common.xmpp import transports_nb - - -class AbstractTransportTest(unittest.TestCase): - ''' Encapsulates Idlequeue instantiation for transports and more...''' - - def setUp(self): - ''' IdleQueue thread is run and dummy connection is created. ''' - self.idlequeue_thread = IdleQueueThread() - self.idlequeue_thread.start() - self._setup_hook() - - def tearDown(self): - ''' IdleQueue thread is stopped. ''' - self._teardown_hook() - self.idlequeue_thread.stop_thread() - self.idlequeue_thread.join() - - def _setup_hook(self): - pass - - def _teardown_hook(self): - pass - - def expect_receive(self, expected, count=1, msg=None): - ''' - Returns a callback function that will assert whether the data passed to - it equals the one specified when calling this function. - - Can be used to make sure transport dispatch correct data. - ''' - def receive(data, *args, **kwargs): - self.assertEqual(data, expected, msg=msg) - self._expected_count -= 1 - self._expected_count = count - return receive - - def have_received_expected(self): - ''' - Plays together with expect_receive(). Will return true if expected_rcv - callback was called as often as specified - ''' - return self._expected_count == 0 - - -class TestNonBlockingTCP(AbstractTransportTest): - ''' - Test class for NonBlockingTCP. Will actually try to connect to an existing - XMPP server. - ''' - class MockClient(IdleMock): - ''' Simple client to test transport functionality ''' - def __init__(self, idlequeue, testcase): - self.idlequeue = idlequeue - self.testcase = testcase - IdleMock.__init__(self) - - def do_connect(self, establish_tls=False, proxy_dict=None): - try: - ips = socket.getaddrinfo('gajim.org', 5222, - socket.AF_UNSPEC, socket.SOCK_STREAM) - ip = ips[0] - except socket.error as e: - self.testcase.fail(msg=str(e)) - - self.socket = transports_nb.NonBlockingTCP( - raise_event=lambda event_type, data: self.testcase.assertTrue( - event_type and data), - on_disconnect=lambda: self.on_success(mode='SocketDisconnect'), - idlequeue=self.idlequeue, - estabilish_tls=establish_tls, - certs=('../data/other/cacerts.pem', 'tmp/cacerts.pem'), - proxy_dict=proxy_dict) - - self.socket.PlugIn(self) - - self.socket.connect(conn_5tuple=ip, - on_connect=lambda: self.on_success(mode='TCPconnect'), - on_connect_failure=self.on_failure) - self.testcase.assertTrue(self.wait(), msg='Connection timed out')