Filter presence to legacy JID
darcs-hash:20070616201343-86b55-4ff059181c9a6831ddfd72ffa4185113c4503aba.gz
This commit is contained in:
@@ -71,8 +71,8 @@ class MailComponent(FeederComponent):
|
||||
RootSendMailMessageHandler()]
|
||||
self.subscribe_handlers += [MailSubscribeHandler()]
|
||||
self.unsubscribe_handlers += [MailUnsubscribeHandler()]
|
||||
self.available_handlers += [DefaultPresenceHandler()]
|
||||
self.unavailable_handlers += [DefaultPresenceHandler()]
|
||||
self.available_handlers += [MailPresenceHandler()]
|
||||
self.unavailable_handlers += [MailPresenceHandler()]
|
||||
|
||||
class MailFeeder(Feeder):
|
||||
"""Email check"""
|
||||
@@ -214,6 +214,20 @@ class MailHandler(Handler):
|
||||
return accounts
|
||||
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):
|
||||
def __init__(self):
|
||||
MailHandler.__init__(self)
|
||||
|
||||
@@ -41,7 +41,8 @@ from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
||||
SMTPAccount
|
||||
from jmc.jabber.component import MailComponent, SendMailMessageHandler, \
|
||||
RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \
|
||||
MailUnsubscribeHandler, NoAccountError, MailFeederHandler
|
||||
MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \
|
||||
MailPresenceHandler
|
||||
from jmc.lang import Lang
|
||||
|
||||
if sys.platform == "win32":
|
||||
@@ -759,14 +760,14 @@ class MailHandler_TestCase(unittest.TestCase):
|
||||
|
||||
def test_filter_wrong_account(self):
|
||||
account.hub.threadConnection = connectionForURI('sqlite://' + DB_URL)
|
||||
account11 = SMTPAccount(user_jid = "user1@test.com", \
|
||||
name = "account11", \
|
||||
account11 = SMTPAccount(user_jid="user1@test.com",
|
||||
name="account11",
|
||||
jid="account11@jcl.test.com")
|
||||
account12 = SMTPAccount(user_jid = "user1@test.com", \
|
||||
name = "account12", \
|
||||
account12 = SMTPAccount(user_jid="user1@test.com",
|
||||
name="account12",
|
||||
jid="account12@jcl.test.com")
|
||||
message = Message(from_jid = "user3@test.com", \
|
||||
to_jid = "user2%test.com@jcl.test.com", \
|
||||
message = Message(from_jid="user3@test.com",
|
||||
to_jid="user2%test.com@jcl.test.com",
|
||||
body="message")
|
||||
try:
|
||||
accounts = self.handler.filter(message, None)
|
||||
@@ -777,6 +778,31 @@ class MailHandler_TestCase(unittest.TestCase):
|
||||
del account.hub.threadConnection
|
||||
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):
|
||||
def setUp(self):
|
||||
MailHandler_TestCase.setUp(self)
|
||||
@@ -898,6 +924,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(MailPresenceHandler_TestCase, 'test'))
|
||||
suite.addTest(unittest.makeSuite(MailFeederHandler_TestCase, 'test'))
|
||||
return suite
|
||||
|
||||
|
||||
Reference in New Issue
Block a user