mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
bpo-34246: Use no mutable default args in smtplib (GH-8554)
Some methods of the SMTP class use mutable default arguments. Specially `send_message` is affected as it mutates one of the args by appending items to it, which has side effects on further calls.
This commit is contained in:
parent
4e519377b1
commit
d5fbe9b1a3
5 changed files with 39 additions and 8 deletions
|
@ -20,6 +20,7 @@ import threading
|
|||
import unittest
|
||||
from test import support, mock_socket
|
||||
from test.support import HOST, HOSTv4, HOSTv6
|
||||
from unittest.mock import Mock
|
||||
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
|
@ -578,6 +579,33 @@ class NonConnectingTests(unittest.TestCase):
|
|||
"localhost:bogus")
|
||||
|
||||
|
||||
class DefaultArgumentsTests(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.msg = EmailMessage()
|
||||
self.msg['From'] = 'Páolo <főo@bar.com>'
|
||||
self.smtp = smtplib.SMTP()
|
||||
self.smtp.ehlo = Mock(return_value=(200, 'OK'))
|
||||
self.smtp.has_extn, self.smtp.sendmail = Mock(), Mock()
|
||||
|
||||
def testSendMessage(self):
|
||||
expected_mail_options = ('SMTPUTF8', 'BODY=8BITMIME')
|
||||
self.smtp.send_message(self.msg)
|
||||
self.smtp.send_message(self.msg)
|
||||
self.assertEqual(self.smtp.sendmail.call_args_list[0][0][3],
|
||||
expected_mail_options)
|
||||
self.assertEqual(self.smtp.sendmail.call_args_list[1][0][3],
|
||||
expected_mail_options)
|
||||
|
||||
def testSendMessageWithMailOptions(self):
|
||||
mail_options = ['STARTTLS']
|
||||
expected_mail_options = ('STARTTLS', 'SMTPUTF8', 'BODY=8BITMIME')
|
||||
self.smtp.send_message(self.msg, None, None, mail_options)
|
||||
self.assertEqual(mail_options, ['STARTTLS'])
|
||||
self.assertEqual(self.smtp.sendmail.call_args_list[0][0][3],
|
||||
expected_mail_options)
|
||||
|
||||
|
||||
# test response of client to a non-successful HELO message
|
||||
class BadHELOServerTests(unittest.TestCase):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue