Add default SMTP server configuration
darcs-hash:20080520061718-86b55-63ae914b5a132cd49215216ae73ca10c0cef7748.gz
This commit is contained in:
@@ -33,7 +33,7 @@ from jcl.jabber.feeder import FeederComponent
|
|||||||
from jcl.jabber.command import CommandRootDiscoGetInfoHandler
|
from jcl.jabber.command import CommandRootDiscoGetInfoHandler
|
||||||
from jcl.jabber.component import AccountManager
|
from jcl.jabber.component import AccountManager
|
||||||
from jmc.model.account import IMAPAccount, POP3Account, \
|
from jmc.model.account import IMAPAccount, POP3Account, \
|
||||||
SMTPAccount
|
AbstractSMTPAccount, GlobalSMTPAccount, SMTPAccount
|
||||||
|
|
||||||
from jmc.jabber.disco import MailRootDiscoGetInfoHandler, \
|
from jmc.jabber.disco import MailRootDiscoGetInfoHandler, \
|
||||||
IMAPAccountDiscoGetItemsHandler, MailAccountTypeDiscoGetInfoHandler, \
|
IMAPAccountDiscoGetItemsHandler, MailAccountTypeDiscoGetInfoHandler, \
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ from pyxmpp.message import Message
|
|||||||
|
|
||||||
from jcl.model import account
|
from jcl.model import account
|
||||||
from jmc.jabber import MailHandler
|
from jmc.jabber import MailHandler
|
||||||
from jmc.model.account import SMTPAccount
|
from jmc.model.account import AbstractSMTPAccount
|
||||||
|
|
||||||
class SendMailMessageHandler(MailHandler):
|
class SendMailMessageHandler(MailHandler):
|
||||||
def __init__(self, component):
|
def __init__(self, component):
|
||||||
@@ -129,14 +129,14 @@ class RootSendMailMessageHandler(SendMailMessageHandler):
|
|||||||
bare_from_jid = unicode(stanza.get_from().bare())
|
bare_from_jid = unicode(stanza.get_from().bare())
|
||||||
accounts = account.get_accounts(\
|
accounts = account.get_accounts(\
|
||||||
bare_from_jid,
|
bare_from_jid,
|
||||||
account_class=SMTPAccount,
|
account_class=AbstractSMTPAccount,
|
||||||
filter=(SMTPAccount.q.default_account == True))
|
filter=(AbstractSMTPAccount.q.default_account == True))
|
||||||
if accounts.count() != 1:
|
if accounts.count() != 1:
|
||||||
self.__logger.error("No default account found for user " +
|
self.__logger.error("No default account found for user " +
|
||||||
str(bare_from_jid))
|
str(bare_from_jid))
|
||||||
if accounts.count() == 0:
|
if accounts.count() == 0:
|
||||||
accounts = account.get_accounts(bare_from_jid,
|
accounts = account.get_accounts(bare_from_jid,
|
||||||
SMTPAccount)
|
AbstractSMTPAccount)
|
||||||
return accounts
|
return accounts
|
||||||
|
|
||||||
def handle(self, stanza, lang_class, data):
|
def handle(self, stanza, lang_class, data):
|
||||||
@@ -177,4 +177,3 @@ class RootSendMailMessageHandler(SendMailMessageHandler):
|
|||||||
stanza_type="error",
|
stanza_type="error",
|
||||||
subject=lang_class.send_mail_error_no_to_header_subject,
|
subject=lang_class.send_mail_error_no_to_header_subject,
|
||||||
body=lang_class.send_mail_error_no_to_header_body)]
|
body=lang_class.send_mail_error_no_to_header_body)]
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ import jcl.jabber.command as command
|
|||||||
import jcl.jabber.tests.command
|
import jcl.jabber.tests.command
|
||||||
|
|
||||||
from jmc.model.account import POP3Account, IMAPAccount, SMTPAccount, \
|
from jmc.model.account import POP3Account, IMAPAccount, SMTPAccount, \
|
||||||
MailAccount
|
MailAccount, GlobalSMTPAccount, AbstractSMTPAccount
|
||||||
from jmc.jabber.component import MailComponent
|
from jmc.jabber.component import MailComponent
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
from jmc.jabber.tests.component import MockIMAPAccount
|
from jmc.jabber.tests.component import MockIMAPAccount
|
||||||
@@ -47,8 +47,9 @@ from jmc.jabber.command import MailCommandManager
|
|||||||
|
|
||||||
class MailCommandManagerTestCase(JCLCommandManagerTestCase):
|
class MailCommandManagerTestCase(JCLCommandManagerTestCase):
|
||||||
def setUp(self, tables=[]):
|
def setUp(self, tables=[]):
|
||||||
tables += [POP3Account, IMAPAccount, SMTPAccount, MailAccount,
|
tables += [POP3Account, IMAPAccount, GlobalSMTPAccount,
|
||||||
MockIMAPAccount, User, Account, PresenceAccount]
|
AbstractSMTPAccount, SMTPAccount,
|
||||||
|
MailAccount, MockIMAPAccount, User, Account, PresenceAccount]
|
||||||
JCLTestCase.setUp(self, tables=tables)
|
JCLTestCase.setUp(self, tables=tables)
|
||||||
self.config_file = tempfile.mktemp(".conf", "jmctest", jcl.tests.DB_DIR)
|
self.config_file = tempfile.mktemp(".conf", "jmctest", jcl.tests.DB_DIR)
|
||||||
self.config = ConfigParser()
|
self.config = ConfigParser()
|
||||||
@@ -63,6 +64,8 @@ class MailCommandManagerTestCase(JCLCommandManagerTestCase):
|
|||||||
self.command_manager = MailCommandManager(self.comp,
|
self.command_manager = MailCommandManager(self.comp,
|
||||||
self.comp.account_manager)
|
self.comp.account_manager)
|
||||||
self.comp.account_manager.account_classes = (POP3Account, IMAPAccount,
|
self.comp.account_manager.account_classes = (POP3Account, IMAPAccount,
|
||||||
|
GlobalSMTPAccount,
|
||||||
|
AbstractSMTPAccount,
|
||||||
SMTPAccount, MockIMAPAccount)
|
SMTPAccount, MockIMAPAccount)
|
||||||
self.user1 = User(jid="test1@test.com")
|
self.user1 = User(jid="test1@test.com")
|
||||||
self.account11 = MockIMAPAccount(user=self.user1,
|
self.account11 = MockIMAPAccount(user=self.user1,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ from jcl.jabber.tests.presence import DefaultSubscribeHandler_TestCase, \
|
|||||||
from jcl.jabber.tests.feeder import FeederMock, SenderMock
|
from jcl.jabber.tests.feeder import FeederMock, SenderMock
|
||||||
|
|
||||||
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
||||||
SMTPAccount, NoAccountError
|
GlobalSMTPAccount, AbstractSMTPAccount, SMTPAccount, NoAccountError
|
||||||
from jmc.jabber import MailHandler
|
from jmc.jabber import MailHandler
|
||||||
from jmc.jabber.message import SendMailMessageHandler
|
from jmc.jabber.message import SendMailMessageHandler
|
||||||
from jmc.jabber.presence import MailSubscribeHandler, \
|
from jmc.jabber.presence import MailSubscribeHandler, \
|
||||||
@@ -192,8 +192,9 @@ class MailComponent_TestCase(JCLTestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
JCLTestCase.setUp(self, tables=[Account, PresenceAccount, User,
|
JCLTestCase.setUp(self, tables=[Account, PresenceAccount, User,
|
||||||
MailAccount, IMAPAccount, POP3Account,
|
MailAccount, IMAPAccount, POP3Account,
|
||||||
SMTPAccount, MockIMAPAccount,
|
GlobalSMTPAccount,
|
||||||
MockPOP3Account])
|
AbstractSMTPAccount, SMTPAccount,
|
||||||
|
MockIMAPAccount, MockPOP3Account])
|
||||||
self.comp = MailComponent("jmc.test.com",
|
self.comp = MailComponent("jmc.test.com",
|
||||||
"password",
|
"password",
|
||||||
"localhost",
|
"localhost",
|
||||||
@@ -1276,7 +1277,9 @@ class MailSender_TestCase(JCLTestCase):
|
|||||||
class MailHandler_TestCase(JCLTestCase):
|
class MailHandler_TestCase(JCLTestCase):
|
||||||
def setUp(self, tables=[]):
|
def setUp(self, tables=[]):
|
||||||
self.handler = MailHandler(None)
|
self.handler = MailHandler(None)
|
||||||
JCLTestCase.setUp(self, tables=[Account, SMTPAccount, User] + tables)
|
JCLTestCase.setUp(self, tables=[Account, AbstractSMTPAccount,
|
||||||
|
GlobalSMTPAccount, SMTPAccount, User] \
|
||||||
|
+ tables)
|
||||||
|
|
||||||
def test_filter(self):
|
def test_filter(self):
|
||||||
model.db_connect()
|
model.db_connect()
|
||||||
@@ -1470,7 +1473,8 @@ class MailFeederHandler_TestCase(JCLTestCase):
|
|||||||
self.handler = MailFeederHandler(FeederMock(), SenderMock())
|
self.handler = MailFeederHandler(FeederMock(), SenderMock())
|
||||||
JCLTestCase.setUp(self, tables=[Account, PresenceAccount, MailAccount,
|
JCLTestCase.setUp(self, tables=[Account, PresenceAccount, MailAccount,
|
||||||
IMAPAccount, POP3Account, SMTPAccount,
|
IMAPAccount, POP3Account, SMTPAccount,
|
||||||
User])
|
GlobalSMTPAccount,
|
||||||
|
AbstractSMTPAccount, User])
|
||||||
|
|
||||||
def test_filter(self):
|
def test_filter(self):
|
||||||
model.db_connect()
|
model.db_connect()
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ from pyxmpp.message import Message
|
|||||||
from jcl.tests import JCLTestCase
|
from jcl.tests import JCLTestCase
|
||||||
from jcl.model.account import Account, User
|
from jcl.model.account import Account, User
|
||||||
|
|
||||||
from jmc.model.account import SMTPAccount
|
from jmc.model.account import GlobalSMTPAccount, AbstractSMTPAccount, \
|
||||||
|
SMTPAccount
|
||||||
from jmc.jabber.message import SendMailMessageHandler, \
|
from jmc.jabber.message import SendMailMessageHandler, \
|
||||||
RootSendMailMessageHandler
|
RootSendMailMessageHandler
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
@@ -121,7 +122,9 @@ class SendMailMessageHandler_TestCase(unittest.TestCase):
|
|||||||
|
|
||||||
class RootSendMailMessageHandler_TestCase(JCLTestCase):
|
class RootSendMailMessageHandler_TestCase(JCLTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
JCLTestCase.setUp(self, tables=[Account, SMTPAccount, User])
|
JCLTestCase.setUp(self, tables=[Account, GlobalSMTPAccount,
|
||||||
|
AbstractSMTPAccount,
|
||||||
|
SMTPAccount, User])
|
||||||
self.handler = RootSendMailMessageHandler(None)
|
self.handler = RootSendMailMessageHandler(None)
|
||||||
|
|
||||||
def test_filter(self):
|
def test_filter(self):
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ class Lang(jcl.lang.Lang):
|
|||||||
type_imap_name = u"IMAP accounts"
|
type_imap_name = u"IMAP accounts"
|
||||||
type_pop3_name = u"POP3 accounts"
|
type_pop3_name = u"POP3 accounts"
|
||||||
type_smtp_name = u"SMTP accounts"
|
type_smtp_name = u"SMTP accounts"
|
||||||
|
type_globalsmtp_name = u"Default SMTP Server"
|
||||||
|
|
||||||
send_mail_error_no_to_header_subject = u"No header \"TO\" found"
|
send_mail_error_no_to_header_subject = u"No header \"TO\" found"
|
||||||
send_mail_error_no_to_header_body = u"No header \"TO\" found in receive message.\n" \
|
send_mail_error_no_to_header_body = u"No header \"TO\" found in receive message.\n" \
|
||||||
|
|||||||
@@ -691,17 +691,8 @@ class POP3Account(MailAccount):
|
|||||||
self.get_new_mail_list()
|
self.get_new_mail_list()
|
||||||
self.lastmail = self.nb_mail
|
self.lastmail = self.nb_mail
|
||||||
|
|
||||||
|
class AbstractSMTPAccount(Account):
|
||||||
class SMTPAccount(Account):
|
"""Common SMTP attribut"""
|
||||||
"""Send email account"""
|
|
||||||
|
|
||||||
login = StringCol(default="")
|
|
||||||
password = StringCol(default=None)
|
|
||||||
host = StringCol(default="localhost")
|
|
||||||
port = IntCol(default=110)
|
|
||||||
tls = BoolCol(default=False)
|
|
||||||
store_password = BoolCol(default=True)
|
|
||||||
waiting_password_reply = BoolCol(default=False)
|
|
||||||
default_from = StringCol(default="nobody@localhost")
|
default_from = StringCol(default="nobody@localhost")
|
||||||
default_account = BoolCol(default=False)
|
default_account = BoolCol(default=False)
|
||||||
|
|
||||||
@@ -709,82 +700,7 @@ class SMTPAccount(Account):
|
|||||||
"""SMTPAccount init
|
"""SMTPAccount init
|
||||||
Initialize class attributes"""
|
Initialize class attributes"""
|
||||||
Account._init(self, *args, **kw)
|
Account._init(self, *args, **kw)
|
||||||
self.__logger = logging.getLogger("jmc.model.account.SMTPAccount")
|
self.__logger = logging.getLogger("jmc.model.account.AbstractSMTPAccount")
|
||||||
|
|
||||||
def _get_default_port(cls):
|
|
||||||
"""Return default SMTP server port"""
|
|
||||||
return 25
|
|
||||||
|
|
||||||
get_default_port = classmethod(_get_default_port)
|
|
||||||
|
|
||||||
def _get_register_fields(cls, real_class=None):
|
|
||||||
"""See Account._get_register_fields
|
|
||||||
"""
|
|
||||||
def password_post_func(password, default_func, bare_from_jid):
|
|
||||||
if password is None or password == "":
|
|
||||||
return None
|
|
||||||
return password
|
|
||||||
|
|
||||||
def default_account_default_func(bare_from_jid):
|
|
||||||
accounts = account.get_accounts(bare_from_jid, SMTPAccount,
|
|
||||||
(SMTPAccount.q.default_account == True))
|
|
||||||
if accounts.count() == 0:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def default_account_post_func(value, default_func, bare_from_jid):
|
|
||||||
accounts = account.get_accounts(bare_from_jid, SMTPAccount,
|
|
||||||
(SMTPAccount.q.default_account == True))
|
|
||||||
already_default_account = (accounts.count() != 0)
|
|
||||||
if isinstance(value, str):
|
|
||||||
value = value.lower()
|
|
||||||
bool_value = (value == "true" or value == "1")
|
|
||||||
else:
|
|
||||||
bool_value = value
|
|
||||||
if bool_value:
|
|
||||||
if already_default_account:
|
|
||||||
for _account in accounts:
|
|
||||||
_account.default_account = False
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
if not already_default_account:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if real_class is None:
|
|
||||||
real_class = cls
|
|
||||||
return Account.get_register_fields(real_class) + \
|
|
||||||
[("login", "text-single", None,
|
|
||||||
account.default_post_func,
|
|
||||||
lambda bare_from_jid: ""),
|
|
||||||
("password", "text-private", None, password_post_func,
|
|
||||||
lambda bare_from_jid: ""),
|
|
||||||
("host", "text-single", None,
|
|
||||||
lambda field_value, default_func, bare_from_jid: \
|
|
||||||
account.mandatory_field("host", field_value),
|
|
||||||
lambda bare_from_jid: ""),
|
|
||||||
("port", "text-single", None,
|
|
||||||
account.int_post_func,
|
|
||||||
lambda bare_from_jid: real_class.get_default_port()),
|
|
||||||
("tls", "boolean", None,
|
|
||||||
account.default_post_func,
|
|
||||||
lambda bare_from_jid: False),
|
|
||||||
("default_from", "text-single", None,
|
|
||||||
lambda field_value, default_func, bare_from_jid: \
|
|
||||||
account.mandatory_field("default_from", field_value),
|
|
||||||
lambda bare_from_jid: ""),
|
|
||||||
("store_password", "boolean", None,
|
|
||||||
account.default_post_func,
|
|
||||||
lambda bare_from_jid: True),
|
|
||||||
("default_account", "boolean", None,
|
|
||||||
default_account_post_func,
|
|
||||||
default_account_default_func)]
|
|
||||||
|
|
||||||
get_register_fields = classmethod(_get_register_fields)
|
|
||||||
|
|
||||||
get_default_status_msg = _get_default_status_msg
|
|
||||||
|
|
||||||
def get_type(self):
|
def get_type(self):
|
||||||
if self.tls:
|
if self.tls:
|
||||||
@@ -806,6 +722,82 @@ class SMTPAccount(Account):
|
|||||||
_email[header_name] = Header(other_headers[header_name])
|
_email[header_name] = Header(other_headers[header_name])
|
||||||
return _email
|
return _email
|
||||||
|
|
||||||
|
def _get_register_fields (cls, real_class=None):
|
||||||
|
""" """
|
||||||
|
def default_account_default_func(bare_from_jid):
|
||||||
|
accounts = account.get_accounts(bare_from_jid, AbstractSMTPAccount,
|
||||||
|
(AbstractSMTPAccount.q.default_account == True))
|
||||||
|
if accounts.count() == 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def default_account_post_func(value, default_func, bare_from_jid):
|
||||||
|
accounts = account.get_accounts(bare_from_jid, AbstractSMTPAccount,
|
||||||
|
(AbstractSMTPAccount.q.default_account == True))
|
||||||
|
already_default_account = (accounts.count() != 0)
|
||||||
|
if isinstance(value, str):
|
||||||
|
value = value.lower()
|
||||||
|
bool_value = (value == "true" or value == "1")
|
||||||
|
else:
|
||||||
|
bool_value = value
|
||||||
|
if bool_value:
|
||||||
|
if already_default_account:
|
||||||
|
for _account in accounts:
|
||||||
|
_account.default_account = False
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
if not already_default_account:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if real_class is None:
|
||||||
|
real_class = cls
|
||||||
|
return Account.get_register_fields(real_class) + \
|
||||||
|
[("default_account", "boolean", None,
|
||||||
|
default_account_post_func,
|
||||||
|
default_account_default_func),
|
||||||
|
("default_from", "text-single", None,
|
||||||
|
lambda field_value, default_func, bare_from_jid: \
|
||||||
|
account.mandatory_field("default_from", field_value),
|
||||||
|
lambda bare_from_jid: "")]
|
||||||
|
|
||||||
|
get_register_fields = classmethod(_get_register_fields)
|
||||||
|
|
||||||
|
smtp_default_login = ''
|
||||||
|
smtp_default_password = ''
|
||||||
|
smtp_default_host = "localhost"
|
||||||
|
smtp_default_port = 25
|
||||||
|
smtp_default_tls = False
|
||||||
|
|
||||||
|
class GlobalSMTPAccount(AbstractSMTPAccount):
|
||||||
|
"""SMTP Account to send email with global settings"""
|
||||||
|
login = StringCol(default=lambda: smtp_default_login)
|
||||||
|
password = StringCol(default=lambda: smtp_default_password)
|
||||||
|
host = StringCol(default=lambda: smtp_default_host)
|
||||||
|
port = IntCol(default=lambda: smtp_default_port)
|
||||||
|
tls = BoolCol(default=lambda: smtp_default_tls)
|
||||||
|
store_password = BoolCol(default=True)
|
||||||
|
waiting_password_reply = BoolCol(default=False)
|
||||||
|
|
||||||
|
def _init(self, *args, **kw):
|
||||||
|
"""SMTPAccount init
|
||||||
|
Initialize class attributes"""
|
||||||
|
AbstractSMTPAccount._init(self, *args, **kw)
|
||||||
|
self.__logger = logging.getLogger("jmc.model.account.GlobalSMTPAccount")
|
||||||
|
|
||||||
|
def _get_register_fields(cls, real_class=None):
|
||||||
|
"""See Account._get_register_fields
|
||||||
|
"""
|
||||||
|
if real_class is None:
|
||||||
|
real_class = cls
|
||||||
|
return AbstractSMTPAccount.get_register_fields(real_class)
|
||||||
|
|
||||||
|
get_register_fields = classmethod(_get_register_fields)
|
||||||
|
|
||||||
|
get_default_status_msg = _get_default_status_msg
|
||||||
|
|
||||||
def __say_hello(self, connection):
|
def __say_hello(self, connection):
|
||||||
if not (200 <= connection.ehlo()[0] <= 299):
|
if not (200 <= connection.ehlo()[0] <= 299):
|
||||||
(code, resp) = connection.helo()
|
(code, resp) = connection.helo()
|
||||||
@@ -819,7 +811,6 @@ class SMTPAccount(Account):
|
|||||||
smtp_connection = smtplib.SMTP()
|
smtp_connection = smtplib.SMTP()
|
||||||
if self.__logger.getEffectiveLevel() == logging.DEBUG:
|
if self.__logger.getEffectiveLevel() == logging.DEBUG:
|
||||||
smtp_connection.set_debuglevel(1)
|
smtp_connection.set_debuglevel(1)
|
||||||
|
|
||||||
# It seems there is a bug that set self.port to something that is
|
# It seems there is a bug that set self.port to something that is
|
||||||
# not an integer. How ? Here is a temporary workaround.
|
# not an integer. How ? Here is a temporary workaround.
|
||||||
from types import IntType
|
from types import IntType
|
||||||
@@ -828,7 +819,6 @@ class SMTPAccount(Account):
|
|||||||
+ str(type(self.port)) + ", value: "
|
+ str(type(self.port)) + ", value: "
|
||||||
+ str(self.port))
|
+ str(self.port))
|
||||||
self.port = int(self.port)
|
self.port = int(self.port)
|
||||||
|
|
||||||
smtp_connection.connect(self.host, self.port)
|
smtp_connection.connect(self.host, self.port)
|
||||||
self.__say_hello(smtp_connection)
|
self.__say_hello(smtp_connection)
|
||||||
if self.tls:
|
if self.tls:
|
||||||
@@ -857,3 +847,44 @@ class SMTPAccount(Account):
|
|||||||
smtp_connection.sendmail(str(_email['From']), str(_email['To']),
|
smtp_connection.sendmail(str(_email['From']), str(_email['To']),
|
||||||
_email.as_string())
|
_email.as_string())
|
||||||
smtp_connection.quit()
|
smtp_connection.quit()
|
||||||
|
|
||||||
|
class SMTPAccount(GlobalSMTPAccount):
|
||||||
|
"""Send email account"""
|
||||||
|
|
||||||
|
def _init(self, *args, **kw):
|
||||||
|
"""SMTPAccount init
|
||||||
|
Initialize class attributes"""
|
||||||
|
GlobalSMTPAccount._init(self, *args, **kw)
|
||||||
|
self.__logger = logging.getLogger("jmc.model.account.SMTPAccount")
|
||||||
|
|
||||||
|
def _get_register_fields(cls, real_class=None):
|
||||||
|
"""See Account._get_register_fields
|
||||||
|
"""
|
||||||
|
def password_post_func(password, default_func, bare_from_jid):
|
||||||
|
if password is None or password == "":
|
||||||
|
return None
|
||||||
|
return password
|
||||||
|
|
||||||
|
if real_class is None:
|
||||||
|
real_class = cls
|
||||||
|
return GlobalSMTPAccount.get_register_fields(real_class) + \
|
||||||
|
[("login", "text-single", None,
|
||||||
|
account.default_post_func,
|
||||||
|
lambda bare_from_jid: smtp_default_login),
|
||||||
|
("password", "text-private", None, password_post_func,
|
||||||
|
lambda bare_from_jid: smtp_default_password),
|
||||||
|
("host", "text-single", None,
|
||||||
|
lambda field_value, default_func, bare_from_jid: \
|
||||||
|
account.mandatory_field("host", field_value),
|
||||||
|
lambda bare_from_jid: smtp_default_host),
|
||||||
|
("port", "text-single", None,
|
||||||
|
account.int_post_func,
|
||||||
|
lambda bare_from_jid: smtp_default_port),
|
||||||
|
("tls", "boolean", None,
|
||||||
|
account.default_post_func,
|
||||||
|
lambda bare_from_jid: smtp_default_tls),
|
||||||
|
("store_password", "boolean", None,
|
||||||
|
account.default_post_func,
|
||||||
|
lambda bare_from_jid: True)]
|
||||||
|
|
||||||
|
get_register_fields = classmethod(_get_register_fields)
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ import thread
|
|||||||
from jcl.tests import JCLTestCase
|
from jcl.tests import JCLTestCase
|
||||||
import jcl.model as model
|
import jcl.model as model
|
||||||
from jcl.model.account import Account, PresenceAccount, User
|
from jcl.model.account import Account, PresenceAccount, User
|
||||||
from jmc.model.account import MailAccount, POP3Account, IMAPAccount, SMTPAccount
|
from jmc.model.account import MailAccount, POP3Account, IMAPAccount, \
|
||||||
|
GlobalSMTPAccount, AbstractSMTPAccount, SMTPAccount
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
|
|
||||||
from jcl.model.tests.account import Account_TestCase, \
|
from jcl.model.tests.account import Account_TestCase, \
|
||||||
@@ -795,82 +796,72 @@ class IMAPAccount_TestCase(InheritableAccount_TestCase):
|
|||||||
status_msg = self.imap_account.get_default_status_msg(Lang.en)
|
status_msg = self.imap_account.get_default_status_msg(Lang.en)
|
||||||
self.assertEquals(status_msg, "imaps://login@localhost:1143")
|
self.assertEquals(status_msg, "imaps://login@localhost:1143")
|
||||||
|
|
||||||
class SMTPAccount_TestCase(Account_TestCase):
|
class AbstractSMTPAccount_TestCase(Account_TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
JCLTestCase.setUp(self, tables=[Account, ExampleAccount, User,
|
JCLTestCase.setUp(self, tables=[Account, ExampleAccount, User,
|
||||||
SMTPAccount])
|
GlobalSMTPAccount, AbstractSMTPAccount])
|
||||||
self.account_class = SMTPAccount
|
self.account_class = AbstractSMTPAccount
|
||||||
|
|
||||||
def test_default_account_post_func_no_default_true(self):
|
def test_default_account_post_func_no_default_true(self):
|
||||||
model.db_connect()
|
|
||||||
user1 = User(jid="user1@test.com")
|
user1 = User(jid="user1@test.com")
|
||||||
account11 = SMTPAccount(user=user1,
|
account11 = AbstractSMTPAccount(user=user1,
|
||||||
name="account11",
|
name="account11",
|
||||||
jid="account11@jmc.test.com")
|
jid="account11@jmc.test.com")
|
||||||
account12 = SMTPAccount(user=user1,
|
account12 = AbstractSMTPAccount(user=user1,
|
||||||
name="account12",
|
name="account12",
|
||||||
jid="account12@jmc.test.com")
|
jid="account12@jmc.test.com")
|
||||||
(name, field_type, field_options, post_func, default_func) = \
|
(name, field_type, field_options, post_func, default_func) = \
|
||||||
SMTPAccount.get_register_fields()[7]
|
AbstractSMTPAccount.get_register_fields()[0]
|
||||||
value = post_func("True", None, "user1@test.com")
|
value = post_func("True", None, "user1@test.com")
|
||||||
self.assertTrue(value)
|
self.assertTrue(value)
|
||||||
model.db_disconnect()
|
|
||||||
|
|
||||||
def test_default_account_post_func_no_default_false(self):
|
def test_default_account_post_func_no_default_false(self):
|
||||||
model.db_connect()
|
|
||||||
user1 = User(jid="user1@test.com")
|
user1 = User(jid="user1@test.com")
|
||||||
account11 = SMTPAccount(user=user1,
|
account11 = AbstractSMTPAccount(user=user1,
|
||||||
name="account11",
|
name="account11",
|
||||||
jid="account11@jmc.test.com")
|
jid="account11@jmc.test.com")
|
||||||
account12 = SMTPAccount(user=user1,
|
account12 = AbstractSMTPAccount(user=user1,
|
||||||
name="account12",
|
name="account12",
|
||||||
jid="account12@jmc.test.com")
|
jid="account12@jmc.test.com")
|
||||||
(name, field_type, field_options, post_func, default_func) = \
|
(name, field_type, field_options, post_func, default_func) = \
|
||||||
SMTPAccount.get_register_fields()[7]
|
AbstractSMTPAccount.get_register_fields()[0]
|
||||||
value = post_func("False", None, "user1@test.com")
|
value = post_func("False", None, "user1@test.com")
|
||||||
self.assertTrue(value)
|
self.assertTrue(value)
|
||||||
model.db_disconnect()
|
|
||||||
|
|
||||||
def test_default_account_post_func_true(self):
|
def test_default_account_post_func_true(self):
|
||||||
model.db_connect()
|
|
||||||
user1 = User(jid="user1@test.com")
|
user1 = User(jid="user1@test.com")
|
||||||
account11 = SMTPAccount(user=user1,
|
account11 = AbstractSMTPAccount(user=user1,
|
||||||
name="account11",
|
name="account11",
|
||||||
jid="account11@jmc.test.com")
|
jid="account11@jmc.test.com")
|
||||||
account12 = SMTPAccount(user=user1,
|
account12 = AbstractSMTPAccount(user=user1,
|
||||||
name="account12",
|
name="account12",
|
||||||
jid="account12@jmc.test.com")
|
jid="account12@jmc.test.com")
|
||||||
account12.default_account = True
|
account12.default_account = True
|
||||||
(name, field_type, field_options, post_func, default_func) = \
|
(name, field_type, field_options, post_func, default_func) = \
|
||||||
SMTPAccount.get_register_fields()[7]
|
AbstractSMTPAccount.get_register_fields()[0]
|
||||||
value = post_func("True", None, "user1@test.com")
|
value = post_func("True", None, "user1@test.com")
|
||||||
self.assertTrue(value)
|
self.assertTrue(value)
|
||||||
self.assertFalse(account12.default_account)
|
self.assertFalse(account12.default_account)
|
||||||
model.db_disconnect()
|
|
||||||
|
|
||||||
def test_default_account_post_func_false(self):
|
def test_default_account_post_func_false(self):
|
||||||
model.db_connect()
|
|
||||||
user1 = User(jid="user1@test.com")
|
user1 = User(jid="user1@test.com")
|
||||||
account11 = SMTPAccount(user=user1,
|
account11 = AbstractSMTPAccount(user=user1,
|
||||||
name="account11",
|
name="account11",
|
||||||
jid="account11@jmc.test.com")
|
jid="account11@jmc.test.com")
|
||||||
account12 = SMTPAccount(user=user1,
|
account12 = AbstractSMTPAccount(user=user1,
|
||||||
name="account12",
|
name="account12",
|
||||||
jid="account12@jmc.test.com")
|
jid="account12@jmc.test.com")
|
||||||
account12.default_account = True
|
account12.default_account = True
|
||||||
(name, field_type, field_options, post_func, default_func) = \
|
(name, field_type, field_options, post_func, default_func) = \
|
||||||
SMTPAccount.get_register_fields()[7]
|
AbstractSMTPAccount.get_register_fields()[0]
|
||||||
value = post_func("False", None, "user1@test.com")
|
value = post_func("False", None, "user1@test.com")
|
||||||
self.assertFalse(value)
|
self.assertFalse(value)
|
||||||
self.assertTrue(account12.default_account)
|
self.assertTrue(account12.default_account)
|
||||||
model.db_disconnect()
|
|
||||||
|
|
||||||
def test_create_email(self):
|
def test_create_email(self):
|
||||||
model.db_connect()
|
account11 = AbstractSMTPAccount(user=User(jid="user1@test.com"),
|
||||||
account11 = SMTPAccount(user=User(jid="user1@test.com"),
|
|
||||||
name="account11",
|
name="account11",
|
||||||
jid="account11@jmc.test.com")
|
jid="account11@jmc.test.com")
|
||||||
model.db_disconnect()
|
|
||||||
email = account11.create_email("from@test.com",
|
email = account11.create_email("from@test.com",
|
||||||
"to@test.com",
|
"to@test.com",
|
||||||
"subject",
|
"subject",
|
||||||
@@ -881,11 +872,9 @@ class SMTPAccount_TestCase(Account_TestCase):
|
|||||||
self.assertEqual(email.get_payload(), "body")
|
self.assertEqual(email.get_payload(), "body")
|
||||||
|
|
||||||
def test_create_email_other_headers(self):
|
def test_create_email_other_headers(self):
|
||||||
model.db_connect()
|
account11 = AbstractSMTPAccount(user=User(jid="user1@test.com"),
|
||||||
account11 = SMTPAccount(user=User(jid="user1@test.com"),
|
|
||||||
name="account11",
|
name="account11",
|
||||||
jid="account11@jmc.test.com")
|
jid="account11@jmc.test.com")
|
||||||
model.db_disconnect()
|
|
||||||
email = account11.create_email("from@test.com",
|
email = account11.create_email("from@test.com",
|
||||||
"to@test.com",
|
"to@test.com",
|
||||||
"subject",
|
"subject",
|
||||||
@@ -899,6 +888,13 @@ class SMTPAccount_TestCase(Account_TestCase):
|
|||||||
self.assertEqual(email['Cc'], "cc@test.com")
|
self.assertEqual(email['Cc'], "cc@test.com")
|
||||||
self.assertEqual(email.get_payload(), "body")
|
self.assertEqual(email.get_payload(), "body")
|
||||||
|
|
||||||
|
class SMTPAccount_TestCase(Account_TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
JCLTestCase.setUp(self, tables=[Account, ExampleAccount, User,
|
||||||
|
GlobalSMTPAccount,
|
||||||
|
AbstractSMTPAccount, SMTPAccount])
|
||||||
|
self.account_class = SMTPAccount
|
||||||
|
|
||||||
def make_test(self, responses=None, queries=None, core=None):
|
def make_test(self, responses=None, queries=None, core=None):
|
||||||
def inner():
|
def inner():
|
||||||
self.server = server.DummyServer("localhost", 1025)
|
self.server = server.DummyServer("localhost", 1025)
|
||||||
@@ -1100,6 +1096,7 @@ def suite():
|
|||||||
suite.addTest(unittest.makeSuite(MailAccount_TestCase, 'test'))
|
suite.addTest(unittest.makeSuite(MailAccount_TestCase, 'test'))
|
||||||
suite.addTest(unittest.makeSuite(POP3Account_TestCase, 'test'))
|
suite.addTest(unittest.makeSuite(POP3Account_TestCase, 'test'))
|
||||||
suite.addTest(unittest.makeSuite(IMAPAccount_TestCase, 'test'))
|
suite.addTest(unittest.makeSuite(IMAPAccount_TestCase, 'test'))
|
||||||
|
suite.addTest(unittest.makeSuite(AbstractSMTPAccount_TestCase, 'test'))
|
||||||
suite.addTest(unittest.makeSuite(SMTPAccount_TestCase, 'test'))
|
suite.addTest(unittest.makeSuite(SMTPAccount_TestCase, 'test'))
|
||||||
return suite
|
return suite
|
||||||
|
|
||||||
|
|||||||
@@ -22,10 +22,14 @@
|
|||||||
|
|
||||||
from jcl.runner import JCLRunner
|
from jcl.runner import JCLRunner
|
||||||
|
|
||||||
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, SMTPAccount
|
import jmc.model.account as account
|
||||||
|
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
||||||
|
AbstractSMTPAccount, GlobalSMTPAccount, SMTPAccount
|
||||||
from jmc.jabber.component import MailComponent
|
from jmc.jabber.component import MailComponent
|
||||||
from jmc.lang import Lang
|
from jmc.lang import Lang
|
||||||
|
|
||||||
|
from sqlobject import *
|
||||||
|
|
||||||
class JMCRunner(JCLRunner):
|
class JMCRunner(JCLRunner):
|
||||||
|
|
||||||
def __init__(self, component_name, component_version):
|
def __init__(self, component_name, component_version):
|
||||||
@@ -34,12 +38,49 @@ class JMCRunner(JCLRunner):
|
|||||||
# define new options
|
# define new options
|
||||||
self.check_interval = 1
|
self.check_interval = 1
|
||||||
self.mail_default_encoding = "iso-8859-1"
|
self.mail_default_encoding = "iso-8859-1"
|
||||||
|
self.smtp_default_login = None
|
||||||
|
self.smtp_default_password = None
|
||||||
|
self.smtp_default_host = None
|
||||||
|
self.smtp_default_port = 0
|
||||||
|
self.smtp_default_tls = False
|
||||||
|
self.smtp_default_label = None
|
||||||
|
self.enable_smtp_default_account = False
|
||||||
self.options += [("i:", "check-interval=", "jmc",
|
self.options += [("i:", "check-interval=", "jmc",
|
||||||
" INTERVAL\t\t\tInterval unit in minute between mail checks",
|
" INTERVAL\t\t\tInterval unit in minutes between mail checks",
|
||||||
lambda arg: setattr(self, "check_interval", int(arg))),
|
lambda arg: self.set_attr("check_interval",
|
||||||
|
int(arg))),
|
||||||
("e:", "mail-default-encoding=", "jmc",
|
("e:", "mail-default-encoding=", "jmc",
|
||||||
" ENCODING\t\tDefault encoding of the component",
|
" ENCODING\t\tDefault encoding of the component",
|
||||||
lambda arg: setattr(self, "mail_default_encoding", arg))]
|
lambda arg: self.set_attr("mail_default_encoding",
|
||||||
|
arg)),
|
||||||
|
("g:", "smtp-default-login=", "smtp",
|
||||||
|
" LOGIN\t\t\tDefault SMTP login",
|
||||||
|
lambda arg: self.set_attr("smtp_default_login", arg)),
|
||||||
|
("a:", "smtp-default-password=", "smtp",
|
||||||
|
" PASSWORD\t\tDefault SMTP password",
|
||||||
|
lambda arg: self.set_attr("smtp_default_password",
|
||||||
|
arg)),
|
||||||
|
("t:", "smtp-default-host=", "smtp",
|
||||||
|
" HOST\t\t\tDefault SMTP host",
|
||||||
|
lambda arg: self.set_attr("smtp_default_host", arg)),
|
||||||
|
("r:", "smtp-default-port=", "smtp",
|
||||||
|
" PORT\t\t\tDefault SMTP port",
|
||||||
|
lambda arg: self.set_attr("smtp_default_port",
|
||||||
|
int(arg))),
|
||||||
|
("m:", "smtp-default-tls=", "smtp",
|
||||||
|
" True/False\t\tDefault SMTP TLS connexion",
|
||||||
|
lambda arg: self.set_attr("smtp_default_tls",
|
||||||
|
arg.lower() == "true" \
|
||||||
|
or arg == "1")),
|
||||||
|
("n:", "enable-smtp-default-account=", "smtp",
|
||||||
|
" True/False\t\tEnable default SMTP connexion",
|
||||||
|
lambda arg: self.set_attr("enable_smtp_default_account",
|
||||||
|
arg.lower() == "true" \
|
||||||
|
or arg == "1")),
|
||||||
|
("b:", "smtp-default-label=", "smtp",
|
||||||
|
"\t\t\tDefault SMTP account label",
|
||||||
|
lambda arg: self.set_attr("smtp_default_label",
|
||||||
|
arg))]
|
||||||
# override JCL default
|
# override JCL default
|
||||||
self.service_jid = "jmc.localhost"
|
self.service_jid = "jmc.localhost"
|
||||||
self.db_url = "sqlite:///var/spool/jabber/jmc.db"
|
self.db_url = "sqlite:///var/spool/jabber/jmc.db"
|
||||||
@@ -51,8 +92,26 @@ class JMCRunner(JCLRunner):
|
|||||||
MailAccount.createTable(ifNotExists=True)
|
MailAccount.createTable(ifNotExists=True)
|
||||||
IMAPAccount.createTable(ifNotExists=True)
|
IMAPAccount.createTable(ifNotExists=True)
|
||||||
POP3Account.createTable(ifNotExists=True)
|
POP3Account.createTable(ifNotExists=True)
|
||||||
|
AbstractSMTPAccount.createTable(ifNotExists=True)
|
||||||
|
GlobalSMTPAccount.createTable(ifNotExists=True)
|
||||||
SMTPAccount.createTable(ifNotExists=True)
|
SMTPAccount.createTable(ifNotExists=True)
|
||||||
|
|
||||||
|
def setup_smtp_default(self):
|
||||||
|
"""Replace default values for GlobalSMTPAccount"""
|
||||||
|
if self.smtp_default_login:
|
||||||
|
account.smtp_default_login = self.smtp_default_login
|
||||||
|
if self.smtp_default_password:
|
||||||
|
account.smtp_default_password = self.smtp_default_password
|
||||||
|
if self.smtp_default_host:
|
||||||
|
account.smtp_default_host = self.smtp_default_host
|
||||||
|
if self.smtp_default_port:
|
||||||
|
account.smtp_default_port = self.smtp_default_port
|
||||||
|
if self.smtp_default_tls:
|
||||||
|
account.smtp_default_tls = self.smtp_default_tls
|
||||||
|
if self.smtp_default_label:
|
||||||
|
Lang().get_default_lang_class().type_globalsmtp_name = \
|
||||||
|
self.smtp_default_label
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
def run_func():
|
def run_func():
|
||||||
component = MailComponent(jid=self.service_jid,
|
component = MailComponent(jid=self.service_jid,
|
||||||
@@ -62,11 +121,14 @@ class JMCRunner(JCLRunner):
|
|||||||
lang=Lang(self.language),
|
lang=Lang(self.language),
|
||||||
config=self.config,
|
config=self.config,
|
||||||
config_file=self.config_file)
|
config_file=self.config_file)
|
||||||
|
if self.enable_smtp_default_account:
|
||||||
|
component.account_manager.account_classes += (GlobalSMTPAccount,)
|
||||||
MailAccount.default_encoding = self.mail_default_encoding
|
MailAccount.default_encoding = self.mail_default_encoding
|
||||||
component.check_interval = self.check_interval
|
component.check_interval = self.check_interval
|
||||||
component.disco_identity.set_category("gateway")
|
component.disco_identity.set_category("gateway")
|
||||||
component.disco_identity.set_type("smtp")
|
component.disco_identity.set_type("smtp")
|
||||||
return component.run()
|
return component.run()
|
||||||
|
self.setup_smtp_default()
|
||||||
self._run(run_func)
|
self._run(run_func)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|||||||
@@ -23,4 +23,11 @@ log_file: /tmp/jmc.log
|
|||||||
mail_default_encoding: test_iso-8859-1
|
mail_default_encoding: test_iso-8859-1
|
||||||
check_interval: 2
|
check_interval: 2
|
||||||
|
|
||||||
|
[smtp]
|
||||||
|
smtp_default_login: testlogin
|
||||||
|
smtp_default_password: testpassword
|
||||||
|
smtp_default_host: testhost
|
||||||
|
smtp_default_port: 2525
|
||||||
|
smtp_default_tls: True
|
||||||
|
smtp_default_label: SMTP Server
|
||||||
|
enable_smtp_default_account: True
|
||||||
|
|||||||
@@ -24,14 +24,19 @@ import unittest
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from jcl.tests import JCLTestCase
|
||||||
from jcl.tests.runner import JCLRunner_TestCase
|
from jcl.tests.runner import JCLRunner_TestCase
|
||||||
|
|
||||||
import jcl.model as model
|
import jcl.model as model
|
||||||
from jcl.model.account import Account, PresenceAccount, User, LegacyJID
|
from jcl.model.account import Account, PresenceAccount, User, LegacyJID
|
||||||
|
|
||||||
import jmc
|
import jmc
|
||||||
|
from jmc.lang import Lang
|
||||||
from jmc.runner import JMCRunner
|
from jmc.runner import JMCRunner
|
||||||
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, SMTPAccount
|
from jmc.jabber.component import MailComponent
|
||||||
|
import jmc.model.account as account
|
||||||
|
from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \
|
||||||
|
AbstractSMTPAccount, GlobalSMTPAccount, SMTPAccount
|
||||||
|
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
DB_PATH = "/c|/temp/test.db"
|
DB_PATH = "/c|/temp/test.db"
|
||||||
@@ -39,13 +44,29 @@ else:
|
|||||||
DB_PATH = "/tmp/test.db"
|
DB_PATH = "/tmp/test.db"
|
||||||
DB_URL = "sqlite://" + DB_PATH# + "?debug=1&debugThreading=1"
|
DB_URL = "sqlite://" + DB_PATH# + "?debug=1&debugThreading=1"
|
||||||
|
|
||||||
class JMCRunner_TestCase(JCLRunner_TestCase):
|
class JMCRunner_TestCase(JCLRunner_TestCase, JCLTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
JCLTestCase.setUp(self, tables=[Account, PresenceAccount, User,
|
||||||
|
GlobalSMTPAccount, AbstractSMTPAccount])
|
||||||
self.runner = JMCRunner("Jabber Mail Component", jmc.version)
|
self.runner = JMCRunner("Jabber Mail Component", jmc.version)
|
||||||
|
self.smtp_default_login = account.smtp_default_login
|
||||||
|
self.smtp_default_password = account.smtp_default_password
|
||||||
|
self.smtp_default_host = account.smtp_default_host
|
||||||
|
self.smtp_default_port = account.smtp_default_port
|
||||||
|
self.smtp_default_tls = account.smtp_default_tls
|
||||||
|
self.mail_default_encoding = MailAccount.default_encoding
|
||||||
|
self.type_globalsmtp_name = Lang.en.type_globalsmtp_name
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.runner = None
|
self.runner = None
|
||||||
sys.argv = [""]
|
sys.argv = [""]
|
||||||
|
account.smtp_default_login = self.smtp_default_login
|
||||||
|
account.smtp_default_password = self.smtp_default_password
|
||||||
|
account.smtp_default_host = self.smtp_default_host
|
||||||
|
account.smtp_default_port = self.smtp_default_port
|
||||||
|
account.smtp_default_tls = self.smtp_default_tls
|
||||||
|
MailAccount.default_encoding = self.mail_default_encoding
|
||||||
|
Lang.en.type_globalsmtp_name = self.type_globalsmtp_name
|
||||||
|
|
||||||
def test_configure_default(self):
|
def test_configure_default(self):
|
||||||
self.runner.configure()
|
self.runner.configure()
|
||||||
@@ -60,6 +81,24 @@ class JMCRunner_TestCase(JCLRunner_TestCase):
|
|||||||
self.assertFalse(self.runner.debug)
|
self.assertFalse(self.runner.debug)
|
||||||
self.assertEquals(self.runner.mail_default_encoding, "iso-8859-1")
|
self.assertEquals(self.runner.mail_default_encoding, "iso-8859-1")
|
||||||
self.assertEquals(self.runner.check_interval, 1)
|
self.assertEquals(self.runner.check_interval, 1)
|
||||||
|
self.assertEquals(self.runner.smtp_default_login, None)
|
||||||
|
self.assertEquals(self.runner.smtp_default_password, None)
|
||||||
|
self.assertEquals(self.runner.smtp_default_host, None)
|
||||||
|
self.assertEquals(self.runner.smtp_default_port, 0)
|
||||||
|
self.assertEquals(self.runner.smtp_default_tls, False)
|
||||||
|
self.assertEquals(self.runner.enable_smtp_default_account, False)
|
||||||
|
self.assertEquals(self.runner.smtp_default_label, None)
|
||||||
|
self.runner.setup_smtp_default()
|
||||||
|
self.assertEquals(Lang.en.type_globalsmtp_name,
|
||||||
|
"Default SMTP Server")
|
||||||
|
_account = GlobalSMTPAccount(user=User(jid="user1@test.com"),
|
||||||
|
name="account1",
|
||||||
|
jid="account1@jmc.test.com")
|
||||||
|
self.assertEquals(_account.login, '')
|
||||||
|
self.assertEquals(_account.password, '')
|
||||||
|
self.assertEquals(_account.host, 'localhost')
|
||||||
|
self.assertEquals(_account.port, 25)
|
||||||
|
self.assertEquals(_account.tls, False)
|
||||||
|
|
||||||
def test_configure_configfile(self):
|
def test_configure_configfile(self):
|
||||||
self.runner.config_file = "src/jmc/tests/jmc.conf"
|
self.runner.config_file = "src/jmc/tests/jmc.conf"
|
||||||
@@ -72,8 +111,26 @@ class JMCRunner_TestCase(JCLRunner_TestCase):
|
|||||||
self.assertEquals(self.runner.db_url, "test_sqlite://root@localhost/var/spool/jabber/test_jmc.db")
|
self.assertEquals(self.runner.db_url, "test_sqlite://root@localhost/var/spool/jabber/test_jmc.db")
|
||||||
self.assertEquals(self.runner.pid_file, "/var/run/jabber/test_jmc.pid")
|
self.assertEquals(self.runner.pid_file, "/var/run/jabber/test_jmc.pid")
|
||||||
self.assertFalse(self.runner.debug)
|
self.assertFalse(self.runner.debug)
|
||||||
self.assertEquals(self.runner.mail_default_encoding, "test_iso-8859-1")
|
|
||||||
self.assertEquals(self.runner.check_interval, 2)
|
self.assertEquals(self.runner.check_interval, 2)
|
||||||
|
self.assertEquals(self.runner.mail_default_encoding, "test_iso-8859-1")
|
||||||
|
self.assertEquals(self.runner.smtp_default_login, "testlogin")
|
||||||
|
self.assertEquals(self.runner.smtp_default_password, "testpassword")
|
||||||
|
self.assertEquals(self.runner.smtp_default_host, "testhost")
|
||||||
|
self.assertEquals(self.runner.smtp_default_port, 2525)
|
||||||
|
self.assertEquals(self.runner.smtp_default_tls, True)
|
||||||
|
self.assertEquals(self.runner.enable_smtp_default_account, True)
|
||||||
|
self.assertEquals(self.runner.smtp_default_label, "SMTP Server")
|
||||||
|
self.runner.setup_smtp_default()
|
||||||
|
self.assertEquals(Lang.en.type_globalsmtp_name,
|
||||||
|
"SMTP Server")
|
||||||
|
_account = GlobalSMTPAccount(user=User(jid="user1@test.com"),
|
||||||
|
name="account1",
|
||||||
|
jid="account1@jmc.test.com")
|
||||||
|
self.assertEquals(_account.login, 'testlogin')
|
||||||
|
self.assertEquals(_account.password, 'testpassword')
|
||||||
|
self.assertEquals(_account.host, 'testhost')
|
||||||
|
self.assertEquals(_account.port, 2525)
|
||||||
|
self.assertEquals(_account.tls, True)
|
||||||
|
|
||||||
def test_configure_uncomplete_configfile(self):
|
def test_configure_uncomplete_configfile(self):
|
||||||
self.runner.config_file = "src/jmc/tests/uncomplete_jmc.conf"
|
self.runner.config_file = "src/jmc/tests/uncomplete_jmc.conf"
|
||||||
@@ -86,18 +143,45 @@ class JMCRunner_TestCase(JCLRunner_TestCase):
|
|||||||
self.assertEquals(self.runner.db_url, "test_sqlite://root@localhost/var/spool/jabber/test_jmc.db")
|
self.assertEquals(self.runner.db_url, "test_sqlite://root@localhost/var/spool/jabber/test_jmc.db")
|
||||||
self.assertEquals(self.runner.pid_file, "/var/run/jabber/test_jmc.pid")
|
self.assertEquals(self.runner.pid_file, "/var/run/jabber/test_jmc.pid")
|
||||||
self.assertFalse(self.runner.debug)
|
self.assertFalse(self.runner.debug)
|
||||||
|
self.assertEquals(self.runner.check_interval, 2)
|
||||||
|
self.assertEquals(self.runner.mail_default_encoding, "test_iso-8859-1")
|
||||||
|
self.assertEquals(self.runner.smtp_default_login, None)
|
||||||
|
self.assertEquals(self.runner.smtp_default_password, None)
|
||||||
|
self.assertEquals(self.runner.smtp_default_host, None)
|
||||||
|
self.assertEquals(self.runner.smtp_default_port, 0)
|
||||||
|
self.assertEquals(self.runner.smtp_default_tls, False)
|
||||||
|
self.assertEquals(self.runner.enable_smtp_default_account, False)
|
||||||
|
self.assertEquals(self.runner.smtp_default_label, None)
|
||||||
|
self.runner.setup_smtp_default()
|
||||||
|
self.assertEquals(Lang.en.type_globalsmtp_name,
|
||||||
|
"Default SMTP Server")
|
||||||
|
_account = GlobalSMTPAccount(user=User(jid="user1@test.com"),
|
||||||
|
name="account1",
|
||||||
|
jid="account1@jmc.test.com")
|
||||||
|
self.assertEquals(_account.login, '')
|
||||||
|
self.assertEquals(_account.password, '')
|
||||||
|
self.assertEquals(_account.host, 'localhost')
|
||||||
|
self.assertEquals(_account.port, 25)
|
||||||
|
self.assertEquals(_account.tls, False)
|
||||||
|
|
||||||
def test_configure_commandline_shortopt(self):
|
def test_configure_commandline_shortopt(self):
|
||||||
sys.argv = ["", "-c", "src/jmc/tests/jmc.conf", \
|
sys.argv = ["", "-c", "src/jmc/tests/jmc.conf",
|
||||||
"-S", "test2_localhost", \
|
"-S", "test2_localhost",
|
||||||
"-P", "43", \
|
"-P", "43",
|
||||||
"-s", "test2_secret", \
|
"-s", "test2_secret",
|
||||||
"-j", "test2_jmc.localhost", \
|
"-j", "test2_jmc.localhost",
|
||||||
"-l", "test2_en", \
|
"-l", "test2_en",
|
||||||
"-u", "sqlite:///tmp/test_jmc.db", \
|
"-u", "sqlite:///tmp/test_jmc.db",
|
||||||
"-p", "/tmp/test_jmc.pid", \
|
"-p", "/tmp/test_jmc.pid",
|
||||||
"-e", "test2_iso-8859-1", \
|
"-e", "test2_iso-8859-1",
|
||||||
"-i", "3"]
|
"-i", "3",
|
||||||
|
"-g", "testlogin",
|
||||||
|
"-a", "testpassword",
|
||||||
|
"-t", "testhost",
|
||||||
|
"-r", "2525",
|
||||||
|
"-m", "True",
|
||||||
|
"-n", "True",
|
||||||
|
"-b", "My Global SMTP server"]
|
||||||
self.runner.configure()
|
self.runner.configure()
|
||||||
self.assertEquals(self.runner.server, "test2_localhost")
|
self.assertEquals(self.runner.server, "test2_localhost")
|
||||||
self.assertEquals(self.runner.port, 43)
|
self.assertEquals(self.runner.port, 43)
|
||||||
@@ -109,18 +193,43 @@ class JMCRunner_TestCase(JCLRunner_TestCase):
|
|||||||
self.assertFalse(self.runner.debug)
|
self.assertFalse(self.runner.debug)
|
||||||
self.assertEquals(self.runner.mail_default_encoding, "test2_iso-8859-1")
|
self.assertEquals(self.runner.mail_default_encoding, "test2_iso-8859-1")
|
||||||
self.assertEquals(self.runner.check_interval, 3)
|
self.assertEquals(self.runner.check_interval, 3)
|
||||||
|
self.assertEquals(self.runner.smtp_default_login, "testlogin")
|
||||||
|
self.assertEquals(self.runner.smtp_default_password, "testpassword")
|
||||||
|
self.assertEquals(self.runner.smtp_default_host, "testhost")
|
||||||
|
self.assertEquals(self.runner.smtp_default_port, 2525)
|
||||||
|
self.assertEquals(self.runner.smtp_default_tls, True)
|
||||||
|
self.assertEquals(self.runner.enable_smtp_default_account, True)
|
||||||
|
self.assertEquals(self.runner.smtp_default_label, "My Global SMTP server")
|
||||||
|
self.runner.setup_smtp_default()
|
||||||
|
self.assertEquals(Lang.en.type_globalsmtp_name,
|
||||||
|
"My Global SMTP server")
|
||||||
|
_account = GlobalSMTPAccount(user=User(jid="user1@test.com"),
|
||||||
|
name="account1",
|
||||||
|
jid="account1@jmc.test.com")
|
||||||
|
self.assertEquals(_account.login, 'testlogin')
|
||||||
|
self.assertEquals(_account.password, 'testpassword')
|
||||||
|
self.assertEquals(_account.host, 'testhost')
|
||||||
|
self.assertEquals(_account.port, 2525)
|
||||||
|
self.assertEquals(_account.tls, True)
|
||||||
|
|
||||||
def test_configure_commandline_longopt(self):
|
def test_configure_commandline_longopt(self):
|
||||||
sys.argv = ["", "--config-file", "src/jmc/tests/jmc.conf", \
|
sys.argv = ["", "--config-file", "src/jmc/tests/jmc.conf",
|
||||||
"--server", "test2_localhost", \
|
"--server", "test2_localhost",
|
||||||
"--port", "43", \
|
"--port", "43",
|
||||||
"--secret", "test2_secret", \
|
"--secret", "test2_secret",
|
||||||
"--service-jid", "test2_jmc.localhost", \
|
"--service-jid", "test2_jmc.localhost",
|
||||||
"--language", "test2_en", \
|
"--language", "test2_en",
|
||||||
"--db-url", "sqlite:///tmp/test_jmc.db", \
|
"--db-url", "sqlite:///tmp/test_jmc.db",
|
||||||
"--pid-file", "/tmp/test_jmc.pid", \
|
"--pid-file", "/tmp/test_jmc.pid",
|
||||||
"--mail-default-encoding", "test2_iso-8859-1", \
|
"--mail-default-encoding", "test2_iso-8859-1",
|
||||||
"--check-interval", "4"]
|
"--check-interval", "4",
|
||||||
|
"--smtp-default-login", "testlogin",
|
||||||
|
"--smtp-default-password", "testpassword",
|
||||||
|
"--smtp-default-host", "testhost",
|
||||||
|
"--smtp-default-port", "2525",
|
||||||
|
"--smtp-default-tls", "True",
|
||||||
|
"--enable-smtp-default-account", "True",
|
||||||
|
"--smtp-default-label", "My Global SMTP server"]
|
||||||
self.runner.configure()
|
self.runner.configure()
|
||||||
self.assertEquals(self.runner.server, "test2_localhost")
|
self.assertEquals(self.runner.server, "test2_localhost")
|
||||||
self.assertEquals(self.runner.port, 43)
|
self.assertEquals(self.runner.port, 43)
|
||||||
@@ -132,6 +241,24 @@ class JMCRunner_TestCase(JCLRunner_TestCase):
|
|||||||
self.assertFalse(self.runner.debug)
|
self.assertFalse(self.runner.debug)
|
||||||
self.assertEquals(self.runner.mail_default_encoding, "test2_iso-8859-1")
|
self.assertEquals(self.runner.mail_default_encoding, "test2_iso-8859-1")
|
||||||
self.assertEquals(self.runner.check_interval, 4)
|
self.assertEquals(self.runner.check_interval, 4)
|
||||||
|
self.assertEquals(self.runner.smtp_default_login, "testlogin")
|
||||||
|
self.assertEquals(self.runner.smtp_default_password, "testpassword")
|
||||||
|
self.assertEquals(self.runner.smtp_default_host, "testhost")
|
||||||
|
self.assertEquals(self.runner.smtp_default_port, 2525)
|
||||||
|
self.assertEquals(self.runner.smtp_default_tls, True)
|
||||||
|
self.assertEquals(self.runner.enable_smtp_default_account, True)
|
||||||
|
self.assertEquals(self.runner.smtp_default_label, "My Global SMTP server")
|
||||||
|
self.runner.setup_smtp_default()
|
||||||
|
self.assertEquals(Lang.en.type_globalsmtp_name,
|
||||||
|
"My Global SMTP server")
|
||||||
|
_account = GlobalSMTPAccount(user=User(jid="user1@test.com"),
|
||||||
|
name="account1",
|
||||||
|
jid="account1@jmc.test.com")
|
||||||
|
self.assertEquals(_account.login, 'testlogin')
|
||||||
|
self.assertEquals(_account.password, 'testpassword')
|
||||||
|
self.assertEquals(_account.host, 'testhost')
|
||||||
|
self.assertEquals(_account.port, 2525)
|
||||||
|
self.assertEquals(_account.tls, True)
|
||||||
|
|
||||||
def test__run(self):
|
def test__run(self):
|
||||||
self.runner.pid_file = "/tmp/jmc.pid"
|
self.runner.pid_file = "/tmp/jmc.pid"
|
||||||
@@ -154,6 +281,47 @@ class JMCRunner_TestCase(JCLRunner_TestCase):
|
|||||||
os.unlink(DB_PATH)
|
os.unlink(DB_PATH)
|
||||||
self.assertFalse(os.access("/tmp/jmc.pid", os.F_OK))
|
self.assertFalse(os.access("/tmp/jmc.pid", os.F_OK))
|
||||||
|
|
||||||
|
def test_run_without_smtp_default_account(self):
|
||||||
|
""" """
|
||||||
|
def run_func(mail_component_self):
|
||||||
|
""" """
|
||||||
|
self.assertEquals(mail_component_self.account_manager.account_classes,
|
||||||
|
(IMAPAccount, POP3Account, SMTPAccount))
|
||||||
|
return False
|
||||||
|
|
||||||
|
self.runner.enable_smtp_default_account = False
|
||||||
|
self.runner.pid_file = "/tmp/jmc.pid"
|
||||||
|
self.runner.db_url = DB_URL
|
||||||
|
self.runner.config = None
|
||||||
|
old_run_func = MailComponent.run
|
||||||
|
MailComponent.run = run_func
|
||||||
|
try:
|
||||||
|
self.runner.run()
|
||||||
|
finally:
|
||||||
|
MailComponent.run = old_run_func
|
||||||
|
self.assertFalse(os.access("/tmp/jmc.pid", os.F_OK))
|
||||||
|
|
||||||
|
def test_run_with_smtp_default_account(self):
|
||||||
|
""" """
|
||||||
|
def run_func(mail_component_self):
|
||||||
|
""" """
|
||||||
|
self.assertEquals(mail_component_self.account_manager.account_classes,
|
||||||
|
(IMAPAccount, POP3Account, SMTPAccount,
|
||||||
|
GlobalSMTPAccount))
|
||||||
|
return False
|
||||||
|
|
||||||
|
self.runner.enable_smtp_default_account = True
|
||||||
|
self.runner.pid_file = "/tmp/jmc.pid"
|
||||||
|
self.runner.db_url = DB_URL
|
||||||
|
self.runner.config = None
|
||||||
|
old_run_func = MailComponent.run
|
||||||
|
MailComponent.run = run_func
|
||||||
|
try:
|
||||||
|
self.runner.run()
|
||||||
|
finally:
|
||||||
|
MailComponent.run = old_run_func
|
||||||
|
self.assertFalse(os.access("/tmp/jmc.pid", os.F_OK))
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
test_suite = unittest.TestSuite()
|
test_suite = unittest.TestSuite()
|
||||||
test_suite.addTest(unittest.makeSuite(JMCRunner_TestCase, 'test'))
|
test_suite.addTest(unittest.makeSuite(JMCRunner_TestCase, 'test'))
|
||||||
|
|||||||
Reference in New Issue
Block a user