mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-03-25 08:55:50 +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"]
|
||||
path = tests/storage/servers/owncloud
|
||||
url = https://github.com/vdirsyncer/owncloud-testserver
|
||||
|
|
|
|||
|
|
@ -10,3 +10,8 @@ services:
|
|||
build: docker/radicale/
|
||||
ports:
|
||||
- '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