bpo-40375: Implement imaplib.IMAP4.unselect (GH-19712)

This commit is contained in:
Dong-hee Na 2020-04-27 23:52:55 +09:00 committed by GitHub
parent 91a5ae1835
commit c5c42815ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 59 additions and 0 deletions

View file

@ -116,6 +116,7 @@ class SimpleIMAPHandler(socketserver.StreamRequestHandler):
def setup(self):
super().setup()
self.server.is_selected = False
self.server.logged = None
def _send(self, message):
@ -190,6 +191,18 @@ class SimpleIMAPHandler(socketserver.StreamRequestHandler):
self.server.logged = args[0]
self._send_tagged(tag, 'OK', 'LOGIN completed')
def cmd_SELECT(self, tag, args):
self.server.is_selected = True
self._send_line(b'* 2 EXISTS')
self._send_tagged(tag, 'OK', '[READ-WRITE] SELECT completed.')
def cmd_UNSELECT(self, tag, args):
if self.server.is_selected:
self.server.is_selected = False
self._send_tagged(tag, 'OK', 'Returned to authenticated state. (Success)')
else:
self._send_tagged(tag, 'BAD', 'No mailbox selected')
class NewIMAPTestsMixin():
client = None
@ -511,6 +524,18 @@ class NewIMAPTestsMixin():
self.assertEqual(typ, 'OK')
self.assertEqual(data[0], b'() "." directoryA')
def test_unselect(self):
client, _ = self._setup(SimpleIMAPHandler)
client.login('user', 'pass')
typ, data = client.select()
self.assertEqual(typ, 'OK')
self.assertEqual(data[0], b'2')
typ, data = client.unselect()
self.assertEqual(typ, 'OK')
self.assertEqual(data[0], b'Returned to authenticated state. (Success)')
self.assertEqual(client.state, 'AUTH')
class NewIMAPTests(NewIMAPTestsMixin, unittest.TestCase):
imap_class = imaplib.IMAP4