mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
Fix IMAP.login() to work properly.
Also, add remote tests for imaplib (part of #4471).
This commit is contained in:
parent
adffced3df
commit
b1436f185d
3 changed files with 48 additions and 6 deletions
|
@ -1054,10 +1054,10 @@ class IMAP4:
|
||||||
|
|
||||||
def _quote(self, arg):
|
def _quote(self, arg):
|
||||||
|
|
||||||
arg = arg.replace(b'\\', b'\\\\')
|
arg = arg.replace('\\', '\\\\')
|
||||||
arg = arg.replace(b'"', b'\\"')
|
arg = arg.replace('"', '\\"')
|
||||||
|
|
||||||
return b'"' + arg + b'"'
|
return '"' + arg + '"'
|
||||||
|
|
||||||
|
|
||||||
def _simple_command(self, name, *args):
|
def _simple_command(self, name, *args):
|
||||||
|
|
|
@ -10,7 +10,7 @@ import os.path
|
||||||
import socketserver
|
import socketserver
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from test.support import reap_threads, verbose
|
from test.support import reap_threads, verbose, transient_internet
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -192,8 +192,45 @@ class ThreadedNetworkedTestsSSL(BaseThreadedNetworkedTests):
|
||||||
imap_class = IMAP4_SSL
|
imap_class = IMAP4_SSL
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
class RemoteIMAPTest(unittest.TestCase):
|
||||||
|
host = 'cyrus.andrew.cmu.edu'
|
||||||
|
port = 143
|
||||||
|
username = 'anonymous'
|
||||||
|
password = 'pass'
|
||||||
|
imap_class = imaplib.IMAP4
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
with transient_internet(self.host):
|
||||||
|
self.server = self.imap_class(self.host, self.port)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
if self.server is not None:
|
||||||
|
self.server.logout()
|
||||||
|
|
||||||
|
def test_logincapa(self):
|
||||||
|
self.assertTrue('LOGINDISABLED' in self.server.capabilities)
|
||||||
|
|
||||||
|
def test_anonlogin(self):
|
||||||
|
self.assertTrue('AUTH=ANONYMOUS' in self.server.capabilities)
|
||||||
|
rs = self.server.login(self.username, self.password)
|
||||||
|
self.assertEqual(rs[0], 'OK')
|
||||||
|
|
||||||
|
def test_logout(self):
|
||||||
|
rs = self.server.logout()
|
||||||
|
self.assertEqual(rs[0], 'BYE')
|
||||||
|
|
||||||
|
|
||||||
|
@unittest.skipUnless(ssl, "SSL not available")
|
||||||
|
class RemoteIMAP_SSLTest(RemoteIMAPTest):
|
||||||
|
port = 993
|
||||||
|
imap_class = IMAP4_SSL
|
||||||
|
|
||||||
|
def test_logincapa(self):
|
||||||
|
self.assertFalse('LOGINDISABLED' in self.server.capabilities)
|
||||||
|
self.assertTrue('AUTH=PLAIN' in self.server.capabilities)
|
||||||
|
|
||||||
|
|
||||||
|
def test_main():
|
||||||
tests = [TestImaplib]
|
tests = [TestImaplib]
|
||||||
|
|
||||||
if support.is_resource_enabled('network'):
|
if support.is_resource_enabled('network'):
|
||||||
|
@ -203,7 +240,10 @@ def test_main():
|
||||||
"keycert.pem")
|
"keycert.pem")
|
||||||
if not os.path.exists(CERTFILE):
|
if not os.path.exists(CERTFILE):
|
||||||
raise support.TestFailed("Can't read certificate files!")
|
raise support.TestFailed("Can't read certificate files!")
|
||||||
tests.extend([ThreadedNetworkedTests, ThreadedNetworkedTestsSSL])
|
tests.extend([
|
||||||
|
ThreadedNetworkedTests, ThreadedNetworkedTestsSSL,
|
||||||
|
RemoteIMAPTest, RemoteIMAP_SSLTest,
|
||||||
|
])
|
||||||
|
|
||||||
support.run_unittest(*tests)
|
support.run_unittest(*tests)
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Fix IMAP.login() to work properly.
|
||||||
|
|
||||||
- Issue #9244: multiprocessing pool worker processes could terminate
|
- Issue #9244: multiprocessing pool worker processes could terminate
|
||||||
unexpectedly if the return value of a task could not be pickled. Only
|
unexpectedly if the return value of a task could not be pickled. Only
|
||||||
the ``repr`` of such errors are now sent back, wrapped in an
|
the ``repr`` of such errors are now sent back, wrapped in an
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue