Use mock for dav tests too

This commit is contained in:
Markus Unterwaditzer 2014-03-09 02:11:23 +01:00
parent 600cc64e46
commit a711bf0428
2 changed files with 14 additions and 8 deletions

View file

@ -17,6 +17,8 @@ import tempfile
import shutil
import sys
import os
import urlparse
import mock
from werkzeug.test import Client
from werkzeug.wrappers import BaseResponse as WerkzeugResponse
@ -74,6 +76,7 @@ class DavStorageTests(StorageTests):
tmpdir = None
storage_class = None
radicale_path = None
patcher = None
def _get_storage(self, **kwargs):
self.tmpdir = tempfile.mkdtemp()
@ -86,19 +89,26 @@ class DavStorageTests(StorageTests):
server = 'http://127.0.0.1'
full_url = server + self.radicale_path
def x(method, path, data=None, headers=None):
path = path or self.radicale_path
def x(session, method, url, data=None, headers=None, **kw):
path = urlparse.urlparse(url).path or self.radicale_path
assert isinstance(data, bytes) or data is None
r = c.open(path=path, method=method, data=data, headers=headers)
r = Response(r)
return r
return self.storage_class(url=full_url, _request_func=x, **kwargs)
self.patcher = p = mock.patch('requests.Session.request', new=x)
p.start()
return self.storage_class(url=full_url, **kwargs)
def teardown_method(self, method):
self.app = None
if self.tmpdir is not None:
shutil.rmtree(self.tmpdir)
self.tmpdir = None
if self.patcher is not None:
self.patcher.stop()
self.patcher = None
def test_dav_broken_item(self):
item = Item(u'UID:1')

View file

@ -27,8 +27,7 @@ class DavStorage(Storage):
_repr_attributes = ('url', 'username')
def __init__(self, url, username='', password='', collection=None,
verify=True, auth='basic', useragent='vdirsyncer',
_request_func=None, **kwargs):
verify=True, auth='basic', useragent='vdirsyncer', **kwargs):
'''
:param url: Direct URL for the CalDAV collection. No autodiscovery.
:param username: Username for authentication.
@ -37,11 +36,8 @@ class DavStorage(Storage):
:param auth: Authentication method, from {'basic', 'digest'}, default
'basic'.
:param useragent: Default 'vdirsyncer'.
:param _request_func: Function to use for network calls. Same API as
requests.request. Useful for tests.
'''
super(DavStorage, self).__init__(**kwargs)
self._request = _request_func or self._request
self._settings = {'verify': verify}
if auth == 'basic':