mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
feat: adds TLS certificate validation option for SMTP (#21272)
This commit is contained in:
committed by
GitHub
parent
994f327157
commit
9fd752057e
@@ -17,6 +17,7 @@
|
||||
# under the License.
|
||||
"""Unit tests for email service in Superset"""
|
||||
import logging
|
||||
import ssl
|
||||
import tempfile
|
||||
import unittest
|
||||
from email.mime.application import MIMEApplication
|
||||
@@ -175,9 +176,35 @@ class TestEmailSmtp(SupersetTestCase):
|
||||
utils.send_mime_email("from", "to", MIMEMultipart(), app.config, dryrun=False)
|
||||
assert not mock_smtp.called
|
||||
mock_smtp_ssl.assert_called_with(
|
||||
app.config["SMTP_HOST"], app.config["SMTP_PORT"]
|
||||
app.config["SMTP_HOST"], app.config["SMTP_PORT"], context=None
|
||||
)
|
||||
|
||||
@mock.patch("smtplib.SMTP_SSL")
|
||||
@mock.patch("smtplib.SMTP")
|
||||
def test_send_mime_ssl_server_auth(self, mock_smtp, mock_smtp_ssl):
|
||||
app.config["SMTP_SSL"] = True
|
||||
app.config["SMTP_SSL_SERVER_AUTH"] = True
|
||||
mock_smtp.return_value = mock.Mock()
|
||||
mock_smtp_ssl.return_value = mock.Mock()
|
||||
utils.send_mime_email("from", "to", MIMEMultipart(), app.config, dryrun=False)
|
||||
assert not mock_smtp.called
|
||||
mock_smtp_ssl.assert_called_with(
|
||||
app.config["SMTP_HOST"], app.config["SMTP_PORT"], context=mock.ANY
|
||||
)
|
||||
called_context = mock_smtp_ssl.call_args.kwargs["context"]
|
||||
self.assertEqual(called_context.verify_mode, ssl.CERT_REQUIRED)
|
||||
|
||||
@mock.patch("smtplib.SMTP")
|
||||
def test_send_mime_tls_server_auth(self, mock_smtp):
|
||||
app.config["SMTP_STARTTLS"] = True
|
||||
app.config["SMTP_SSL_SERVER_AUTH"] = True
|
||||
mock_smtp.return_value = mock.Mock()
|
||||
mock_smtp.return_value.starttls.return_value = mock.Mock()
|
||||
utils.send_mime_email("from", "to", MIMEMultipart(), app.config, dryrun=False)
|
||||
mock_smtp.return_value.starttls.assert_called_with(context=mock.ANY)
|
||||
called_context = mock_smtp.return_value.starttls.call_args.kwargs["context"]
|
||||
self.assertEqual(called_context.verify_mode, ssl.CERT_REQUIRED)
|
||||
|
||||
@mock.patch("smtplib.SMTP_SSL")
|
||||
@mock.patch("smtplib.SMTP")
|
||||
def test_send_mime_noauth(self, mock_smtp, mock_smtp_ssl):
|
||||
|
||||
Reference in New Issue
Block a user