diff options
author | David Rousselie <dax@happycoders.org> | 2007-06-05 23:38:22 +0400 |
---|---|---|
committer | David Rousselie <dax@happycoders.org> | 2007-06-05 23:38:22 +0400 |
commit | 9a4fb057ddc10e94bd7b3a1964ef36937ae52b5e (patch) | |
tree | 9134c69110058ec476a2d0d2c06a4d9f2ede89ba /src | |
parent | fce4a74e9bc577b2d8b530d3890e32f1b3bfd034 (diff) |
Use MailFeederHandler to filter IMAP and POP3 accounts to check mails from
darcs-hash:20070605193822-86b55-6232d00b6ade33147b0b13234a651edb7520f05f.gz
Diffstat (limited to 'src')
-rw-r--r-- | src/jmc/jabber/component.py | 16 | ||||
-rw-r--r-- | src/jmc/jabber/tests/component.py | 79 |
2 files changed, 75 insertions, 20 deletions
diff --git a/src/jmc/jabber/component.py b/src/jmc/jabber/component.py index 0ae7780..cd09fdd 100644 --- a/src/jmc/jabber/component.py +++ b/src/jmc/jabber/component.py @@ -33,7 +33,7 @@ from jcl.model.account import Account, PresenceAccount from jcl.jabber.component import Handler, DefaultSubscribeHandler, \ DefaultUnsubscribeHandler, DefaultPresenceHandler from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, \ - HeadlineSender + HeadlineSender, FeederHandler from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \ SMTPAccount @@ -63,8 +63,7 @@ class MailComponent(FeederComponent): port, db_connection_str, lang=lang) - self.feeder = MailFeeder(self) - self.sender = MailSender(self) + self.handler = MailFeederHandler(MailFeeder(self), MailSender(self)) self.account_manager.account_classes = (IMAPAccount, POP3Account, SMTPAccount) @@ -299,5 +298,12 @@ class MailUnsubscribeHandler(DefaultUnsubscribeHandler, MailHandler): def filter(self, stanza, lang_class): return MailHandler.filter(self, stanza, lang_class) - def handle(self, stanza, lang, accounts): - return DefaultUnsubscribeHandler.handle(self, stanza, lang, accounts) + def handle(self, stanza, lang_class, accounts): + return DefaultUnsubscribeHandler.handle(self, stanza, lang_class, accounts) + +class MailFeederHandler(FeederHandler): + def filter(self, stanza, lang_class): + """Return only email account type to check mail from + """ + accounts = MailAccount.select(orderBy="user_jid") + return accounts diff --git a/src/jmc/jabber/tests/component.py b/src/jmc/jabber/tests/component.py index b0bac5c..fa49b69 100644 --- a/src/jmc/jabber/tests/component.py +++ b/src/jmc/jabber/tests/component.py @@ -35,12 +35,13 @@ from jcl.model import account from jcl.model.account import Account, PresenceAccount from jcl.jabber.tests.component import DefaultSubscribeHandler_TestCase, \ DefaultUnsubscribeHandler_TestCase +from jcl.jabber.tests.feeder import FeederMock, SenderMock from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \ SMTPAccount from jmc.jabber.component import MailComponent, SendMailMessageHandler, \ RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \ - MailUnsubscribeHandler, NoAccountError + MailUnsubscribeHandler, NoAccountError, MailFeederHandler from jmc.lang import Lang if sys.platform == "win32": @@ -192,7 +193,7 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.waiting_password_reply) account11.live_email_only = True account11.password = None - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertEquals(len(result), 0) sent = self.comp.stream.sent self.assertEquals(len(sent), 1) @@ -217,7 +218,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.waiting_password_reply = True account11.live_email_only = True account11.password = None - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertEquals(result, []) self.assertTrue(account11.first_check) self.assertTrue(account11.waiting_password_reply) @@ -237,7 +238,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.first_check = False self.assertEquals(account11.lastcheck, 0) account11.interval = 2 - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertEquals(result, []) self.assertEquals(account11.lastcheck, 1) del account.hub.threadConnection @@ -251,7 +252,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.first_check = False account11.lastcheck = 1 account11.interval = 2 - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertEquals(result, []) self.assertEquals(account11.lastcheck, 0) del account.hub.threadConnection @@ -268,7 +269,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.interval = 2 account11.password = None self.assertFalse(account11.waiting_password_reply) - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertFalse(account11.in_error) self.assertEquals(len(result), 0) sent = self.comp.stream.sent @@ -292,7 +293,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.interval = 2 account11.password = "password" account11.get_mail_list = lambda: [] - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertTrue(account11.in_error) self.assertEquals(len(result), 0) sent = self.comp.stream.sent @@ -316,7 +317,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.interval = 2 account11.password = "password" account11.get_mail_list = lambda: [] - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertFalse(account11.in_error) self.assertEquals(result, []) self.assertEquals(account11.lastcheck, 0) @@ -341,7 +342,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.password = "password" account11.get_mail_list = lambda: [0, 1] account11.get_mail = mock_get_mail - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertFalse(account11.in_error) self.assertEquals(account11.lastcheck, 0) self.assertFalse(account11.connected) @@ -370,7 +371,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.interval = 2 account11.password = "password" account11.get_mail_list = lambda: [] - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertFalse(account11.in_error) self.assertEquals(result, []) self.assertEquals(account11.lastcheck, 0) @@ -395,7 +396,7 @@ class MailComponent_TestCase(unittest.TestCase): account11.password = "password" account11.get_mail_list = lambda: [0, 1] account11.get_mail_summary = mock_get_mail_summary - result = self.comp.feeder.feed(account11) + result = self.comp.handler.feeder.feed(account11) self.assertFalse(account11.in_error) self.assertEquals(account11.lastcheck, 0) self.assertFalse(account11.connected) @@ -422,7 +423,7 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - continue_checking = self.comp.feeder.initialize_live_email(account11) + continue_checking = self.comp.handler.feeder.initialize_live_email(account11) self.assertEquals(continue_checking, True) self.assertFalse(account11.first_check) self.assertFalse(account11.waiting_password_reply) @@ -445,7 +446,7 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - continue_checking = self.comp.feeder.initialize_live_email(account11) + continue_checking = self.comp.handler.feeder.initialize_live_email(account11) self.assertEquals(continue_checking, False) sent = self.comp.stream.sent self.assertEquals(len(sent), 1) @@ -472,7 +473,7 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - continue_checking = self.comp.feeder.initialize_live_email(account11) + continue_checking = self.comp.handler.feeder.initialize_live_email(account11) self.assertEquals(continue_checking, False) sent = self.comp.stream.sent self.assertEquals(len(sent), 1) @@ -499,7 +500,7 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - continue_checking = self.comp.feeder.initialize_live_email(account11) + continue_checking = self.comp.handler.feeder.initialize_live_email(account11) self.assertFalse(continue_checking) sent = self.comp.stream.sent self.assertEquals(len(sent), 1) @@ -753,6 +754,53 @@ class MailUnsubscribeHandler_TestCase(DefaultUnsubscribeHandler_TestCase, MailHa MailHandler_TestCase.setUp(self) self.handler = MailUnsubscribeHandler() +class MailFeederHandler_TestCase(unittest.TestCase): + def setUp(self): + self.handler = MailFeederHandler(FeederMock(), SenderMock()) + if os.path.exists(DB_PATH): + os.unlink(DB_PATH) + account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL) + Account.createTable(ifNotExists=True) + PresenceAccount.createTable(ifNotExists=True) + MailAccount.createTable(ifNotExists=True) + IMAPAccount.createTable(ifNotExists=True) + POP3Account.createTable(ifNotExists=True) + SMTPAccount.createTable(ifNotExists=True) + del account.hub.threadConnection + + def tearDown(self): + self.handler = None + account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL) + SMTPAccount.dropTable(ifExists=True) + IMAPAccount.dropTable(ifExists=True) + POP3Account.dropTable(ifExists=True) + MailAccount.dropTable(ifExists=True) + PresenceAccount.dropTable(ifExists=True) + Account.dropTable(ifExists=True) + del TheURIOpener.cachedURIs['sqlite://' + DB_URL] + account.hub.threadConnection.close() + del account.hub.threadConnection + if os.path.exists(DB_PATH): + os.unlink(DB_PATH) + + def test_filter(self): + account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL) + account11 = SMTPAccount(user_jid="user1@test.com", + name="account11", + jid="account11@jcl.test.com") + account13 = IMAPAccount(user_jid="user3@test.com", + name="account13", + jid="account13@jcl.test.com") + account12 = POP3Account(user_jid="user2@test.com", + name="account12", + jid="account12@jcl.test.com") + accounts = self.handler.filter(None, None) + # SQLObject > 0.8 is needed + self.assertEquals(accounts.count(), 2) + self.assertEquals(accounts[0].name, "account12") + self.assertEquals(accounts[1].name, "account13") + del account.hub.threadConnection + def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(MailComponent_TestCase, 'test')) @@ -761,6 +809,7 @@ def suite(): suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailSubscribeHandler_TestCase, 'test')) + suite.addTest(unittest.makeSuite(MailFeederHandler_TestCase, 'test')) return suite if __name__ == '__main__': |