Page MenuHomePhorge

D3680.1775542628.diff
No OneTemporary

Authored By
Unknown
Size
14 KB
Referenced Files
None
Subscribers
None

D3680.1775542628.diff

diff --git a/ansible/env.local b/ansible/env.local
--- a/ansible/env.local
+++ b/ansible/env.local
@@ -34,3 +34,14 @@
APP_PASSPHRASE=simple123
MAIL_DRIVER=log
+
+KOLAB_SSL_CERTIFICATE=/etc/letsencrypt/live/{{ host }}/cert.pem
+KOLAB_SSL_CERTIFICATE_FULLCHAIN=/etc/letsencrypt/live/{{ host }}/fullchain.pem
+KOLAB_SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/{{ host }}/privkey.pem
+
+PROXY_SSL_CERTIFICATE=/etc/letsencrypt/live/{{ host }}/fullchain.pem
+PROXY_SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/{{ host }}/privkey.pem
+
+NGINX_SSL_CERTIFICATE=/etc/letsencrypt/live/{{ host }}/fullchain.pem
+NGINX_SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/{{ host }}/privkey.pem
+
diff --git a/ansible/packages.yml b/ansible/packages.yml
--- a/ansible/packages.yml
+++ b/ansible/packages.yml
@@ -6,5 +6,5 @@
- tig
- tmux
- docker
- - docker-compose
+ - docker-compose-plugin
- certbot
diff --git a/bin/deploy.sh b/bin/deploy.sh
--- a/bin/deploy.sh
+++ b/bin/deploy.sh
@@ -1,5 +1,4 @@
#!/bin/bash
bin/quickstart.sh --nodev
-docker exec -w /src/kolabsrc/ kolab-webapp ./artisan user:assign john@kolab.org meet
docker exec -w /src/kolabsrc/ kolab-webapp ./artisan user:assign john@kolab.org beta
diff --git a/bin/quickstart.sh b/bin/quickstart.sh
--- a/bin/quickstart.sh
+++ b/bin/quickstart.sh
@@ -7,9 +7,6 @@
exit 1
}
-rpm -qv docker-compose >/dev/null 2>&1 || \
- test ! -z "$(which docker-compose 2>/dev/null)" || \
- die "Is docker-compose installed?"
test ! -z "$(grep 'systemd.unified_cgroup_hierarchy=0' /proc/cmdline)" || \
die "systemd containers only work with cgroupv1 (use 'grubby --update-kernel=ALL --args=\"systemd.unified_cgroup_hierarchy=0\"' and a reboot to fix)"
@@ -25,17 +22,19 @@
cat src/env.local >> src/.env
fi
+export DOCKER_BUILDKIT=0
+
docker pull docker.io/kolab/centos7:latest
-docker-compose down --remove-orphans
+docker compose down --remove-orphans
src/artisan octane:stop >/dev/null 2>&1 || :
src/artisan horizon:terminate >/dev/null 2>&1 || :
-docker-compose build coturn kolab mariadb meet pdns-sql proxy redis nginx
+docker compose build coturn kolab mariadb meet pdns-sql proxy redis nginx
bin/regen-certs
-docker-compose up -d coturn kolab mariadb meet pdns-sql proxy redis
+docker compose up -d coturn kolab mariadb meet pdns-sql proxy redis
# Workaround until we have docker-compose --wait (https://github.com/docker/compose/pull/8777)
function wait_for_container {
@@ -65,8 +64,9 @@
if [ "$1" == "--nodev" ]; then
echo "starting everything in containers"
- docker-compose build swoole webapp
- docker-compose up -d webapp nginx
+ docker compose build swoole
+ docker compose build webapp
+ docker compose up -d webapp nginx
wait_for_container 'kolab-webapp'
exit 0
fi
@@ -128,7 +128,7 @@
npm run dev
popd
-docker-compose up -d nginx
+docker compose up -d nginx
pushd ${base_dir}/src/
rm -rf database/database.sqlite
diff --git a/ci/Makefile b/ci/Makefile
new file mode 100644
--- /dev/null
+++ b/ci/Makefile
@@ -0,0 +1,29 @@
+HOSTNAME=ci.local
+PUBLIC_IP=127.0.0.1
+OPENEXCHANGERATES_API_KEY=dummy
+FIREBASE_API_KEY=dummy
+PWD=$(shell pwd)
+
+
+configure:
+ cd .. ; \
+ cp ci/env.local src/env.local ; \
+ sed -i 's/{{ host }}/${HOSTNAME}/g' src/env.local ; \
+ sed -i 's/{{ public_ip }}/${PUBLIC_IP}/g' src/env.local ; \
+ sed -i 's/{{ openexchangerates_api_key }}/${OPENEXCHANGERATES_API_KEY}/g' src/env.local ; \
+ sed -i 's/{{ firebase_api_key }}/${FIREBASE_API_KEY}/g' src/env.local ;
+
+setup:
+ cd .. && bin/quickstart.sh --nodev
+
+build:
+ cd .. && DOCKER_BUILDKIT=0 docker compose build swoole && DOCKER_BUILDKIT=0 docker compose build tests && cd ci
+
+lint:
+ docker run -v ${PWD}/../:/src/kolab.orig -t kolab-tests /lint.sh
+
+test:
+ docker run --network=host -v ${PWD}/../src:/src/kolabsrc.orig -t kolab-tests /init.sh
+
+all: configure setup build lint test
+
diff --git a/ansible/env.local b/ci/env.local
copy from ansible/env.local
copy to ci/env.local
--- a/ansible/env.local
+++ b/ci/env.local
@@ -34,3 +34,13 @@
APP_PASSPHRASE=simple123
MAIL_DRIVER=log
+
+KOLAB_SSL_CERTIFICATE=/etc/pki/tls/certs/kolab.hosted.com.cert
+KOLAB_SSL_CERTIFICATE_FULLCHAIN=/etc/pki/tls/certs/kolab.hosted.com.chain.pem
+KOLAB_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/kolab.hosted.com.key
+
+PROXY_SSL_CERTIFICATE=/etc/pki/tls/certs/imap.hosted.com.cert
+PROXY_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/imap.hosted.com.key
+
+NGINX_SSL_CERTIFICATE=/etc/pki/tls/certs/imap.hosted.com.cert
+NGINX_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/imap.hosted.com.key
diff --git a/docker-compose.yml b/docker-compose.yml
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -38,9 +38,9 @@
- DB_KOLAB_PASSWORD=Welcome2KolabSystems
- DB_RC_USERNAME=roundcube
- DB_RC_PASSWORD=Welcome2KolabSystems
- - SSL_CERTIFICATE=/etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/cert.pem
- - SSL_CERTIFICATE_FULLCHAIN=/etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/fullchain.pem
- - SSL_CERTIFICATE_KEY=/etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/privkey.pem
+ - SSL_CERTIFICATE=${KOLAB_SSL_CERTIFICATE:?err}
+ - SSL_CERTIFICATE_FULLCHAIN=${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err}
+ - SSL_CERTIFICATE_KEY=${KOLAB_SSL_CERTIFICATE_KEY:?err}
- IMAP_HOST=127.0.0.1
- IMAP_PORT=11993
- MAIL_HOST=127.0.0.1
@@ -88,8 +88,8 @@
context: ./docker/nginx/
args:
APP_WEBSITE_DOMAIN: ${APP_WEBSITE_DOMAIN:?err}
- SSL_CERTIFICATE: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/fullchain.pem
- SSL_CERTIFICATE_KEY: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/privkey.pem
+ SSL_CERTIFICATE: ${NGINX_SSL_CERTIFICATE:?err}
+ SSL_CERTIFICATE_KEY: ${NGINX_SSL_CERTIFICATE_KEY:?err}
depends_on:
kolab:
condition: service_healthy
@@ -135,8 +135,8 @@
context: ./docker/proxy/
args:
APP_WEBSITE_DOMAIN: ${APP_WEBSITE_DOMAIN:?err}
- SSL_CERTIFICATE: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/fullchain.pem
- SSL_CERTIFICATE_KEY: /etc/letsencrypt/live/${APP_WEBSITE_DOMAIN:?err}/privkey.pem
+ SSL_CERTIFICATE: ${PROXY_SSL_CERTIFICATE:?err}
+ SSL_CERTIFICATE_KEY: ${PROXY_SSL_CERTIFICATE_KEY:?err}
healthcheck:
interval: 10s
test: "kill -0 $$(cat /run/nginx.pid)"
@@ -245,6 +245,5 @@
image: kolab-meet
volumes:
- ./meet/server:/src/meet/:ro
- - ./docker/meet/build/node_modules:/root/node_modules
- ./docker/certs/meet.${APP_WEBSITE_DOMAIN}.cert:/etc/pki/tls/certs/meet.${APP_WEBSITE_DOMAIN}.cert
- ./docker/certs/meet.${APP_WEBSITE_DOMAIN}.key:/etc/pki/tls/private/meet.${APP_WEBSITE_DOMAIN}.key
diff --git a/docker/kolab/Dockerfile b/docker/kolab/Dockerfile
--- a/docker/kolab/Dockerfile
+++ b/docker/kolab/Dockerfile
@@ -40,10 +40,10 @@
# Add the EPEL key.
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
-RUN rpm --import https://mirror.kolabenterprise.com/maipo.asc
+RUN rpm --import https://mirror.apheleia-it.ch/repos/Kolab:/16/key.asc
-RUN yum -y install https://mirror.kolabenterprise.com/kolab-16-for-el7.rpm && \
- yum -y install kolab-16-release-development patch && \
+RUN yum -y install https://mirror.apheleia-it.ch/repos/Kolab:/16/kolab-16-for-el7.rpm && \
+ yum -y install kolab-16-release patch && \
yum clean all
RUN yum -y --setopt tsflags= install kolab roundcubemail-plugin-enigma
diff --git a/docker/tests/Dockerfile b/docker/tests/Dockerfile
--- a/docker/tests/Dockerfile
+++ b/docker/tests/Dockerfile
@@ -6,7 +6,16 @@
RUN dnf -y install findutils php-phpunit-PHPUnit chromium php-xdebug
+RUN mkdir /src/ && chown 1001:100 /src/
+
+RUN usermod -G wheel default
+RUN echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
+RUN chmod 777 /opt/app-root/src
+
+USER default
+
EXPOSE 8000
COPY init.sh /init.sh
+COPY lint.sh /lint.sh
CMD [ "/init.sh" ]
diff --git a/docker/tests/init.sh b/docker/tests/init.sh
--- a/docker/tests/init.sh
+++ b/docker/tests/init.sh
@@ -1,10 +1,13 @@
#!/bin/bash
-set -e
-cp -a /src/kolabsrc.orig /src/kolabsrc
+#set -e
+sudo cp -a /src/kolabsrc.orig /src/kolabsrc
+sudo chmod 777 -R /src/kolabsrc
cd /src/kolabsrc
-rm -rf vendor/ composer.lock
+sudo rm -rf vendor/ composer.lock
php -dmemory_limit=-1 $(command -v composer) install
+sudo rm -rf node_modules
+mkdir node_modules
npm install
find bootstrap/cache/ -type f ! -name ".gitignore" -delete
./artisan key:generate
@@ -32,10 +35,6 @@
npm run dev
-
-
-
-# Tests\Feature\Controller\PaymentsMollieEuroTest
# /usr/bin/chromium-browser --no-sandbox --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
rm -rf database/database.sqlite
@@ -45,10 +44,10 @@
# nohup ./artisan horizon >/dev/null 2>&1 &
./artisan octane:start --host=$(grep OCTANE_HTTP_HOST .env | tail -n1 | sed "s/OCTANE_HTTP_HOST=//") >/dev/null 2>&1 &
-# phpunit --verbose tests/Feature/Controller/PaymentsMollieEuroTest.php
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude-group skipci \
--verbose \
--stop-on-defect \
--stop-on-error \
@@ -58,6 +57,7 @@
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude-group skipci \
--verbose \
--stop-on-defect \
--stop-on-error \
@@ -67,6 +67,7 @@
php \
-dmemory_limit=-1 \
vendor/bin/phpunit \
+ --exclude-group skipci,coinbase,mollie,stripe,meet,dns \
--verbose \
--stop-on-defect \
--stop-on-error \
diff --git a/docker/tests/lint.sh b/docker/tests/lint.sh
new file mode 100755
--- /dev/null
+++ b/docker/tests/lint.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -e
+sudo cp -a /src/kolab.orig /src/kolab
+sudo chmod 777 -R /src/kolab
+cd /src/kolab/src
+
+sudo rm -rf vendor/ composer.lock
+php -dmemory_limit=-1 $(command -v composer) install
+sudo rm -rf node_modules
+mkdir node_modules
+npm install
+
+php -dmemory_limit=500M \
+ vendor/bin/phpcs \
+ -s
+
+php -dmemory_limit=500M \
+ vendor/bin/phpstan \
+ analyse
+
+npm run lint
diff --git a/src/.env.example b/src/.env.example
--- a/src/.env.example
+++ b/src/.env.example
@@ -174,3 +174,13 @@
KB_ACCOUNT_DELETE=
KB_ACCOUNT_SUSPENDED=
KB_PAYMENT_SYSTEM=
+
+KOLAB_SSL_CERTIFICATE=/etc/pki/tls/certs/kolab.hosted.com.cert
+KOLAB_SSL_CERTIFICATE_FULLCHAIN=/etc/pki/tls/certs/kolab.hosted.com.chain.pem
+KOLAB_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/kolab.hosted.com.key
+
+PROXY_SSL_CERTIFICATE=/etc/pki/tls/certs/imap.hosted.com.cert
+PROXY_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/imap.hosted.com.key
+
+NGINX_SSL_CERTIFICATE=/etc/pki/tls/certs/imap.hosted.com.cert
+NGINX_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/imap.hosted.com.key
diff --git a/src/app/Providers/Payment/Mollie.php b/src/app/Providers/Payment/Mollie.php
--- a/src/app/Providers/Payment/Mollie.php
+++ b/src/app/Providers/Payment/Mollie.php
@@ -342,11 +342,6 @@
// TODO: Consider https://github.com/mollie/mollie-api-php/issues/502 when it's fixed
$mollie_payment = mollie()->payments()->get($payment_id);
- if (empty($mollie_payment)) {
- // Mollie recommends to return "200 OK" even if the payment does not exist
- return 200;
- }
-
$refunds = [];
if ($mollie_payment->isPaid()) {
diff --git a/src/tests/Browser/Admin/DashboardTest.php b/src/tests/Browser/Admin/DashboardTest.php
--- a/src/tests/Browser/Admin/DashboardTest.php
+++ b/src/tests/Browser/Admin/DashboardTest.php
@@ -42,6 +42,7 @@
/**
* Test user search
+ * @group skipci
*/
public function testSearch(): void
{
@@ -110,6 +111,7 @@
/**
* Test user search deleted user/domain
+ * @group skipci
*/
public function testSearchDeleted(): void
{
diff --git a/src/tests/Browser/DomainTest.php b/src/tests/Browser/DomainTest.php
--- a/src/tests/Browser/DomainTest.php
+++ b/src/tests/Browser/DomainTest.php
@@ -59,6 +59,7 @@
/**
* Test domain info page (non-existing domain id)
+ * @group skipci
*/
public function testDomainInfo404(): void
{
@@ -78,6 +79,7 @@
* Test domain info page (existing domain)
*
* @depends testDomainInfo404
+ * @group skipci
*/
public function testDomainInfo(): void
{
@@ -135,6 +137,7 @@
/**
* Test domain settings
+ * @group skipci
*/
public function testDomainSettings(): void
{
@@ -178,6 +181,7 @@
* Test domains list page
*
* @depends testDomainListUnauth
+ * @group skipci
*/
public function testDomainList(): void
{
@@ -237,6 +241,7 @@
/**
* Test domain creation page
+ * @group skipci
*/
public function testDomainCreate(): void
{
@@ -297,6 +302,7 @@
/**
* Test domain deletion
+ * @group skipci
*/
public function testDomainDelete(): void
{
diff --git a/src/tests/Browser/ErrorTest.php b/src/tests/Browser/ErrorTest.php
--- a/src/tests/Browser/ErrorTest.php
+++ b/src/tests/Browser/ErrorTest.php
@@ -20,8 +20,7 @@
->assertVisible('#app > #header-menu')
->assertVisible('#app > #footer-menu');
- $this->assertSame('404', $browser->text('#error-page .code'));
- $this->assertSame('Not found', $browser->text('#error-page .message'));
+ $this->assertErrorPage(404);
});
$this->browse(function (Browser $browser) {
@@ -30,8 +29,7 @@
->assertVisible('#app > #header-menu')
->assertVisible('#app > #footer-menu');
- $this->assertSame('404', $browser->text('#error-page .code'));
- $this->assertSame('Not found', $browser->text('#error-page .message'));
+ $this->assertErrorPage(404);
});
}
}
diff --git a/src/tests/Feature/Controller/DomainsTest.php b/src/tests/Feature/Controller/DomainsTest.php
--- a/src/tests/Feature/Controller/DomainsTest.php
+++ b/src/tests/Feature/Controller/DomainsTest.php
@@ -44,6 +44,7 @@
/**
* Test domain confirm request
+ * @group skipci
*/
public function testConfirm(): void
{
diff --git a/src/tests/Feature/Jobs/WalletCheckTest.php b/src/tests/Feature/Jobs/WalletCheckTest.php
--- a/src/tests/Feature/Jobs/WalletCheckTest.php
+++ b/src/tests/Feature/Jobs/WalletCheckTest.php
@@ -17,6 +17,7 @@
public function setUp(): void
{
parent::setUp();
+ Carbon::setTestNow(Carbon::createFromDate(2022, 02, 02));
$this->deleteTestUser('wallet-check@kolabnow.com');
}

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 7, 6:17 AM (11 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18841388
Default Alt Text
D3680.1775542628.diff (14 KB)

Event Timeline