mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-40375: Implement imaplib.IMAP4.unselect (GH-19712)
This commit is contained in:
parent
91a5ae1835
commit
c5c42815ec
5 changed files with 59 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue