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

View file

@ -27,8 +27,7 @@ class DavStorage(Storage):
_repr_attributes = ('url', 'username') _repr_attributes = ('url', 'username')
def __init__(self, url, username='', password='', collection=None, def __init__(self, url, username='', password='', collection=None,
verify=True, auth='basic', useragent='vdirsyncer', verify=True, auth='basic', useragent='vdirsyncer', **kwargs):
_request_func=None, **kwargs):
''' '''
:param url: Direct URL for the CalDAV collection. No autodiscovery. :param url: Direct URL for the CalDAV collection. No autodiscovery.
:param username: Username for authentication. :param username: Username for authentication.
@ -37,11 +36,8 @@ class DavStorage(Storage):
:param auth: Authentication method, from {'basic', 'digest'}, default :param auth: Authentication method, from {'basic', 'digest'}, default
'basic'. 'basic'.
:param useragent: Default 'vdirsyncer'. :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) super(DavStorage, self).__init__(**kwargs)
self._request = _request_func or self._request
self._settings = {'verify': verify} self._settings = {'verify': verify}
if auth == 'basic': if auth == 'basic':