Example #1
0
File: component.py Project: dax/jmc
 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)
     )
Example #2
0
File: feeder.py Project: dax/jcl
 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
Example #3
0
File: feeder.py Project: dax/jcl
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]")