예제 #1
0
    def test_send_mail__unencrypted_authorized(self, smtp_mock):
        mail_data = MailData()
        mail_data.recipients = ["*****@*****.**"]
        mail_data.subject = "Test mail"
        mail_data.body = "Test body"
        mailer_config = MailerConfig()
        mailer_config.smtp_host = "localhost"
        mailer_config.smtp_port = 25
        mailer_config.use_starttls = False
        mailer_config.use_ssl = False
        mailer_config.user = "******"
        mailer_config.password = "******"
        mailer_config.sender = "*****@*****.**"

        mailer = Mailer()
        mail = mailer.create_mail(mail_data)
        mailer.send_mail(mailer_config, mail)

        assert smtp_mock.call_count == 1
        assert smtp_mock.call_args == ((mailer_config.smtp_host, mailer_config.smtp_port),)
        assert smtp_mock.return_value.starttls.call_count == 0
        assert smtp_mock.return_value.login.call_count == 1
        assert smtp_mock.return_value.login.call_args == ((mailer_config.user, mailer_config.password),)
        assert smtp_mock.return_value.sendmail.call_count == 1
        assert smtp_mock.return_value.sendmail.call_args == ((mail["From"], mail["To"], mail.as_string()),)
        assert smtp_mock.return_value.quit.call_count == 1
예제 #2
0
    def test_create_mail__attach_text_and_zip(self):
        mail = MailData()
        mail.recipients = ["*****@*****.**"]
        mail.subject = "Test mail"
        mail.body = "Test body"
        mail.file_attachments = ["test.txt", "test.zip"]
        text_file = FileStub("TEXT")
        zip_file = FileStub("BINARY")
        Mailer.open_file = MagicMock(side_effect = [text_file, zip_file])
        mimetypes.guess_type = MagicMock(side_effect = [("text/plain", None), ("application/zip", None)])

        mailer = Mailer()
        result = mailer.create_mail(mail)

        self.assertEqual("*****@*****.**", result["To"])
        self.assertEqual(mail.subject, result["Subject"])
        self.assertTrue(result.is_multipart())
        messages = result.get_payload()
        self.assertEqual(3, len(messages))
        text_message = messages[0]
        self.assertEqual("text/plain", text_message.get_content_type())
        self.assertEqual(mail.body, text_message.get_payload())
        attachment1_message = messages[1]
        self.assertEqual("text/plain", attachment1_message.get_content_type())
        self.assertEqual("TEXT", attachment1_message.get_payload())
        attachment2_message = messages[2]
        self.assertEqual("application/zip", attachment2_message.get_content_type())
        self.assertEqual(base64.b64encode("BINARY"), attachment2_message.get_payload())
예제 #3
0
    def test_create_mail__text_two_recipients(self):
        mail = MailData()
        mail.recipients = ["*****@*****.**", "*****@*****.**"]
        mail.subject = "Test mail"
        mail.body = "Test body"

        mailer = Mailer()
        result = mailer.create_mail(mail)

        self.assertEqual("[email protected], [email protected]", result["To"])
        self.assertEqual(mail.subject, result["Subject"])
        self.assertFalse(result.is_multipart())
        self.assertEqual("text/plain", result.get_content_type())
        self.assertEqual(mail.body, result.get_payload())
예제 #4
0
    def test_create_mail__attach_text(self):
        mail = MailData()
        mail.recipients = ["*****@*****.**"]
        mail.subject = "Test mail"
        mail.body = "Test body"
        mail.file_attachments = ["test.txt"]
        return_file = FileStub("This is text")
        Mailer.open_file = MagicMock(return_value = return_file)
        mimetypes.guess_type = MagicMock(return_value = ("text/plain", None))

        mailer = Mailer()
        result = mailer.create_mail(mail)

        self.assertEqual("*****@*****.**", result["To"])
        self.assertEqual(mail.subject, result["Subject"])
        self.assertTrue(result.is_multipart())
        messages = result.get_payload()
        self.assertEqual(2, len(messages))
        text_message = messages[0]
        self.assertEqual("text/plain", text_message.get_content_type())
        self.assertEqual(mail.body, text_message.get_payload())
        attachment_message = messages[1]
        self.assertEqual("text/plain", attachment_message.get_content_type())
        self.assertEqual("This is text", attachment_message.get_payload())