import unittest import lib lib.setup_env() from common import logging_helpers logging_helpers.set_quiet() from common import gajim from gajim_mocks import MockLogger gajim.logger = MockLogger() from gui_interface import Interface class Test(unittest.TestCase): def test_instantiation(self): ''' Test that we can proper initialize and do not fail on globals ''' interface = Interface() interface.run() def test_dispatch(self): ''' Test dispatcher forwarding network events to handler_* methods ''' sut = Interface() success = sut.dispatch('No Such Event', None, None) self.assertFalse(success, msg="Unexisting event handled") success = sut.dispatch('STANZA_ARRIVED', None, None) self.assertTrue(success, msg="Existing event must be handled") def test_register_unregister_single_handler(self): ''' Register / Unregister a custom event handler ''' sut = Interface() event = 'TESTS_ARE_COOL_EVENT' self.called = False def handler(account, data): self.assertEqual(account, 'account') self.assertEqual(data, 'data') self.called = True self.assertFalse(self.called) sut.register_handler('TESTS_ARE_COOL_EVENT', handler) sut.dispatch(event, 'account', 'data') self.assertTrue(self.called, msg="Handler should have been called") self.called = False sut.unregister_handler('TESTS_ARE_COOL_EVENT', handler) sut.dispatch(event, 'account', 'data') self.assertFalse(self.called, msg="Handler should no longer be called") def test_dispatch_to_multiple_handlers(self): ''' Register and dispatch a single event to multiple handlers ''' sut = Interface() event = 'SINGLE_EVENT' self.called_a = False self.called_b = False def handler_a(account, data): self.assertFalse(self.called_a, msg="One must only be notified once") self.called_a = True def handler_b(account, data): self.assertFalse(self.called_b, msg="One must only be notified once") self.called_b = True sut.register_handler(event, handler_a) sut.register_handler(event, handler_b) # register again sut.register_handler('SOME_OTHER_EVENT', handler_b) sut.register_handler(event, handler_a) sut.dispatch(event, 'account', 'data') self.assertTrue(self.called_a and self.called_b, msg="Both handlers should have been called") def test_links_regexp_entire(self): sut = Interface() def assert_matches_all(str_): m = sut.basic_pattern_re.match(str_) # the match should equal the string str_span = (0, len(str_)) self.assertEqual(m.span(), str_span) # these entire strings should be parsed as links assert_matches_all('http://google.com/') assert_matches_all('http://google.com') assert_matches_all('http://www.google.ca/search?q=xmpp') assert_matches_all('http://tools.ietf.org/html/draft-saintandre-rfc3920bis-05#section-12.3') assert_matches_all('http://en.wikipedia.org/wiki/Protocol_(computing)') assert_matches_all( 'http://en.wikipedia.org/wiki/Protocol_%28computing%29') assert_matches_all('mailto:test@example.org') assert_matches_all('xmpp:example-node@example.com') assert_matches_all('xmpp:example-node@example.com/some-resource') assert_matches_all('xmpp:example-node@example.com?message') assert_matches_all('xmpp://guest@example.com/support@example.com?message') if __name__ == "__main__": #import sys;sys.argv = ['', 'Test.test'] unittest.main()