Files @ 4f364ef689ab
Branch filter:

Location: kallithea/kallithea/tests/other/test_mail.py

Thomas De Schampheleire
email: fix double indentation in tests
import mock

import kallithea
from kallithea.tests import *

class smtplib_mock(object):

    @classmethod
    def SMTP(cls, server, port, local_hostname):
        return smtplib_mock()

    def ehlo(self):
        pass
    def quit(self):
        pass
    def sendmail(self, sender, dest, msg):
        smtplib_mock.lastsender = sender
        smtplib_mock.lastdest = dest
        smtplib_mock.lastmsg = msg
        pass

@mock.patch('kallithea.lib.rcmail.smtp_mailer.smtplib', smtplib_mock)
class TestMail(BaseTestCase):

    def test_send_mail_trivial(self):
        mailserver = 'smtp.mailserver.org'
        recipients = ['rcpt1', 'rcpt2']
        envelope_from = 'noreply@mailserver.org'
        subject = 'subject'
        body = 'body'
        html_body = 'html_body'

        config_mock = {
            'smtp_server': mailserver,
            'app_email_from': envelope_from,
        }
        with mock.patch('kallithea.lib.celerylib.tasks.config', config_mock):
            kallithea.lib.celerylib.tasks.send_email(recipients, subject, body, html_body)

        self.assertSetEqual(smtplib_mock.lastdest, set(recipients))
        self.assertEqual(smtplib_mock.lastsender, envelope_from)
        self.assertIn('From: %s' % envelope_from, smtplib_mock.lastmsg)
        self.assertIn('Subject: %s' % subject, smtplib_mock.lastmsg)
        self.assertIn(body, smtplib_mock.lastmsg)
        self.assertIn(html_body, smtplib_mock.lastmsg)

    def test_send_mail_no_recipients(self):
        mailserver = 'smtp.mailserver.org'
        recipients = []
        envelope_from = 'noreply@mailserver.org'
        email_to = 'admin@mailserver.org'
        subject = 'subject'
        body = 'body'
        html_body = 'html_body'

        config_mock = {
            'smtp_server': mailserver,
            'app_email_from': envelope_from,
            'email_to': email_to,
        }
        with mock.patch('kallithea.lib.celerylib.tasks.config', config_mock):
            kallithea.lib.celerylib.tasks.send_email(recipients, subject, body, html_body)

        self.assertSetEqual(smtplib_mock.lastdest, set([TEST_USER_ADMIN_EMAIL, email_to]))
        self.assertEqual(smtplib_mock.lastsender, envelope_from)
        self.assertIn('From: %s' % envelope_from, smtplib_mock.lastmsg)
        self.assertIn('Subject: %s' % subject, smtplib_mock.lastmsg)
        self.assertIn(body, smtplib_mock.lastmsg)
        self.assertIn(html_body, smtplib_mock.lastmsg)

    def test_send_mail_no_recipients_no_email_to(self):
        mailserver = 'smtp.mailserver.org'
        recipients = []
        envelope_from = 'noreply@mailserver.org'
        subject = 'subject'
        body = 'body'
        html_body = 'html_body'

        config_mock = {
            'smtp_server': mailserver,
            'app_email_from': envelope_from,
        }
        with mock.patch('kallithea.lib.celerylib.tasks.config', config_mock):
            kallithea.lib.celerylib.tasks.send_email(recipients, subject, body, html_body)

        self.assertSetEqual(smtplib_mock.lastdest, set([TEST_USER_ADMIN_EMAIL]))
        self.assertEqual(smtplib_mock.lastsender, envelope_from)
        self.assertIn('From: %s' % envelope_from, smtplib_mock.lastmsg)
        self.assertIn('Subject: %s' % subject, smtplib_mock.lastmsg)
        self.assertIn(body, smtplib_mock.lastmsg)
        self.assertIn(html_body, smtplib_mock.lastmsg)