Source code for imapclient.testable_imapclient

# Copyright (c) 2014, Menno Smits
# Released subject to the New BSD License
# Please see http://en.wikipedia.org/wiki/BSD_licenses

from typing import Any, Dict
from unittest.mock import Mock

from .imapclient import IMAPClient


[docs]class TestableIMAPClient(IMAPClient): """Wrapper of :py:class:`imapclient.IMAPClient` that mocks all interaction with real IMAP server. This class should only be used in tests, where you can safely interact with imapclient without running commands on a real IMAP account. """ def __init__(self) -> None: super().__init__("somehost") def _create_IMAP4(self) -> "MockIMAP4": return MockIMAP4()
[docs]class MockIMAP4(Mock): def __init__(self, *args: Any, **kwargs: Any): super().__init__(*args, **kwargs) self.use_uid = True self.sent = b"" # Accumulates what was given to send() self.tagged_commands: Dict[Any, Any] = {} self._starttls_done = False def send(self, data: bytes) -> None: self.sent += data def _new_tag(self) -> str: return "tag"