Split up caldav and carddav tests

This commit is contained in:
Markus Unterwaditzer 2015-07-25 03:30:47 +02:00
parent 4b0a896303
commit f0e842ac41
4 changed files with 83 additions and 63 deletions

View file

@ -1 +1,54 @@
# -*- coding: utf-8 -*-
import os
import requests
import requests.exceptions
from tests import assert_item_equals
import vdirsyncer.exceptions as exceptions
from vdirsyncer.storage.base import Item
from .. import StorageTests
dav_server = os.environ.get('DAV_SERVER', '').strip() or 'radicale'
def _get_server_mixin(server_name):
from . import __name__ as base
x = __import__('{}.servers.{}'.format(base, server_name), fromlist=[''])
return x.ServerMixin
ServerMixin = _get_server_mixin(dav_server)
class DavStorageTests(ServerMixin, StorageTests):
dav_server = dav_server
def test_dav_broken_item(self, s):
item = Item(u'HAHA:YES')
try:
s.upload(item)
except (exceptions.Error, requests.exceptions.HTTPError):
pass
assert not list(s.list())
def test_dav_empty_get_multi_performance(self, s, monkeypatch):
def breakdown(*a, **kw):
raise AssertionError('Expected not to be called.')
monkeypatch.setattr('requests.sessions.Session.request', breakdown)
assert list(s.get_multi([])) == []
def test_dav_unicode_href(self, s, get_item, monkeypatch):
if self.dav_server != 'radicale':
# Radicale is unable to deal with unicode hrefs
monkeypatch.setattr(s, '_get_href',
lambda item: item.ident + s.fileext)
item = get_item(uid=u'lolätvdirsynceröü град сатану')
href, etag = s.upload(item)
item2, etag2 = s.get(href)
assert_item_equals(item, item2)

View file

@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
import datetime
import os
from textwrap import dedent
import pytest
@ -9,55 +8,13 @@ import pytest
import requests
import requests.exceptions
from tests import EVENT_TEMPLATE, TASK_TEMPLATE, VCARD_TEMPLATE, \
assert_item_equals
from tests import EVENT_TEMPLATE, TASK_TEMPLATE, VCARD_TEMPLATE
import vdirsyncer.exceptions as exceptions
from vdirsyncer.storage.base import Item
from vdirsyncer.storage.dav import CaldavStorage, CarddavStorage, _parse_xml
from vdirsyncer import exceptions
from vdirsyncer.storage.dav import CaldavStorage
from .. import StorageTests, format_item
dav_server = os.environ.get('DAV_SERVER', '').strip() or 'radicale'
def _get_server_mixin(server_name):
from . import __name__ as base
x = __import__('{}.servers.{}'.format(base, server_name), fromlist=[''])
return x.ServerMixin
ServerMixin = _get_server_mixin(dav_server)
class DavStorageTests(ServerMixin, StorageTests):
dav_server = dav_server
def test_dav_broken_item(self, s):
item = Item(u'HAHA:YES')
try:
s.upload(item)
except (exceptions.Error, requests.exceptions.HTTPError):
pass
assert not list(s.list())
def test_dav_empty_get_multi_performance(self, s, monkeypatch):
def breakdown(*a, **kw):
raise AssertionError('Expected not to be called.')
monkeypatch.setattr('requests.sessions.Session.request', breakdown)
assert list(s.get_multi([])) == []
def test_dav_unicode_href(self, s, get_item, monkeypatch):
if self.dav_server != 'radicale':
# Radicale is unable to deal with unicode hrefs
monkeypatch.setattr(s, '_get_href',
lambda item: item.ident + s.fileext)
item = get_item(uid=u'lolätvdirsynceröü град сатану')
href, etag = s.upload(item)
item2, etag2 = s.get(href)
assert_item_equals(item, item2)
from . import DavStorageTests, dav_server
from .. import format_item
class TestCaldavStorage(DavStorageTests):
@ -186,18 +143,3 @@ class TestCaldavStorage(DavStorageTests):
assert set(s.list()) == set([event])
s.item_types = ()
assert set(s.list()) == set([event, task])
class TestCarddavStorage(DavStorageTests):
storage_class = CarddavStorage
@pytest.fixture(params=['VCARD'])
def item_type(self, request):
return request.param
def test_broken_xml(capsys):
rv = _parse_xml(b'<h1>\x10haha</h1>')
assert rv.text == 'haha'
warnings = capsys.readouterr()[1]
assert 'partially invalid xml' in warnings.lower()

View file

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
import pytest
from vdirsyncer.storage.dav import CarddavStorage
from . import DavStorageTests
class TestCarddavStorage(DavStorageTests):
storage_class = CarddavStorage
@pytest.fixture(params=['VCARD'])
def item_type(self, request):
return request.param

View file

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
from vdirsyncer.storage.dav import _parse_xml
def test_broken_xml(capsys):
rv = _parse_xml(b'<h1>\x10haha</h1>')
assert rv.text == 'haha'
warnings = capsys.readouterr()[1]
assert 'partially invalid xml' in warnings.lower()