Merge branch 'fix-unhelpful-smtp-error-5081'
This commit is contained in:
commit
4fcd2e756d
@ -19,6 +19,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
import unittest.mock as mock
|
import unittest.mock as mock
|
||||||
import email
|
import email
|
||||||
|
import socket
|
||||||
import pytest
|
import pytest
|
||||||
import smtplib
|
import smtplib
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
@ -26,6 +27,7 @@ import pkg_resources
|
|||||||
import six
|
import six
|
||||||
|
|
||||||
from mediagoblin.tests.tools import get_app
|
from mediagoblin.tests.tools import get_app
|
||||||
|
from mediagoblin import mg_globals
|
||||||
from mediagoblin.tools import common, url, translate, mail, text, testing
|
from mediagoblin.tools import common, url, translate, mail, text, testing
|
||||||
|
|
||||||
testing._activate_testing()
|
testing._activate_testing()
|
||||||
@ -181,3 +183,30 @@ def test_html_cleaner():
|
|||||||
'<p><a href="javascript:nasty_surprise">innocent link!</a></p>')
|
'<p><a href="javascript:nasty_surprise">innocent link!</a></p>')
|
||||||
assert result == (
|
assert result == (
|
||||||
'<p><a href="">innocent link!</a></p>')
|
'<p><a href="">innocent link!</a></p>')
|
||||||
|
|
||||||
|
|
||||||
|
class TestMail(object):
|
||||||
|
""" Test mediagoblin's mail tool """
|
||||||
|
def test_no_mail_server(self):
|
||||||
|
""" Tests that no smtp server is available """
|
||||||
|
with pytest.raises(mail.NoSMTPServerError), mock.patch("smtplib.SMTP") as smtp_mock:
|
||||||
|
smtp_mock.side_effect = socket.error
|
||||||
|
mg_globals.app_config = {
|
||||||
|
"email_debug_mode": False,
|
||||||
|
"email_smtp_use_ssl": False,
|
||||||
|
"email_smtp_host": "127.0.0.1",
|
||||||
|
"email_smtp_port": 0}
|
||||||
|
common.TESTS_ENABLED = False
|
||||||
|
mail.send_email("", "", "", "")
|
||||||
|
|
||||||
|
def test_no_smtp_host(self):
|
||||||
|
""" Empty email_smtp_host """
|
||||||
|
with pytest.raises(mail.NoSMTPServerError), mock.patch("smtplib.SMTP") as smtp_mock:
|
||||||
|
smtp_mock.return_value.connect.side_effect = socket.error
|
||||||
|
mg_globals.app_config = {
|
||||||
|
"email_debug_mode": False,
|
||||||
|
"email_smtp_use_ssl": False,
|
||||||
|
"email_smtp_host": "",
|
||||||
|
"email_smtp_port": 0}
|
||||||
|
common.TESTS_ENABLED = False
|
||||||
|
mail.send_email("", "", "", "")
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
from __future__ import print_function, unicode_literals
|
from __future__ import print_function, unicode_literals
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import logging
|
||||||
import six
|
import six
|
||||||
import smtplib
|
import smtplib
|
||||||
import sys
|
import sys
|
||||||
@ -54,6 +56,14 @@ EMAIL_TEST_INBOX = []
|
|||||||
EMAIL_TEST_MBOX_INBOX = []
|
EMAIL_TEST_MBOX_INBOX = []
|
||||||
|
|
||||||
|
|
||||||
|
class MailError(Exception):
|
||||||
|
""" General exception for mail errors """
|
||||||
|
|
||||||
|
|
||||||
|
class NoSMTPServerError(MailError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class FakeMhost(object):
|
class FakeMhost(object):
|
||||||
"""
|
"""
|
||||||
Just a fake mail host so we can capture and test messages
|
Just a fake mail host so we can capture and test messages
|
||||||
@ -101,13 +111,27 @@ def send_email(from_addr, to_addrs, subject, message_body):
|
|||||||
else:
|
else:
|
||||||
smtp_init = smtplib.SMTP
|
smtp_init = smtplib.SMTP
|
||||||
|
|
||||||
|
try:
|
||||||
mhost = smtp_init(
|
mhost = smtp_init(
|
||||||
mg_globals.app_config['email_smtp_host'],
|
mg_globals.app_config['email_smtp_host'],
|
||||||
mg_globals.app_config['email_smtp_port'])
|
mg_globals.app_config['email_smtp_port'])
|
||||||
|
except socket.error as original_error:
|
||||||
|
error_message = "Couldn't contact mail server on <{}>:<{}>".format(
|
||||||
|
mg_globals.app_config['email_smtp_host'],
|
||||||
|
mg_globals.app_config['email_smtp_port'])
|
||||||
|
logging.debug(original_error)
|
||||||
|
raise NoSMTPServerError(error_message)
|
||||||
|
|
||||||
# SMTP.__init__ Issues SMTP.connect implicitly if host
|
# SMTP.__init__ Issues SMTP.connect implicitly if host
|
||||||
if not mg_globals.app_config['email_smtp_host']: # e.g. host = ''
|
if not mg_globals.app_config['email_smtp_host']: # e.g. host = ''
|
||||||
|
try:
|
||||||
mhost.connect() # We SMTP.connect explicitly
|
mhost.connect() # We SMTP.connect explicitly
|
||||||
|
except socket.error as original_error:
|
||||||
|
error_message = "Couldn't contact mail server on <{}>:<{}>".format(
|
||||||
|
mg_globals.app_config['email_smtp_host'],
|
||||||
|
mg_globals.app_config['email_smtp_port'])
|
||||||
|
logging.debug(original_error)
|
||||||
|
raise NoSMTPServerError(error_message)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
mhost.starttls()
|
mhost.starttls()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user