Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dax/jmc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Rousselie <dax@happycoders.org>2007-05-30 20:27:35 +0400
committerDavid Rousselie <dax@happycoders.org>2007-05-30 20:27:35 +0400
commit7827cfb6b25023b5c9e417ac9c7921725dc2e850 (patch)
tree12c105aeef4c8eb5b47a756099cce6e144b806f4 /src
parente2b74fbde4eb0247d73830b11caeb4c756b7f6ce (diff)
Catch exception in handlers
darcs-hash:20070530162735-86b55-3b40c41681c7ea96bb64e6e7b1e99035847b8580.gz
Diffstat (limited to 'src')
-rw-r--r--src/jmc/jabber/component.py18
-rw-r--r--src/jmc/jabber/tests/component.py30
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):