def _get_backend(self): if not self._backend: backend_config = self._get_backend_config() self._backend = create_backend(self.mailbox_type, name=self.name, **backend_config) return self._backend
def test_mbox_does_not_support_notifications(self, sample_path): be = create_backend('mbox', path=sample_path) be.open() with pytest.raises(NotImplementedError): be.notify_next_change() with pytest.raises(NotImplementedError): be.cancel_notifications()
def test_lists_no_messages_from_empty_mailbox(self, sample_path): be = create_backend('mbox', name='sample', path=sample_path) be.open() try: msgs = list(be.list_messages()) assert len(msgs) == 0 finally: be.close()
def test_folders_should_be_listed(self, sample_path, sample_maildir): sample_maildir.add_folder('folder1') sample_maildir.add_folder('folder2') sample_maildir.add_folder('folder1.subfolder') sample_maildir.close() be = create_backend('maildir', path=sample_path) be.open() folders = be.request_folders() assert set(['', 'folder1', 'folder2', 'folder1.subfolder']) == set(folders)
def test_create_pop3_backend(): be = create_backend('pop3', name='testing', user='******', password='', server='pop.example.org', port='', ssl=True) assert be is not None assert not be.is_open() assert be.server == 'pop.example.org'
def test_create_imap_backend(): be = create_backend('imap', name='testing', user='******', password='', server='imap.example.org', port='', ssl=True, folders=['a', 'b']) assert be is not None assert not be.is_open() assert be.server == 'imap.example.org'
def test_lists_unread_messages_from_mailbox(self, sample_path, sample_mbox): self._add_message(sample_mbox, 'blaa-blaa-1', '') self._add_message(sample_mbox, 'blaa-blaa-2', 'O') self._add_message(sample_mbox, 'blaa-blaa-3', 'RO') sample_mbox.close() be = create_backend('mbox', name='sample', path=sample_path) be.open() try: msgs = list(be.list_messages()) folders = [folder for folder, msg in msgs] msg_ids = set(msg.get('message-id') for folder, msg in msgs) finally: be.close() assert len(msgs) == 2 assert all(folder == '' for folder in folders) assert msg_ids == set(['blaa-blaa-1', 'blaa-blaa-2'])
def test_should_support_unicode_folder_names(self, sample_path, sample_maildir): """Python2 maildir folders must be str, not unicode. However folder in Mailnag configuration is represented as a json list, and json.loads converts strings to unicode. This test is here to ensure that unicode folder names work. Note: This is probably not needed with Python3. """ f = sample_maildir.add_folder('folder1') self._add_message(f, 'blaa-blaa-2', 'S', 'cur') sample_maildir.close() be = create_backend('maildir', name='sample', path=sample_path, folders=[u'', u'folder1']) be.open() try: msgs = list(be.list_messages()) finally: be.close()
def test_lists_unread_messages_from_selected_folders(self, sample_path, sample_maildir): f = sample_maildir.add_folder('folder1') sample_maildir.add_folder('folder2') s = sample_maildir.add_folder('folder1.subfolder') self._add_message(sample_maildir, 'blaa-blaa-1', None, 'new') self._add_message(f, 'blaa-blaa-2', None, 'cur') self._add_message(s, 'blaa-blaa-3', None, 'cur') sample_maildir.close() be = create_backend('maildir', name='sample', path=sample_path, folders=['', 'folder1.subfolder']) be.open() try: msgs = list(be.list_messages()) folders = [folder for folder, msg in msgs] msg_ids = set(msg.get('message-id') for folder, msg in msgs) finally: be.close() assert len(msgs) == 2 assert set(['', 'folder1.subfolder']) == set(folders) assert msg_ids == set(['blaa-blaa-1', 'blaa-blaa-3'])
def test_open_should_fail_if_mailbox_does_not_exist(self, tmpdir): path = str(tmpdir.join('not-exist')) be = create_backend('maildir', path=path) with pytest.raises(IOError): be.open()
def test_closed_mailbox_should_be_closed(self, sample_path): be = create_backend('mbox', path=sample_path) be.open() be.close() assert not be.is_open()
def test_mailbox_should_be_open_when_opened(self, sample_path): be = create_backend('mbox', path=sample_path) be.open() assert be.is_open()
def test_initially_mailbox_should_be_closed(self): be = create_backend('mbox') assert not be.is_open()
def test_create_mbox_backend(self): be = create_backend('mbox') assert be is not None
def test_create_pop3_backend_with_defaults(): be = create_backend('pop3', name='testing') assert be is not None assert not be.is_open() assert be.server == ''
def test_mbox_should_not_have_folders(self, sample_path): be = create_backend('mbox', path=sample_path) be.open() with pytest.raises(NotImplementedError): be.request_folders()
def test_create_maildir_backend(self): be = create_backend('maildir') assert be is not None
def test_create_pop3_backend_should_ignore_unknown_setting(): be = create_backend('pop3', name='testing', odd='weird', weird='odd') assert be is not None