mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
Fix for issue 5259: ASCII encode the username and password before passing
it to encode_base64, which requires bytes in py3k. Fix by Musashi Tamura, tests by Marcin Bachry.
This commit is contained in:
parent
dfea192ad4
commit
caa27b7823
4 changed files with 26 additions and 1 deletions
|
@ -284,6 +284,9 @@ sim_users = {'Mr.A@somewhere.com':'John A',
|
|||
'Mrs.C@somewhereesle.com':'Ruth C',
|
||||
}
|
||||
|
||||
sim_auth = ('Mr.A@somewhere.com', 'somepassword')
|
||||
sim_auth_b64encoded = 'AE1yLkFAc29tZXdoZXJlLmNvbQBzb21lcGFzc3dvcmQ='
|
||||
|
||||
sim_lists = {'list-1':['Mr.A@somewhere.com','Mrs.C@somewhereesle.com'],
|
||||
'list-2':['Ms.B@somewhere.com',],
|
||||
}
|
||||
|
@ -296,6 +299,7 @@ class SimSMTPChannel(smtpd.SMTPChannel):
|
|||
'250-SIZE 20000000\r\n' \
|
||||
'250-STARTTLS\r\n' \
|
||||
'250-DELIVERBY\r\n' \
|
||||
'250-AUTH PLAIN\r\n' \
|
||||
'250 HELP'
|
||||
self.push(resp)
|
||||
|
||||
|
@ -324,6 +328,16 @@ class SimSMTPChannel(smtpd.SMTPChannel):
|
|||
else:
|
||||
self.push('550 No access for you!')
|
||||
|
||||
def smtp_AUTH(self, arg):
|
||||
mech, auth = arg.split()
|
||||
if mech.lower() == 'plain':
|
||||
if auth == sim_auth_b64encoded:
|
||||
self.push('235 ok, go ahead')
|
||||
else:
|
||||
self.push('550 No access for you!')
|
||||
else:
|
||||
self.push('504 auth type unimplemented')
|
||||
|
||||
|
||||
class SimSMTPServer(smtpd.SMTPServer):
|
||||
def handle_accept(self):
|
||||
|
@ -372,6 +386,7 @@ class SMTPSimTests(TestCase):
|
|||
'size': '20000000',
|
||||
'starttls': '',
|
||||
'deliverby': '',
|
||||
'auth': ' PLAIN',
|
||||
'help': '',
|
||||
}
|
||||
|
||||
|
@ -412,6 +427,11 @@ class SMTPSimTests(TestCase):
|
|||
self.assertEqual(smtp.expn(u), expected_unknown)
|
||||
smtp.quit()
|
||||
|
||||
def testAUTH(self):
|
||||
smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
|
||||
|
||||
expected_auth_ok = (235, b'ok, go ahead')
|
||||
self.assertEqual(smtp.login(sim_auth[0], sim_auth[1]), expected_auth_ok)
|
||||
|
||||
|
||||
def test_main(verbose=None):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue