PCQRSCANER/venv/Lib/site-packages/imapclient/test/test_store.py

131 lines
4.2 KiB
Python
Raw Normal View History

2019-12-22 21:51:47 +01:00
# Copyright (c) 2016, Menno Smits
# Released subject to the New BSD License
# Please see http://en.wikipedia.org/wiki/BSD_licenses
from __future__ import unicode_literals
import six
from mock import patch, sentinel, Mock
from ..imapclient import DELETED, SEEN, ANSWERED, FLAGGED, DRAFT, RECENT
from .imapclient_test import IMAPClientTest
class TestFlagsConsts(IMAPClientTest):
def test_flags_are_bytes(self):
for flag in DELETED, SEEN, ANSWERED, FLAGGED, DRAFT, RECENT:
if not isinstance(flag, six.binary_type):
self.fail("%r flag is not bytes" % flag)
class TestFlags(IMAPClientTest):
def setUp(self):
super(TestFlags, self).setUp()
self.client._command_and_check = Mock()
def test_get(self):
with patch.object(self.client, 'fetch', autospec=True,
return_value={123: {b'FLAGS': [b'foo', b'bar']},
444: {b'FLAGS': [b'foo']}}):
out = self.client.get_flags(sentinel.messages)
self.client.fetch.assert_called_with(sentinel.messages, ['FLAGS'])
self.assertEqual(out, {123: [b'foo', b'bar'],
444: [b'foo']})
def test_set(self):
self.check(self.client.set_flags, b'FLAGS')
def test_add(self):
self.check(self.client.add_flags, b'+FLAGS')
def test_remove(self):
self.check(self.client.remove_flags, b'-FLAGS')
def check(self, meth, expected_command):
self._check(meth, expected_command)
self._check(meth, expected_command, silent=True)
def _check(self, meth, expected_command, silent=False):
if silent:
expected_command += b".SILENT"
cc = self.client._command_and_check
cc.return_value = [
b'11 (FLAGS (blah foo) UID 1)',
b'11 (UID 1 OTHER (dont))',
b'22 (FLAGS (foo) UID 2)',
b'22 (UID 2 OTHER (care))',
]
resp = meth([1, 2], 'foo', silent=silent)
cc.assert_called_once_with(
'store', b"1,2",
expected_command,
'(foo)',
uid=True)
if silent:
self.assertIsNone(resp)
else:
self.assertEqual(resp, {
1: (b'blah', b'foo'),
2: (b'foo',),
})
cc.reset_mock()
class TestGmailLabels(IMAPClientTest):
def setUp(self):
super(TestGmailLabels, self).setUp()
self.client._command_and_check = Mock()
def test_get(self):
with patch.object(self.client, 'fetch', autospec=True,
return_value={123: {b'X-GM-LABELS': [b'foo', b'bar']},
444: {b'X-GM-LABELS': [b'foo']}}):
out = self.client.get_gmail_labels(sentinel.messages)
self.client.fetch.assert_called_with(sentinel.messages, [b'X-GM-LABELS'])
self.assertEqual(out, {123: [b'foo', b'bar'],
444: [b'foo']})
def test_set(self):
self.check(self.client.set_gmail_labels, b'X-GM-LABELS')
def test_add(self):
self.check(self.client.add_gmail_labels, b'+X-GM-LABELS')
def test_remove(self):
self.check(self.client.remove_gmail_labels, b'-X-GM-LABELS')
def check(self, meth, expected_command):
self._check(meth, expected_command)
self._check(meth, expected_command, silent=True)
def _check(self, meth, expected_command, silent=False):
if silent:
expected_command += b".SILENT"
cc = self.client._command_and_check
cc.return_value = [
b'11 (X-GM-LABELS (blah "f\\"o\\"o") UID 1)',
b'22 (X-GM-LABELS ("f\\"o\\"o") UID 2)',
b'11 (UID 1 FLAGS (dont))',
b'22 (UID 2 FLAGS (care))',
]
resp = meth([1, 2], 'f"o"o', silent=silent)
cc.assert_called_once_with(
'store', b"1,2",
expected_command,
'("f\\"o\\"o")',
uid=True)
if silent:
self.assertIsNone(resp)
else:
self.assertEqual(resp, {
1: (b'blah', b'f"o"o'),
2: (b'f"o"o',),
})
cc.reset_mock()