Add multiple identities to JMC

darcs-hash:20070618194642-86b55-e4f3b144c11cf89a0ff7f10101a2d23969c72089.gz
This commit is contained in:
David Rousselie
2007-06-18 21:46:42 +02:00
parent 86a1367f26
commit 1e1fd5c67d
4 changed files with 30 additions and 5 deletions

View File

@@ -27,8 +27,10 @@ del sys.setdefaultencoding
import jmc
from jmc.runner import JMCRunner
from jmc.lang import Lang
if __name__ == "__main__":
runner = JMCRunner("Jabber Mail Component", jmc.version)
runner = JMCRunner(Lang().get_default_lang_class().component_name,
jmc.version)
runner.configure()
runner.run()

View File

@@ -31,7 +31,7 @@ from pyxmpp.message import Message
from jcl.model.account import Account, PresenceAccount, LegacyJID
from jcl.jabber.component import Handler, DefaultSubscribeHandler, \
DefaultUnsubscribeHandler, DefaultPresenceHandler
DefaultUnsubscribeHandler, DefaultPresenceHandler, AccountManager
from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, \
HeadlineSender, FeederHandler
@@ -64,6 +64,7 @@ class MailComponent(FeederComponent):
db_connection_str,
lang=lang)
self.handler = MailFeederHandler(MailFeeder(self), MailSender(self))
self.account_manager = MailAccountManager(self)
self.account_manager.account_classes = (IMAPAccount,
POP3Account,
SMTPAccount)
@@ -74,6 +75,16 @@ class MailComponent(FeederComponent):
self.available_handlers += [MailPresenceHandler()]
self.unavailable_handlers += [MailPresenceHandler()]
class MailAccountManager(AccountManager):
"""JMC specific account behavior"""
def root_disco_get_info(self, name, category, type):
"""Add jabber:iq:gateway support"""
disco_info = AccountManager.root_disco_get_info(self, name, category, type)
disco_info.add_feature("jabber:iq:gateway")
disco_info.add_identity(name, "headline", "newmail")
return disco_info
class MailFeeder(Feeder):
"""Email check"""

View File

@@ -42,7 +42,7 @@ from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
from jmc.jabber.component import MailComponent, SendMailMessageHandler, \
RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \
MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \
MailPresenceHandler
MailPresenceHandler, MailAccountManager
from jmc.lang import Lang
if sys.platform == "win32":
@@ -549,6 +549,15 @@ class SendMailMessageHandler_TestCase(unittest.TestCase):
self.assertEquals(result[0].get_body(),
Lang.en.send_mail_ok_body % ("user@test.com"))
class MailAccountManager_TestCase(unittest.TestCase):
def test_root_disco_get_info(self):
mam = MailAccountManager(None)
disco_info = mam.root_disco_get_info("JMC", "gateway", "smtp")
self.assertTrue(disco_info.has_feature("jabber:iq:gateway"))
self.assertEquals(len(disco_info.get_identities()), 2)
self.assertTrue(disco_info.identity_is("gateway", "smtp"))
self.assertTrue(disco_info.identity_is("headline", "newmail"))
class RootSendMailMessageHandler_TestCase(unittest.TestCase):
def setUp(self):
self.handler = RootSendMailMessageHandler()
@@ -916,6 +925,7 @@ def suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(MailComponent_TestCase, 'test'))
suite.addTest(unittest.makeSuite(SendMailMessageHandler_TestCase, 'test'))
suite.addTest(unittest.makeSuite(MailAccountManager_TestCase, 'test'))
suite.addTest(unittest.makeSuite(RootSendMailMessageHandler_TestCase, 'test'))
suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test'))
suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test'))

View File

@@ -62,5 +62,7 @@ class JMCRunner(JCLRunner):
lang = Lang(self.language))
MailAccount.default_encoding = self.mail_default_encoding
component.check_interval = self.check_interval
component.disco_identity.set_category("gateway")
component.disco_identity.set_type("smtp")
component.run()
self._run(run_func)