mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-04-27 14:57:41 +00:00
Test baikal using docker
This commit is contained in:
parent
b0d8fd34dc
commit
6c6da2f613
10 changed files with 257 additions and 4 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
|
@ -1,6 +1,3 @@
|
||||||
[submodule "tests/storage/servers/baikal"]
|
|
||||||
path = tests/storage/servers/baikal
|
|
||||||
url = https://github.com/vdirsyncer/baikal-testserver
|
|
||||||
[submodule "tests/storage/servers/owncloud"]
|
[submodule "tests/storage/servers/owncloud"]
|
||||||
path = tests/storage/servers/owncloud
|
path = tests/storage/servers/owncloud
|
||||||
url = https://github.com/vdirsyncer/owncloud-testserver
|
url = https://github.com/vdirsyncer/owncloud-testserver
|
||||||
|
|
|
||||||
|
|
@ -10,3 +10,8 @@ services:
|
||||||
build: docker/radicale/
|
build: docker/radicale/
|
||||||
ports:
|
ports:
|
||||||
- '8001:8001'
|
- '8001:8001'
|
||||||
|
|
||||||
|
baikal:
|
||||||
|
build: docker/baikal/
|
||||||
|
ports:
|
||||||
|
- '8002:80'
|
||||||
|
|
|
||||||
26
docker/baikal/Dockerfile
Normal file
26
docker/baikal/Dockerfile
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Based on https://github.com/ckulka/baikal-docker
|
||||||
|
# Sadly, we can't override the VOLUME it has set, and we want some static
|
||||||
|
# config.
|
||||||
|
FROM php:7.4-apache
|
||||||
|
ENV VERSION 0.7.0
|
||||||
|
|
||||||
|
ADD https://github.com/sabre-io/Baikal/releases/download/$VERSION/baikal-$VERSION.zip .
|
||||||
|
RUN apt-get update && apt-get install -y sqlite3 unzip
|
||||||
|
RUN unzip -q baikal-$VERSION.zip -d /var/www/
|
||||||
|
|
||||||
|
RUN chown -R www-data:www-data /var/www/baikal && \
|
||||||
|
docker-php-ext-install pdo pdo_mysql
|
||||||
|
|
||||||
|
COPY apache.conf /etc/apache2/sites-enabled/000-default.conf
|
||||||
|
COPY start.sh /opt/
|
||||||
|
RUN a2enmod rewrite
|
||||||
|
|
||||||
|
COPY baikal.yaml /var/www/baikal/config/baikal.yaml
|
||||||
|
COPY configure.sql /configure.sql
|
||||||
|
|
||||||
|
RUN touch /var/www/baikal/Specific/INSTALL_DISABLED
|
||||||
|
RUN cat /configure.sql | sqlite3 /var/www/baikal/Specific/db/db.sqlite
|
||||||
|
|
||||||
|
RUN chmod -R 777 /var/www/baikal/Specific/ /var/www/baikal/config/
|
||||||
|
|
||||||
|
CMD [ "sh", "/opt/start.sh" ]
|
||||||
25
docker/baikal/apache.conf
Normal file
25
docker/baikal/apache.conf
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Shameless copied from https://github.com/ckulka/baikal-docker/blob/master/files/apache.conf
|
||||||
|
|
||||||
|
<VirtualHost *:80>
|
||||||
|
|
||||||
|
# InjectedServerAlias dav.example.org dav.example.io
|
||||||
|
DocumentRoot /var/www/baikal/html
|
||||||
|
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteRule /.well-known/carddav /dav.php [R,L]
|
||||||
|
RewriteRule /.well-known/caldav /dav.php [R,L]
|
||||||
|
|
||||||
|
<Directory "/var/www/baikal/html">
|
||||||
|
Options None
|
||||||
|
Options +FollowSymlinks
|
||||||
|
AllowOverride All
|
||||||
|
|
||||||
|
# Confiugration for apache-2.2:
|
||||||
|
Order allow,deny
|
||||||
|
Allow from all
|
||||||
|
|
||||||
|
# Confiugration for apache-2.4:
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
</VirtualHost>
|
||||||
18
docker/baikal/baikal.yaml
Normal file
18
docker/baikal/baikal.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
system:
|
||||||
|
configured_version: 0.7.0
|
||||||
|
timezone: Europe/Paris
|
||||||
|
card_enabled: true
|
||||||
|
cal_enabled: true
|
||||||
|
dav_auth_type: Basic
|
||||||
|
admin_passwordhash: 6a890c3aa185845a4bee1e1caed92e1faaf2dec6772291dca301cef6782e3bce
|
||||||
|
auth_realm: BaikalDAV
|
||||||
|
invite_from: noreply@localhost
|
||||||
|
database:
|
||||||
|
sqlite_file: /var/www/baikal/Specific/db/db.sqlite
|
||||||
|
mysql: false
|
||||||
|
mysql_host: ''
|
||||||
|
mysql_dbname: ''
|
||||||
|
mysql_username: ''
|
||||||
|
mysql_password: ''
|
||||||
|
encryption_key: bdf3bec969736e122e6d5f72c282c49e
|
||||||
|
configured_version: ''
|
||||||
139
docker/baikal/configure.sql
Normal file
139
docker/baikal/configure.sql
Normal file
|
|
@ -0,0 +1,139 @@
|
||||||
|
PRAGMA foreign_keys=OFF;
|
||||||
|
BEGIN TRANSACTION;
|
||||||
|
CREATE TABLE addressbooks (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
principaluri text NOT NULL,
|
||||||
|
displayname text,
|
||||||
|
uri text NOT NULL,
|
||||||
|
description text,
|
||||||
|
synctoken integer DEFAULT 1 NOT NULL
|
||||||
|
);
|
||||||
|
INSERT INTO addressbooks VALUES(1,'principals/baikal','Default Address Book','default','Default Address Book for Baikal',1);
|
||||||
|
CREATE TABLE cards (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
addressbookid integer NOT NULL,
|
||||||
|
carddata blob,
|
||||||
|
uri text NOT NULL,
|
||||||
|
lastmodified integer,
|
||||||
|
etag text,
|
||||||
|
size integer
|
||||||
|
);
|
||||||
|
CREATE TABLE addressbookchanges (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
uri text,
|
||||||
|
synctoken integer NOT NULL,
|
||||||
|
addressbookid integer NOT NULL,
|
||||||
|
operation integer NOT NULL
|
||||||
|
);
|
||||||
|
CREATE TABLE calendarobjects (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
calendardata blob NOT NULL,
|
||||||
|
uri text NOT NULL,
|
||||||
|
calendarid integer NOT NULL,
|
||||||
|
lastmodified integer NOT NULL,
|
||||||
|
etag text NOT NULL,
|
||||||
|
size integer NOT NULL,
|
||||||
|
componenttype text,
|
||||||
|
firstoccurence integer,
|
||||||
|
lastoccurence integer,
|
||||||
|
uid text
|
||||||
|
);
|
||||||
|
CREATE TABLE calendars (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
synctoken integer DEFAULT 1 NOT NULL,
|
||||||
|
components text NOT NULL
|
||||||
|
);
|
||||||
|
INSERT INTO calendars VALUES(1,1,'VEVENT,VTODO');
|
||||||
|
CREATE TABLE calendarinstances (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
calendarid integer,
|
||||||
|
principaluri text,
|
||||||
|
access integer,
|
||||||
|
displayname text,
|
||||||
|
uri text NOT NULL,
|
||||||
|
description text,
|
||||||
|
calendarorder integer,
|
||||||
|
calendarcolor text,
|
||||||
|
timezone text,
|
||||||
|
transparent bool,
|
||||||
|
share_href text,
|
||||||
|
share_displayname text,
|
||||||
|
share_invitestatus integer DEFAULT '2',
|
||||||
|
UNIQUE (principaluri, uri),
|
||||||
|
UNIQUE (calendarid, principaluri),
|
||||||
|
UNIQUE (calendarid, share_href)
|
||||||
|
);
|
||||||
|
INSERT INTO calendarinstances VALUES(1,1,'principals/baikal',NULL,'Default calendar','default','Default calendar',0,'','Europe/Paris',NULL,NULL,NULL,2);
|
||||||
|
CREATE TABLE calendarchanges (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
uri text,
|
||||||
|
synctoken integer NOT NULL,
|
||||||
|
calendarid integer NOT NULL,
|
||||||
|
operation integer NOT NULL
|
||||||
|
);
|
||||||
|
CREATE TABLE calendarsubscriptions (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
uri text NOT NULL,
|
||||||
|
principaluri text NOT NULL,
|
||||||
|
source text NOT NULL,
|
||||||
|
displayname text,
|
||||||
|
refreshrate text,
|
||||||
|
calendarorder integer,
|
||||||
|
calendarcolor text,
|
||||||
|
striptodos bool,
|
||||||
|
stripalarms bool,
|
||||||
|
stripattachments bool,
|
||||||
|
lastmodified int
|
||||||
|
);
|
||||||
|
CREATE TABLE schedulingobjects (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
principaluri text NOT NULL,
|
||||||
|
calendardata blob,
|
||||||
|
uri text NOT NULL,
|
||||||
|
lastmodified integer,
|
||||||
|
etag text NOT NULL,
|
||||||
|
size integer NOT NULL
|
||||||
|
);
|
||||||
|
CREATE TABLE locks (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
owner text,
|
||||||
|
timeout integer,
|
||||||
|
created integer,
|
||||||
|
token text,
|
||||||
|
scope integer,
|
||||||
|
depth integer,
|
||||||
|
uri text
|
||||||
|
);
|
||||||
|
CREATE TABLE principals (
|
||||||
|
id INTEGER PRIMARY KEY ASC NOT NULL,
|
||||||
|
uri TEXT NOT NULL,
|
||||||
|
email TEXT,
|
||||||
|
displayname TEXT,
|
||||||
|
UNIQUE(uri)
|
||||||
|
);
|
||||||
|
INSERT INTO principals VALUES(1,'principals/baikal','baikal@example.com','Baikal');
|
||||||
|
CREATE TABLE groupmembers (
|
||||||
|
id INTEGER PRIMARY KEY ASC NOT NULL,
|
||||||
|
principal_id INTEGER NOT NULL,
|
||||||
|
member_id INTEGER NOT NULL,
|
||||||
|
UNIQUE(principal_id, member_id)
|
||||||
|
);
|
||||||
|
CREATE TABLE propertystorage (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
path text NOT NULL,
|
||||||
|
name text NOT NULL,
|
||||||
|
valuetype integer NOT NULL,
|
||||||
|
value string
|
||||||
|
);
|
||||||
|
CREATE TABLE users (
|
||||||
|
id integer primary key asc NOT NULL,
|
||||||
|
username TEXT NOT NULL,
|
||||||
|
digesta1 TEXT NOT NULL,
|
||||||
|
UNIQUE(username)
|
||||||
|
);
|
||||||
|
INSERT INTO users VALUES(1,'baikal','3b0845b235b7e985ce5905ab8df45e1a');
|
||||||
|
CREATE INDEX addressbookid_synctoken ON addressbookchanges (addressbookid, synctoken);
|
||||||
|
CREATE INDEX calendarid_synctoken ON calendarchanges (calendarid, synctoken);
|
||||||
|
CREATE INDEX principaluri_uri ON calendarsubscriptions (principaluri, uri);
|
||||||
|
CREATE UNIQUE INDEX path_property ON propertystorage (path, name);
|
||||||
|
COMMIT;
|
||||||
16
docker/baikal/start.sh
Normal file
16
docker/baikal/start.sh
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Shameless copied from https://raw.githubusercontent.com/ckulka/baikal-docker/master/files/start.sh
|
||||||
|
|
||||||
|
# Inject ServerName and ServerAlias if specified
|
||||||
|
APACHE_CONFIG="/etc/apache2/sites-available/000-default.conf"
|
||||||
|
if [ ! -z ${BAIKAL_SERVERNAME+x} ]
|
||||||
|
then
|
||||||
|
sed -i "s/# InjectedServerName .*/ServerName $BAIKAL_SERVERNAME/g" $APACHE_CONFIG
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z ${BAIKAL_SERVERALIAS+x} ]
|
||||||
|
then
|
||||||
|
sed -i "s/# InjectedServerAlias .*/ServerAlias $BAIKAL_SERVERALIAS/g" $APACHE_CONFIG
|
||||||
|
fi
|
||||||
|
|
||||||
|
apache2-foreground
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 6c8c379f1ee8bf4ab0ac54fc4eec3e4a6349c237
|
|
||||||
24
tests/storage/servers/baikal/__init__.py
Normal file
24
tests/storage/servers/baikal/__init__.py
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
class ServerMixin:
|
||||||
|
@pytest.fixture
|
||||||
|
def get_storage_args(self, request, tmpdir, slow_create_collection):
|
||||||
|
def inner(collection="test"):
|
||||||
|
base_url = "http://127.0.0.1:8002/"
|
||||||
|
args = {
|
||||||
|
"url": base_url,
|
||||||
|
"username": "baikal",
|
||||||
|
"password": "baikal",
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.storage_class.fileext == '.vcf':
|
||||||
|
args['url'] = base_url + "card.php/"
|
||||||
|
else:
|
||||||
|
args['url'] = base_url + "cal.php/"
|
||||||
|
|
||||||
|
if collection is not None:
|
||||||
|
args = slow_create_collection(self.storage_class, args, collection)
|
||||||
|
return args
|
||||||
|
|
||||||
|
return inner
|
||||||
4
tests/storage/servers/baikal/install.sh
Normal file
4
tests/storage/servers/baikal/install.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
docker-compose build baikal
|
||||||
|
docker-compose up -d baikal
|
||||||
Loading…
Reference in a new issue