예제 #1
0
	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
예제 #2
0
	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()
예제 #3
0
 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()
예제 #4
0
 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
예제 #5
0
 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()
예제 #6
0
	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()
예제 #7
0
	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)
예제 #8
0
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'
예제 #9
0
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'
예제 #10
0
	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'])
예제 #11
0
	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()
예제 #12
0
	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'])
예제 #13
0
	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()
예제 #14
0
 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()
예제 #15
0
 def test_mailbox_should_be_open_when_opened(self, sample_path):
     be = create_backend('mbox', path=sample_path)
     be.open()
     assert be.is_open()
예제 #16
0
 def test_initially_mailbox_should_be_closed(self):
     be = create_backend('mbox')
     assert not be.is_open()
예제 #17
0
 def test_create_mbox_backend(self):
     be = create_backend('mbox')
     assert be is not None
예제 #18
0
	def test_mailbox_should_be_open_when_opened(self, sample_path):
		be = create_backend('mbox', path=sample_path)
		be.open()
		assert be.is_open()
예제 #19
0
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'
예제 #20
0
	def test_create_mbox_backend(self):
		be = create_backend('mbox')
		assert be is not None
예제 #21
0
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 == ''
예제 #22
0
	def test_initially_mailbox_should_be_closed(self):
		be = create_backend('mbox')
		assert not be.is_open()
예제 #23
0
	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()
예제 #24
0
 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()
예제 #25
0
 def test_create_maildir_backend(self):
     be = create_backend('maildir')
     assert be is not None
예제 #26
0
    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()
예제 #27
0
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'
예제 #28
0
	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()
예제 #29
0
def test_create_pop3_backend_should_ignore_unknown_setting():
	be = create_backend('pop3', name='testing', odd='weird', weird='odd')
	assert be is not None
예제 #30
0
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 == ''
예제 #31
0
def test_create_pop3_backend_should_ignore_unknown_setting():
    be = create_backend('pop3', name='testing', odd='weird', weird='odd')
    assert be is not None
예제 #32
0
	def test_create_maildir_backend(self):
		be = create_backend('maildir')
		assert be is not None