Catch exception in handlers
darcs-hash:20070530162735-86b55-3b40c41681c7ea96bb64e6e7b1e99035847b8580.gz
This commit is contained in:
@@ -39,6 +39,10 @@ from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
|||||||
SMTPAccount
|
SMTPAccount
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
|
|
||||||
|
class NoAccountError(Exception):
|
||||||
|
"""Error raised when no corresponding account is found."""
|
||||||
|
pass
|
||||||
|
|
||||||
class MailComponent(FeederComponent):
|
class MailComponent(FeederComponent):
|
||||||
"""Jabber Mail Component main implementation"""
|
"""Jabber Mail Component main implementation"""
|
||||||
|
|
||||||
@@ -194,13 +198,13 @@ class MailHandler(Handler):
|
|||||||
Handler.__init__(self)
|
Handler.__init__(self)
|
||||||
self.dest_jid_regexp = re.compile(".*%.*")
|
self.dest_jid_regexp = re.compile(".*%.*")
|
||||||
|
|
||||||
def filter(self, stanza):
|
def filter(self, stanza, lang):
|
||||||
"""Return empty array if JID match '.*%.*@componentJID'"""
|
"""Return empty array if JID match '.*%.*@componentJID'"""
|
||||||
if self.dest_jid_regexp.match(stanza.get_to().node):
|
if self.dest_jid_regexp.match(stanza.get_to().node):
|
||||||
bare_from_jid = unicode(stanza.get_from().bare())
|
bare_from_jid = unicode(stanza.get_from().bare())
|
||||||
accounts = Account.select(Account.q.user_jid == bare_from_jid)
|
accounts = Account.select(Account.q.user_jid == bare_from_jid)
|
||||||
if accounts.count() == 0:
|
if accounts.count() == 0:
|
||||||
raise Exception()
|
raise NoAccountError()
|
||||||
else:
|
else:
|
||||||
default_account = accounts.newClause(\
|
default_account = accounts.newClause(\
|
||||||
SMTPAccount.q.default_account == True)
|
SMTPAccount.q.default_account == True)
|
||||||
@@ -237,7 +241,7 @@ class RootSendMailMessageHandler(SendMailMessageHandler):
|
|||||||
self.__logger = logging.getLogger(\
|
self.__logger = logging.getLogger(\
|
||||||
"jmc.jabber.component.RootSendMailMessageHandler")
|
"jmc.jabber.component.RootSendMailMessageHandler")
|
||||||
|
|
||||||
def filter(self, message):
|
def filter(self, message, lang):
|
||||||
name = message.get_to().node
|
name = message.get_to().node
|
||||||
bare_from_jid = unicode(message.get_from().bare())
|
bare_from_jid = unicode(message.get_from().bare())
|
||||||
accounts = Account.select(\
|
accounts = Account.select(\
|
||||||
@@ -279,8 +283,8 @@ class MailSubscribeHandler(DefaultSubscribeHandler, MailHandler):
|
|||||||
DefaultSubscribeHandler.__init__(self)
|
DefaultSubscribeHandler.__init__(self)
|
||||||
MailHandler.__init__(self)
|
MailHandler.__init__(self)
|
||||||
|
|
||||||
def filter(self, stanza):
|
def filter(self, stanza, lang):
|
||||||
return MailHandler.filter(self, stanza)
|
return MailHandler.filter(self, stanza, lang)
|
||||||
|
|
||||||
def handle(self, stanza, lang, accounts):
|
def handle(self, stanza, lang, accounts):
|
||||||
return DefaultSubscribeHandler.handle(self, stanza, lang, accounts)
|
return DefaultSubscribeHandler.handle(self, stanza, lang, accounts)
|
||||||
@@ -292,8 +296,8 @@ class MailUnsubscribeHandler(DefaultUnsubscribeHandler, MailHandler):
|
|||||||
DefaultUnsubscribeHandler.__init__(self)
|
DefaultUnsubscribeHandler.__init__(self)
|
||||||
MailHandler.__init__(self)
|
MailHandler.__init__(self)
|
||||||
|
|
||||||
def filter(self, stanza):
|
def filter(self, stanza, lang):
|
||||||
return MailHandler.filter(self, stanza)
|
return MailHandler.filter(self, stanza, lang)
|
||||||
|
|
||||||
def handle(self, stanza, lang, accounts):
|
def handle(self, stanza, lang, accounts):
|
||||||
return DefaultUnsubscribeHandler.handle(self, stanza, lang, accounts)
|
return DefaultUnsubscribeHandler.handle(self, stanza, lang, accounts)
|
||||||
|
|||||||
@@ -33,10 +33,14 @@ from pyxmpp.message import Message
|
|||||||
|
|
||||||
from jcl.model import account
|
from jcl.model import account
|
||||||
from jcl.model.account import Account, PresenceAccount
|
from jcl.model.account import Account, PresenceAccount
|
||||||
from jcl.jabber.tests.component import DefaultSubscribeHandler_TestCase, DefaultUnsubscribeHandler_TestCase
|
from jcl.jabber.tests.component import DefaultSubscribeHandler_TestCase, \
|
||||||
|
DefaultUnsubscribeHandler_TestCase
|
||||||
|
|
||||||
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, SMTPAccount
|
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
||||||
from jmc.jabber.component import MailComponent, SendMailMessageHandler, RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, MailUnsubscribeHandler
|
SMTPAccount
|
||||||
|
from jmc.jabber.component import MailComponent, SendMailMessageHandler, \
|
||||||
|
RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \
|
||||||
|
MailUnsubscribeHandler, NoAccountError
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
|
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
@@ -569,7 +573,7 @@ class RootSendMailMessageHandler_TestCase(unittest.TestCase):
|
|||||||
message = Message(from_jid="user1@test.com",
|
message = Message(from_jid="user1@test.com",
|
||||||
to_jid="account11@jcl.test.com",
|
to_jid="account11@jcl.test.com",
|
||||||
body="message")
|
body="message")
|
||||||
accounts = self.handler.filter(message)
|
accounts = self.handler.filter(message, None)
|
||||||
self.assertEquals(accounts.count(), 1)
|
self.assertEquals(accounts.count(), 1)
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
|
|
||||||
@@ -584,7 +588,7 @@ class RootSendMailMessageHandler_TestCase(unittest.TestCase):
|
|||||||
message = Message(from_jid="user1@test.com",
|
message = Message(from_jid="user1@test.com",
|
||||||
to_jid="user2%test.com@jcl.test.com",
|
to_jid="user2%test.com@jcl.test.com",
|
||||||
body="message")
|
body="message")
|
||||||
accounts = self.handler.filter(message)
|
accounts = self.handler.filter(message, None)
|
||||||
self.assertEquals(accounts.count(), 0)
|
self.assertEquals(accounts.count(), 0)
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
|
|
||||||
@@ -599,7 +603,7 @@ class RootSendMailMessageHandler_TestCase(unittest.TestCase):
|
|||||||
message = Message(from_jid="user2@test.com",
|
message = Message(from_jid="user2@test.com",
|
||||||
to_jid="account11@jcl.test.com",
|
to_jid="account11@jcl.test.com",
|
||||||
body="message")
|
body="message")
|
||||||
accounts = self.handler.filter(message)
|
accounts = self.handler.filter(message, None)
|
||||||
self.assertEquals(accounts.count(), 0)
|
self.assertEquals(accounts.count(), 0)
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
|
|
||||||
@@ -681,7 +685,7 @@ class MailHandler_TestCase(unittest.TestCase):
|
|||||||
message = Message(from_jid = "user1@test.com", \
|
message = Message(from_jid = "user1@test.com", \
|
||||||
to_jid = "user2%test.com@jcl.test.com", \
|
to_jid = "user2%test.com@jcl.test.com", \
|
||||||
body = "message")
|
body = "message")
|
||||||
accounts = self.handler.filter(message)
|
accounts = self.handler.filter(message, None)
|
||||||
self.assertNotEquals(accounts, None)
|
self.assertNotEquals(accounts, None)
|
||||||
self.assertEquals(accounts.count(), 1)
|
self.assertEquals(accounts.count(), 1)
|
||||||
self.assertEquals(accounts[0].name, "account11")
|
self.assertEquals(accounts[0].name, "account11")
|
||||||
@@ -698,7 +702,7 @@ class MailHandler_TestCase(unittest.TestCase):
|
|||||||
message = Message(from_jid = "user1@test.com", \
|
message = Message(from_jid = "user1@test.com", \
|
||||||
to_jid = "user2%test.com@jcl.test.com", \
|
to_jid = "user2%test.com@jcl.test.com", \
|
||||||
body = "message")
|
body = "message")
|
||||||
accounts = self.handler.filter(message)
|
accounts = self.handler.filter(message, None)
|
||||||
self.assertNotEquals(accounts, None)
|
self.assertNotEquals(accounts, None)
|
||||||
self.assertEquals(accounts.count(), 2)
|
self.assertEquals(accounts.count(), 2)
|
||||||
self.assertEquals(accounts[0].name, "account11")
|
self.assertEquals(accounts[0].name, "account11")
|
||||||
@@ -715,7 +719,7 @@ class MailHandler_TestCase(unittest.TestCase):
|
|||||||
message = Message(from_jid = "user1@test.com", \
|
message = Message(from_jid = "user1@test.com", \
|
||||||
to_jid = "user2test.com@jcl.test.com", \
|
to_jid = "user2test.com@jcl.test.com", \
|
||||||
body = "message")
|
body = "message")
|
||||||
accounts = self.handler.filter(message)
|
accounts = self.handler.filter(message, None)
|
||||||
self.assertEquals(accounts, None)
|
self.assertEquals(accounts, None)
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
|
|
||||||
@@ -731,13 +735,13 @@ class MailHandler_TestCase(unittest.TestCase):
|
|||||||
to_jid = "user2%test.com@jcl.test.com", \
|
to_jid = "user2%test.com@jcl.test.com", \
|
||||||
body = "message")
|
body = "message")
|
||||||
try:
|
try:
|
||||||
accounts = self.handler.filter(message)
|
accounts = self.handler.filter(message, None)
|
||||||
except Exception, e:
|
except NoAccountError, e:
|
||||||
self.assertNotEquals(e, None)
|
self.assertNotEquals(e, None)
|
||||||
return
|
return
|
||||||
finally:
|
finally:
|
||||||
del account.hub.threadConnection
|
del account.hub.threadConnection
|
||||||
self.fail("No exception catched")
|
self.fail("No exception 'NoAccountError' catched")
|
||||||
|
|
||||||
class MailSubscribeHandler_TestCase(DefaultSubscribeHandler_TestCase, MailHandler_TestCase):
|
class MailSubscribeHandler_TestCase(DefaultSubscribeHandler_TestCase, MailHandler_TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user