Filter presence to legacy JID

darcs-hash:20070616201343-86b55-4ff059181c9a6831ddfd72ffa4185113c4503aba.gz
This commit is contained in:
David Rousselie
2007-06-16 22:13:43 +02:00
parent 5ef8a73beb
commit afb9d6c525
2 changed files with 73 additions and 32 deletions

View File

@@ -71,8 +71,8 @@ class MailComponent(FeederComponent):
RootSendMailMessageHandler()] RootSendMailMessageHandler()]
self.subscribe_handlers += [MailSubscribeHandler()] self.subscribe_handlers += [MailSubscribeHandler()]
self.unsubscribe_handlers += [MailUnsubscribeHandler()] self.unsubscribe_handlers += [MailUnsubscribeHandler()]
self.available_handlers += [DefaultPresenceHandler()] self.available_handlers += [MailPresenceHandler()]
self.unavailable_handlers += [DefaultPresenceHandler()] self.unavailable_handlers += [MailPresenceHandler()]
class MailFeeder(Feeder): class MailFeeder(Feeder):
"""Email check""" """Email check"""
@@ -214,6 +214,20 @@ class MailHandler(Handler):
return accounts return accounts
return None return None
class MailPresenceHandler(DefaultPresenceHandler):
"""Define filter for legacy JIDs presence handling"""
def __init__(self):
Handler.__init__(self)
self.dest_jid_regexp = re.compile(".*%.*")
def filter(self, stanza, lang_class):
"""Return empty array if JID match '.*%.*@componentJID'"""
node = stanza.get_to().node
if node is not None and self.dest_jid_regexp.match(node):
bare_from_jid = unicode(stanza.get_from().bare())
return [] # Not None
return None
class SendMailMessageHandler(MailHandler): class SendMailMessageHandler(MailHandler):
def __init__(self): def __init__(self):
MailHandler.__init__(self) MailHandler.__init__(self)

View File

@@ -41,7 +41,8 @@ from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
SMTPAccount SMTPAccount
from jmc.jabber.component import MailComponent, SendMailMessageHandler, \ from jmc.jabber.component import MailComponent, SendMailMessageHandler, \
RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \ RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \
MailUnsubscribeHandler, NoAccountError, MailFeederHandler MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \
MailPresenceHandler
from jmc.lang import Lang from jmc.lang import Lang
if sys.platform == "win32": if sys.platform == "win32":
@@ -759,14 +760,14 @@ class MailHandler_TestCase(unittest.TestCase):
def test_filter_wrong_account(self): def test_filter_wrong_account(self):
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL) account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
account11 = SMTPAccount(user_jid = "user1@test.com", \ account11 = SMTPAccount(user_jid="user1@test.com",
name = "account11", \ name="account11",
jid="account11@jcl.test.com") jid="account11@jcl.test.com")
account12 = SMTPAccount(user_jid = "user1@test.com", \ account12 = SMTPAccount(user_jid="user1@test.com",
name = "account12", \ name="account12",
jid="account12@jcl.test.com") jid="account12@jcl.test.com")
message = Message(from_jid = "user3@test.com", \ message = Message(from_jid="user3@test.com",
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, None) accounts = self.handler.filter(message, None)
@@ -777,6 +778,31 @@ class MailHandler_TestCase(unittest.TestCase):
del account.hub.threadConnection del account.hub.threadConnection
self.fail("No exception 'NoAccountError' catched") self.fail("No exception 'NoAccountError' catched")
class MailPresenceHandler_TestCase(unittest.TestCase):
def setUp(self):
self.handler = MailPresenceHandler()
def test_filter(self):
message = Message(from_jid="user1@test.com",
to_jid="user11%test.com@jcl.test.com",
body="message")
result = self.handler.filter(message, None)
self.assertNotEquals(result, None)
def test_filter_wrong_dest(self):
message = Message(from_jid="user1@test.com",
to_jid="user11@jcl.test.com",
body="message")
result = self.handler.filter(message, None)
self.assertEquals(result, None)
def test_filter_wrong_dest2(self):
message = Message(from_jid="user1@test.com",
to_jid="jcl.test.com",
body="message")
result = self.handler.filter(message, None)
self.assertEquals(result, None)
class MailSubscribeHandler_TestCase(DefaultSubscribeHandler_TestCase, MailHandler_TestCase): class MailSubscribeHandler_TestCase(DefaultSubscribeHandler_TestCase, MailHandler_TestCase):
def setUp(self): def setUp(self):
MailHandler_TestCase.setUp(self) MailHandler_TestCase.setUp(self)
@@ -898,6 +924,7 @@ def suite():
suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test'))
suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test'))
suite.addTest(unittest.makeSuite(MailSubscribeHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailSubscribeHandler_TestCase, 'test'))
suite.addTest(unittest.makeSuite(MailPresenceHandler_TestCase, 'test'))
suite.addTest(unittest.makeSuite(MailFeederHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailFeederHandler_TestCase, 'test'))
return suite return suite