mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
add test for gmail account tag handling
This commit is contained in:
parent
9bb762fc8f
commit
260b709296
@ -46,12 +46,30 @@ class BogusFolderManager:
|
|||||||
|
|
||||||
|
|
||||||
class BogusClient:
|
class BogusClient:
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __init__(self, messages):
|
||||||
|
self.messages: List[MailMessage] = messages
|
||||||
|
|
||||||
def authenticate(self, mechanism, authobject):
|
def authenticate(self, mechanism, authobject):
|
||||||
# authobject must be a callable object
|
# authobject must be a callable object
|
||||||
auth_bytes = authobject(None)
|
auth_bytes = authobject(None)
|
||||||
if auth_bytes != b"\x00admin\x00w57\xc3\xa4\xc3\xb6\xc3\xbcw4b6huwb6nhu":
|
if auth_bytes != b"\x00admin\x00w57\xc3\xa4\xc3\xb6\xc3\xbcw4b6huwb6nhu":
|
||||||
raise MailboxLoginError("BAD", "OK")
|
raise MailboxLoginError("BAD", "OK")
|
||||||
|
|
||||||
|
def uid(self, command, *args):
|
||||||
|
if command == "STORE":
|
||||||
|
for message in self.messages:
|
||||||
|
if message.uid == args[0]:
|
||||||
|
flag = args[2]
|
||||||
|
if flag == "processed":
|
||||||
|
message._raw_flag_data.append(f"+FLAGS (processed)".encode())
|
||||||
|
MailMessage.flags.fget.cache_clear()
|
||||||
|
|
||||||
|
|
||||||
class BogusMailBox(ContextManager):
|
class BogusMailBox(ContextManager):
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
@ -64,9 +82,12 @@ class BogusMailBox(ContextManager):
|
|||||||
self.messages: List[MailMessage] = []
|
self.messages: List[MailMessage] = []
|
||||||
self.messages_spam: List[MailMessage] = []
|
self.messages_spam: List[MailMessage] = []
|
||||||
self.folder = BogusFolderManager()
|
self.folder = BogusFolderManager()
|
||||||
self.client = BogusClient()
|
self.client = BogusClient(self.messages)
|
||||||
self._host = ""
|
self._host = ""
|
||||||
|
|
||||||
|
def updateClient(self):
|
||||||
|
self.client = BogusClient(self.messages)
|
||||||
|
|
||||||
def login(self, username, password):
|
def login(self, username, password):
|
||||||
# This will raise a UnicodeEncodeError if the password is not ASCII only
|
# This will raise a UnicodeEncodeError if the password is not ASCII only
|
||||||
password.encode("ascii")
|
password.encode("ascii")
|
||||||
@ -248,6 +269,7 @@ class TestMail(DirectoriesMixin, TestCase):
|
|||||||
seen=False,
|
seen=False,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
self.bogus_mailbox.updateClient()
|
||||||
|
|
||||||
def test_get_correspondent(self):
|
def test_get_correspondent(self):
|
||||||
message = namedtuple("MailMessage", [])
|
message = namedtuple("MailMessage", [])
|
||||||
@ -608,6 +630,31 @@ class TestMail(DirectoriesMixin, TestCase):
|
|||||||
self.assertEqual(len(self.bogus_mailbox.fetch("UNKEYWORD processed", False)), 0)
|
self.assertEqual(len(self.bogus_mailbox.fetch("UNKEYWORD processed", False)), 0)
|
||||||
self.assertEqual(len(self.bogus_mailbox.messages), 3)
|
self.assertEqual(len(self.bogus_mailbox.messages), 3)
|
||||||
|
|
||||||
|
def test_handle_mail_mail_account_tag_gmail(self):
|
||||||
|
self.bogus_mailbox._host = "imap.gmail.com"
|
||||||
|
|
||||||
|
account = MailAccount.objects.create(
|
||||||
|
name="test",
|
||||||
|
imap_server="",
|
||||||
|
username="admin",
|
||||||
|
password="secret",
|
||||||
|
)
|
||||||
|
|
||||||
|
_ = MailRule.objects.create(
|
||||||
|
name="testrule",
|
||||||
|
account=account,
|
||||||
|
action=MailRule.MailAction.TAG,
|
||||||
|
action_parameter="processed",
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(len(self.bogus_mailbox.messages), 3)
|
||||||
|
self.assertEqual(self.async_task.call_count, 0)
|
||||||
|
self.assertEqual(len(self.bogus_mailbox.fetch("UNKEYWORD processed", False)), 2)
|
||||||
|
self.mail_account_handler.handle_mail_account(account)
|
||||||
|
self.assertEqual(self.async_task.call_count, 2)
|
||||||
|
self.assertEqual(len(self.bogus_mailbox.fetch("UNKEYWORD processed", False)), 0)
|
||||||
|
self.assertEqual(len(self.bogus_mailbox.messages), 3)
|
||||||
|
|
||||||
def test_error_login(self):
|
def test_error_login(self):
|
||||||
account = MailAccount.objects.create(
|
account = MailAccount.objects.create(
|
||||||
name="test",
|
name="test",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user