diff --git a/docker-compose.yaml b/docker-compose.yaml index f295471..26a0d99 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,3 +5,8 @@ services: build: docker/xandikos/ ports: - '8000:8000' + + radicale: + build: docker/radicale/ + ports: + - '8001:8001' diff --git a/docker/radicale/Dockerfile b/docker/radicale/Dockerfile new file mode 100644 index 0000000..462c5e2 --- /dev/null +++ b/docker/radicale/Dockerfile @@ -0,0 +1,5 @@ +FROM python:3.8 + +RUN pip install radicale + +CMD radicale --storage-filesystem-folder /tmp/dav -H 0.0.0.0:8001 -D diff --git a/tests/storage/servers/radicale/__init__.py b/tests/storage/servers/radicale/__init__.py index 6e4ae29..b3b59bb 100644 --- a/tests/storage/servers/radicale/__init__.py +++ b/tests/storage/servers/radicale/__init__.py @@ -1,57 +1,19 @@ -import logging import pytest -import radicale -import radicale.config - -from pkg_resources import parse_version as ver - -import wsgi_intercept -import wsgi_intercept.requests_intercept - -logger = logging.getLogger(__name__) - class ServerMixin: - - @pytest.fixture(autouse=True) - def setup(self, request, tmpdir): - if ver(radicale.VERSION) < ver('2.0.0-pre'): - raise RuntimeError('Testing against Radicale only works with ' - 'Radicale >= 2.0.0') - - def get_app(): - config = radicale.config.load(()) - config.set('storage', 'filesystem_folder', str(tmpdir)) - config.set('rights', 'type', 'owner_only') - - app = radicale.Application(config, logger) - - def is_authenticated(user, password): - return user == 'bob' and password == 'bob' - - app.is_authenticated = is_authenticated - return app - - wsgi_intercept.requests_intercept.install() - wsgi_intercept.add_wsgi_intercept('127.0.0.1', 80, get_app) - - def teardown(): - wsgi_intercept.remove_wsgi_intercept('127.0.0.1', 80) - wsgi_intercept.requests_intercept.uninstall() - request.addfinalizer(teardown) - @pytest.fixture - def get_storage_args(self, get_item): - def inner(collection='test'): - url = 'http://127.0.0.1/' - rv = {'url': url, 'username': 'bob', 'password': 'bob'} + def get_storage_args(self, request, tmpdir, slow_create_collection): + def inner(collection="test"): + url = "http://127.0.0.1:8001/" + args = { + "url": url, + "username": "radicale", + "password": "radicale", + } if collection is not None: - collection = collection + self.storage_class.fileext - rv = self.storage_class.create_collection(collection, **rv) - s = self.storage_class(**rv) - assert not list(s.list()) + args = slow_create_collection(self.storage_class, args, collection) + return args - return rv return inner diff --git a/tests/storage/servers/radicale/install.sh b/tests/storage/servers/radicale/install.sh index c2a1ec9..51732d8 100644 --- a/tests/storage/servers/radicale/install.sh +++ b/tests/storage/servers/radicale/install.sh @@ -1,12 +1,4 @@ #!/bin/sh -set -e -if [ "$REQUIREMENTS" = "release" ] || [ "$REQUIREMENTS" = "minimal" ]; then - radicale_pkg="radicale==2.1.10" -elif [ "$REQUIREMENTS" = "devel" ]; then - radicale_pkg="git+https://github.com/Kozea/Radicale.git" -else - echo "Invalid requirements envvar" - false -fi -pip install wsgi_intercept $radicale_pkg +docker-compose build radicale +docker-compose up -d radicale