diff options
| author | Benjamin Peterson <benjamin@python.org> | 2011-03-15 19:45:20 (GMT) |
|---|---|---|
| committer | Benjamin Peterson <benjamin@python.org> | 2011-03-15 19:45:20 (GMT) |
| commit | e97a5b2bda0b1b0352137e564a93e0176b6619e5 (patch) | |
| tree | 364c998e611d1347d960263d6b539a02fad526cc /Lib/test | |
| parent | d6afe724cb8a701d6ad2adeb1d8d20e4fde6fca0 (diff) | |
| parent | ffdbbcaf715323f653388966eec5c42bf6b139c5 (diff) | |
| download | cpython-e97a5b2bda0b1b0352137e564a93e0176b6619e5.zip cpython-e97a5b2bda0b1b0352137e564a93e0176b6619e5.tar.gz cpython-e97a5b2bda0b1b0352137e564a93e0176b6619e5.tar.bz2 | |
merge heads
Diffstat (limited to 'Lib/test')
| -rw-r--r-- | Lib/test/test_email.py | 2 | ||||
| -rw-r--r-- | Lib/test/test_smtplib.py | 38 |
2 files changed, 38 insertions, 2 deletions
diff --git a/Lib/test/test_email.py b/Lib/test/test_email.py index f0a18e7..5eebba5 100644 --- a/Lib/test/test_email.py +++ b/Lib/test/test_email.py @@ -3,10 +3,12 @@ # The specific tests now live in Lib/email/test from email.test.test_email import suite +from email.test.test_email_codecs import suite as codecs_suite from test import support def test_main(): support.run_unittest(suite()) + support.run_unittest(codecs_suite()) if __name__ == '__main__': test_main() diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py index 4651f37..d973faa 100644 --- a/Lib/test/test_smtplib.py +++ b/Lib/test/test_smtplib.py @@ -424,6 +424,9 @@ sim_lists = {'list-1':['Mr.A@somewhere.com','Mrs.C@somewhereesle.com'], # Simulated SMTP channel & server class SimSMTPChannel(smtpd.SMTPChannel): + # For testing failures in QUIT when using the context manager API. + quit_response = None + def __init__(self, extra_features, *args, **kw): self._extrafeatures = ''.join( [ "250-{0}\r\n".format(x) for x in extra_features ]) @@ -475,19 +478,31 @@ class SimSMTPChannel(smtpd.SMTPChannel): else: self.push('550 No access for you!') + def smtp_QUIT(self, arg): + # args is ignored + if self.quit_response is None: + super(SimSMTPChannel, self).smtp_QUIT(arg) + else: + self.push(self.quit_response) + self.close_when_done() + def handle_error(self): raise class SimSMTPServer(smtpd.SMTPServer): + # For testing failures in QUIT when using the context manager API. + quit_response = None + def __init__(self, *args, **kw): self._extra_features = [] smtpd.SMTPServer.__init__(self, *args, **kw) def handle_accepted(self, conn, addr): - self._SMTPchannel = SimSMTPChannel(self._extra_features, - self, conn, addr) + self._SMTPchannel = SimSMTPChannel( + self._extra_features, self, conn, addr) + self._SMTPchannel.quit_response = self.quit_response def process_message(self, peer, mailfrom, rcpttos, data): pass @@ -620,6 +635,25 @@ class SMTPSimTests(unittest.TestCase): self.assertIn(sim_auth_credentials['cram-md5'], str(err)) smtp.close() + def test_with_statement(self): + with smtplib.SMTP(HOST, self.port) as smtp: + code, message = smtp.noop() + self.assertEqual(code, 250) + self.assertRaises(smtplib.SMTPServerDisconnected, smtp.send, b'foo') + with smtplib.SMTP(HOST, self.port) as smtp: + smtp.close() + self.assertRaises(smtplib.SMTPServerDisconnected, smtp.send, b'foo') + + def test_with_statement_QUIT_failure(self): + self.serv.quit_response = '421 QUIT FAILED' + with self.assertRaises(smtplib.SMTPResponseException) as error: + with smtplib.SMTP(HOST, self.port) as smtp: + smtp.noop() + self.assertEqual(error.exception.smtp_code, 421) + self.assertEqual(error.exception.smtp_error, b'QUIT FAILED') + # We don't need to clean up self.serv.quit_response because a new + # server is always instantiated in the setUp(). + #TODO: add tests for correct AUTH method fallback now that the #test infrastructure can support it. |
