From 215605105671ecf3d84289a799f84ddddfc560dc Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Sun, 13 Apr 2014 10:30:23 +0200 Subject: [PATCH] More tests --- tests/storage/__init__.py | 16 ++++++++++++++++ tests/storage/dav/test_main.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/tests/storage/__init__.py b/tests/storage/__init__.py index bf0176b..ef10234 100644 --- a/tests/storage/__init__.py +++ b/tests/storage/__init__.py @@ -48,6 +48,10 @@ class StorageTests(object): assert etag == etag2 assert 'UID:{}'.format(item.uid) in item.raw + def test_empty_get_multi(self): + s = self._get_storage() + assert list(s.get_multi([])) == [] + def test_upload_already_existing(self): s = self._get_storage() item = self._create_bogus_item(1) @@ -88,6 +92,12 @@ class StorageTests(object): with pytest.raises(exceptions.PreconditionFailed): s.delete(href, '"lolnope"') + def test_delete(self): + s = self._get_storage() + href, etag = s.upload(self._create_bogus_item(1)) + s.delete(href, etag) + assert not list(s.list()) + def test_delete_nonexisting(self): s = self._get_storage() with pytest.raises(exceptions.PreconditionFailed): @@ -146,3 +156,9 @@ class StorageTests(object): # Can't do stronger assertion because of radicale, which needs a # fileextension to guess the collection type. assert 'test2' in s.collection + + def test_has(self): + s = self._get_storage() + assert not s.has('asd') + href, etag = s.upload(self._create_bogus_item(1)) + assert s.has(href) diff --git a/tests/storage/dav/test_main.py b/tests/storage/dav/test_main.py index f15fef2..2098841 100644 --- a/tests/storage/dav/test_main.py +++ b/tests/storage/dav/test_main.py @@ -16,6 +16,8 @@ from .. import StorageTests import vdirsyncer.exceptions as exceptions from vdirsyncer.storage.base import Item from vdirsyncer.storage.dav import CaldavStorage, CarddavStorage +import vdirsyncer.exceptions +import requests import requests.exceptions @@ -209,6 +211,36 @@ class TestCaldavStorage(DavStorageTests): b = self.storage_class(item_types=('VTODO', 'VEVENT'), **kw) assert a.item_types == b.item_types == ('VTODO', 'VEVENT') + def test_invalid_resource(self, monkeypatch): + calls = [] + args = self.get_storage_args(collection=None) + + def request(session, method, url, data=None, headers=None, auth=None, + verify=None): + assert method == 'OPTIONS' + assert url == args['url'] + calls.append(None) + + r = requests.Response() + r.status_code = 200 + r._content = 'Hello World.' + return r + + monkeypatch.setattr('requests.sessions.Session.request', request) + + with pytest.raises(vdirsyncer.exceptions.StorageError): + s = self.storage_class(**args) + assert len(calls) == 1 + + def test_empty_get_multi_performance(self, monkeypatch): + s = self._get_storage() + + def breakdown(*a, **kw): + raise AssertionError('Expected not to be called.') + + monkeypatch.setattr('requests.sessions.Session.request', breakdown) + + assert list(s.get_multi([])) == [] class TestCarddavStorage(DavStorageTests): storage_class = CarddavStorage