diff options
author | David Rousselie <dax@happycoders.org> | 2007-05-30 20:27:35 +0400 |
---|---|---|
committer | David Rousselie <dax@happycoders.org> | 2007-05-30 20:27:35 +0400 |
commit | 7827cfb6b25023b5c9e417ac9c7921725dc2e850 (patch) | |
tree | 12c105aeef4c8eb5b47a756099cce6e144b806f4 /src | |
parent | e2b74fbde4eb0247d73830b11caeb4c756b7f6ce (diff) |
Catch exception in handlers
darcs-hash:20070530162735-86b55-3b40c41681c7ea96bb64e6e7b1e99035847b8580.gz
Diffstat (limited to 'src')
-rw-r--r-- | src/jmc/jabber/component.py | 18 | ||||
-rw-r--r-- | src/jmc/jabber/tests/component.py | 30 |
2 files changed, 28 insertions, 20 deletions
diff --git a/src/jmc/jabber/component.py b/src/jmc/jabber/component.py index 56ef470..8ddeda1 100644 --- a/src/jmc/jabber/component.py +++ b/src/jmc/jabber/component.py @@ -39,6 +39,10 @@ from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \ SMTPAccount from jmc.lang import Lang +class NoAccountError(Exception): + """Error raised when no corresponding account is found.""" + pass + class MailComponent(FeederComponent): """Jabber Mail Component main implementation""" @@ -194,13 +198,13 @@ class MailHandler(Handler): Handler.__init__(self) self.dest_jid_regexp = re.compile(".*%.*") - def filter(self, stanza): + def filter(self, stanza, lang): """Return empty array if JID match '.*%.*@componentJID'""" if self.dest_jid_regexp.match(stanza.get_to().node): bare_from_jid = unicode(stanza.get_from().bare()) accounts = Account.select(Account.q.user_jid == bare_from_jid) if accounts.count() == 0: - raise Exception() + raise NoAccountError() else: default_account = accounts.newClause(\ SMTPAccount.q.default_account == True) @@ -237,7 +241,7 @@ class RootSendMailMessageHandler(SendMailMessageHandler): self.__logger = logging.getLogger(\ "jmc.jabber.component.RootSendMailMessageHandler") - def filter(self, message): + def filter(self, message, lang): name = message.get_to().node bare_from_jid = unicode(message.get_from().bare()) accounts = Account.select(\ @@ -279,8 +283,8 @@ class MailSubscribeHandler(DefaultSubscribeHandler, MailHandler): DefaultSubscribeHandler.__init__(self) MailHandler.__init__(self) - def filter(self, stanza): - return MailHandler.filter(self, stanza) + def filter(self, stanza, lang): + return MailHandler.filter(self, stanza, lang) def handle(self, stanza, lang, accounts): return DefaultSubscribeHandler.handle(self, stanza, lang, accounts) @@ -292,8 +296,8 @@ class MailUnsubscribeHandler(DefaultUnsubscribeHandler, MailHandler): DefaultUnsubscribeHandler.__init__(self) MailHandler.__init__(self) - def filter(self, stanza): - return MailHandler.filter(self, stanza) + def filter(self, stanza, lang): + return MailHandler.filter(self, stanza, lang) def handle(self, stanza, lang, accounts): return DefaultUnsubscribeHandler.handle(self, stanza, lang, accounts) diff --git a/src/jmc/jabber/tests/component.py b/src/jmc/jabber/tests/component.py index 4e97bec..b0bac5c 100644 --- a/src/jmc/jabber/tests/component.py +++ b/src/jmc/jabber/tests/component.py @@ -33,10 +33,14 @@ from pyxmpp.message import Message from jcl.model import account from jcl.model.account import Account, PresenceAccount -from jcl.jabber.tests.component import DefaultSubscribeHandler_TestCase, DefaultUnsubscribeHandler_TestCase - -from jmc.model.account import MailAccount, IMAPAccount, POP3Account, SMTPAccount -from jmc.jabber.component import MailComponent, SendMailMessageHandler, RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, MailUnsubscribeHandler +from jcl.jabber.tests.component import DefaultSubscribeHandler_TestCase, \ + DefaultUnsubscribeHandler_TestCase + +from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \ + SMTPAccount +from jmc.jabber.component import MailComponent, SendMailMessageHandler, \ + RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \ + MailUnsubscribeHandler, NoAccountError from jmc.lang import Lang if sys.platform == "win32": @@ -569,7 +573,7 @@ class RootSendMailMessageHandler_TestCase(unittest.TestCase): message = Message(from_jid="user1@test.com", to_jid="account11@jcl.test.com", body="message") - accounts = self.handler.filter(message) + accounts = self.handler.filter(message, None) self.assertEquals(accounts.count(), 1) del account.hub.threadConnection @@ -584,7 +588,7 @@ class RootSendMailMessageHandler_TestCase(unittest.TestCase): message = Message(from_jid="user1@test.com", to_jid="user2%test.com@jcl.test.com", body="message") - accounts = self.handler.filter(message) + accounts = self.handler.filter(message, None) self.assertEquals(accounts.count(), 0) del account.hub.threadConnection @@ -599,7 +603,7 @@ class RootSendMailMessageHandler_TestCase(unittest.TestCase): message = Message(from_jid="user2@test.com", to_jid="account11@jcl.test.com", body="message") - accounts = self.handler.filter(message) + accounts = self.handler.filter(message, None) self.assertEquals(accounts.count(), 0) del account.hub.threadConnection @@ -681,7 +685,7 @@ class MailHandler_TestCase(unittest.TestCase): message = Message(from_jid = "user1@test.com", \ to_jid = "user2%test.com@jcl.test.com", \ body = "message") - accounts = self.handler.filter(message) + accounts = self.handler.filter(message, None) self.assertNotEquals(accounts, None) self.assertEquals(accounts.count(), 1) self.assertEquals(accounts[0].name, "account11") @@ -698,7 +702,7 @@ class MailHandler_TestCase(unittest.TestCase): message = Message(from_jid = "user1@test.com", \ to_jid = "user2%test.com@jcl.test.com", \ body = "message") - accounts = self.handler.filter(message) + accounts = self.handler.filter(message, None) self.assertNotEquals(accounts, None) self.assertEquals(accounts.count(), 2) self.assertEquals(accounts[0].name, "account11") @@ -715,7 +719,7 @@ class MailHandler_TestCase(unittest.TestCase): message = Message(from_jid = "user1@test.com", \ to_jid = "user2test.com@jcl.test.com", \ body = "message") - accounts = self.handler.filter(message) + accounts = self.handler.filter(message, None) self.assertEquals(accounts, None) del account.hub.threadConnection @@ -731,13 +735,13 @@ class MailHandler_TestCase(unittest.TestCase): to_jid = "user2%test.com@jcl.test.com", \ body = "message") try: - accounts = self.handler.filter(message) - except Exception, e: + accounts = self.handler.filter(message, None) + except NoAccountError, e: self.assertNotEquals(e, None) return finally: del account.hub.threadConnection - self.fail("No exception catched") + self.fail("No exception 'NoAccountError' catched") class MailSubscribeHandler_TestCase(DefaultSubscribeHandler_TestCase, MailHandler_TestCase): def setUp(self): |