Index: Lib/test/test_smtplib.py =================================================================== --- Lib/test/test_smtplib.py (revision 71913) +++ Lib/test/test_smtplib.py (working copy) @@ -284,6 +284,9 @@ '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 @@ '250-SIZE 20000000\r\n' \ '250-STARTTLS\r\n' \ '250-DELIVERBY\r\n' \ + '250-AUTH PLAIN\r\n' \ '250 HELP' self.push(resp) @@ -324,7 +328,17 @@ 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): conn, addr = self.accept() @@ -372,6 +386,7 @@ 'size': '20000000', 'starttls': '', 'deliverby': '', + 'auth': ' PLAIN', 'help': '', } @@ -412,8 +427,13 @@ 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): support.run_unittest(GeneralTests, DebuggingServerTests, NonConnectingTests,