def __init__( self, jid, secret, server, port, config, config_file, lang=Lang(), account_manager_class=MailAccountManager, command_manager_class=MailCommandManager, ): """Use FeederComponent behavior and setup feeder and sender attributes. """ FeederComponent.__init__( self, jid, secret, server, port, config, config_file, lang=lang, account_manager_class=account_manager_class, command_manager_class=command_manager_class, ) self.tick_handlers = [MailFeederHandler(MailFeeder(self), MailSender(self))] self.account_manager.account_classes = (IMAPAccount, POP3Account, SMTPAccount) self.msg_handlers[0] += [SendMailMessageHandler(self), RootSendMailMessageHandler(self)] self.presence_subscribe_handlers += [[MailSubscribeHandler(self)]] self.presence_unsubscribe_handlers += [[MailUnsubscribeHandler(self)]] self.presence_available_handlers += [[MailPresenceHandler(self)]] self.presence_unavailable_handlers += [[MailPresenceHandler(self)]] self.disco_get_items_handlers[0] += [IMAPAccountDiscoGetItemsHandler(self)] jabber.replace_handlers( self.disco_get_info_handlers, CommandRootDiscoGetInfoHandler, MailRootDiscoGetInfoHandler(self) ) jabber.replace_handlers( self.disco_get_info_handlers, AccountTypeDiscoGetInfoHandler, MailAccountTypeDiscoGetInfoHandler(self) ) jabber.replace_handlers( self.disco_get_info_handlers, AccountDiscoGetInfoHandler, IMAPAccountDiscoGetInfoHandler(self) )
def setUp(self): JCLTestCase.setUp(self, tables=[Account, LegacyJID, ExampleAccount, Example2Account, User]) self.comp = FeederComponent("jcl.test.com", "password", "localhost", "5347", None, None) self.comp.time_unit = 0
class FeederComponent_TestCase(JCLComponent_TestCase): def setUp(self): JCLTestCase.setUp(self, tables=[Account, LegacyJID, ExampleAccount, Example2Account, User]) self.comp = FeederComponent("jcl.test.com", "password", "localhost", "5347", None, None) self.comp.time_unit = 0 def test_run(self): def end_run(): self.comp.running = False return self.comp.handle_tick = end_run self.comp.stream = MockStream() self.comp.stream_class = MockStream self.comp.disable_signals() run_thread = threading.Thread(target=self.comp.run, name="run_thread") run_thread.start() self.comp.wait_event.wait(JCLComponent.timeout) run_thread.join(JCLComponent.timeout) self.assertTrue(self.comp.stream.connection_started) threads = threading.enumerate() self.assertEquals(len(threads), 1) self.assertTrue(self.comp.stream.connection_stopped) if self.comp.queue.qsize(): raise self.comp.queue.get(0) def test_run_ni_handle_tick(self): # handle_tick is implemented in FeederComponent # so no need to check for NotImplemented raise assertion self.assertTrue(True) def test_handle_tick(self): class AccountFeeder(Feeder): def feed(self, _account): return [("Simple Message for account " + _account.name, "user_jid: " + _account.user.jid), ("Simple Message for account " + _account.name, "jid: " + _account.jid)] self.comp.stream = MockStream() self.comp.stream_class = MockStream model.db_connect() user1 = User(jid="*****@*****.**") account11 = Account(user=user1, name="account11", jid="*****@*****.**") account12 = Account(user=user1, name="account12", jid="*****@*****.**") account2 = Account(user=User(jid="*****@*****.**"), name="account2", jid="*****@*****.**") self.comp.tick_handlers = [FeederHandler(AccountFeeder(self.comp), MessageSender(self.comp)), FeederHandler(AccountFeeder(self.comp), MessageSender(self.comp))] self.comp.handle_tick() messages_sent = self.comp.stream.sent self.assertEquals(len(messages_sent), 12) self.assertEquals(messages_sent[0].get_from(), "*****@*****.**") self.assertEquals(messages_sent[0].get_to(), "*****@*****.**") self.assertEquals(messages_sent[0].get_subject(), "Simple Message for account account11") self.assertEquals(messages_sent[0].get_body(), "user_jid: [email protected]") self.assertEquals(messages_sent[1].get_from(), "*****@*****.**") self.assertEquals(messages_sent[1].get_to(), "*****@*****.**") self.assertEquals(messages_sent[1].get_subject(), "Simple Message for account account11") self.assertEquals(messages_sent[1].get_body(), "jid: [email protected]") self.assertEquals(messages_sent[2].get_from(), "*****@*****.**") self.assertEquals(messages_sent[2].get_to(), "*****@*****.**") self.assertEquals(messages_sent[2].get_subject(), "Simple Message for account account12") self.assertEquals(messages_sent[2].get_body(), "user_jid: [email protected]") self.assertEquals(messages_sent[3].get_from(), "*****@*****.**") self.assertEquals(messages_sent[3].get_to(), "*****@*****.**") self.assertEquals(messages_sent[3].get_subject(), "Simple Message for account account12") self.assertEquals(messages_sent[3].get_body(), "jid: [email protected]") self.assertEquals(messages_sent[4].get_from(), "*****@*****.**") self.assertEquals(messages_sent[4].get_to(), "*****@*****.**") self.assertEquals(messages_sent[4].get_subject(), "Simple Message for account account2") self.assertEquals(messages_sent[4].get_body(), "user_jid: [email protected]") self.assertEquals(messages_sent[5].get_from(), "*****@*****.**") self.assertEquals(messages_sent[5].get_to(), "*****@*****.**") self.assertEquals(messages_sent[5].get_subject(), "Simple Message for account account2") self.assertEquals(messages_sent[5].get_body(), "jid: [email protected]") self.assertEquals(messages_sent[6].get_from(), "*****@*****.**") self.assertEquals(messages_sent[6].get_to(), "*****@*****.**") self.assertEquals(messages_sent[6].get_subject(), "Simple Message for account account11") self.assertEquals(messages_sent[6].get_body(), "user_jid: [email protected]") self.assertEquals(messages_sent[7].get_from(), "*****@*****.**") self.assertEquals(messages_sent[7].get_to(), "*****@*****.**") self.assertEquals(messages_sent[7].get_subject(), "Simple Message for account account11") self.assertEquals(messages_sent[7].get_body(), "jid: [email protected]") self.assertEquals(messages_sent[8].get_from(), "*****@*****.**") self.assertEquals(messages_sent[8].get_to(), "*****@*****.**") self.assertEquals(messages_sent[8].get_subject(), "Simple Message for account account12") self.assertEquals(messages_sent[8].get_body(), "user_jid: [email protected]") self.assertEquals(messages_sent[9].get_from(), "*****@*****.**") self.assertEquals(messages_sent[9].get_to(), "*****@*****.**") self.assertEquals(messages_sent[9].get_subject(), "Simple Message for account account12") self.assertEquals(messages_sent[9].get_body(), "jid: [email protected]") self.assertEquals(messages_sent[10].get_from(), "*****@*****.**") self.assertEquals(messages_sent[10].get_to(), "*****@*****.**") self.assertEquals(messages_sent[10].get_subject(), "Simple Message for account account2") self.assertEquals(messages_sent[10].get_body(), "user_jid: [email protected]") self.assertEquals(messages_sent[11].get_from(), "*****@*****.**") self.assertEquals(messages_sent[11].get_to(), "*****@*****.**") self.assertEquals(messages_sent[11].get_subject(), "Simple Message for account account2") self.assertEquals(messages_sent[11].get_body(), "jid: [email protected]")