initial runtime test passing

This commit is contained in:
Diego Lendoiro 2018-01-11 18:08:49 +01:00
parent 7b82cdac55
commit 7547032ce7
4 changed files with 100 additions and 16 deletions

View File

@ -2,7 +2,7 @@ FROM php:7-fpm-alpine3.7
LABEL MAINTAINER diego@passbolt.com
ENV PASSBOLT_VERSION 1.6.5
ENV PASSBOLT_VERSION 2.0.0-rc1
ENV PASSBOLT_URL https://github.com/passbolt/passbolt_api/archive/v${PASSBOLT_VERSION}.tar.gz
ARG PHP_EXTENSIONS="gd \
@ -32,6 +32,7 @@ RUN apk add --no-cache $PHP_GNUPG_BUILD_DEPS \
libxslt-dev \
libmcrypt-dev \
supervisor \
git \
&& pecl install gnupg redis mcrypt-snapshot \
&& docker-php-ext-install -j4 $PHP_EXTENSIONS \
&& docker-php-ext-enable $PHP_EXTENSIONS gnupg redis mcrypt \
@ -45,10 +46,11 @@ COPY src/passbolt_api/ /var/www/passbolt/
RUN cd /var/www/passbolt \
&& composer global require hirak/prestissimo \
&& composer install \
&& chown -R nginx:nginx /var/www/passbolt \
&& chmod -R o-w /var/www/passbolt \
&& chmod -R +w /var/www/passbolt/tmp \
&& chmod -R +w /var/www/passbolt/webroot/img/public
&& chown -R www-data:www-data /var/www/passbolt \
&& chmod 775 $(find /var/www/passbolt/tmp -type f) \
&& chmod 664 $(find /var/www/passbolt/tmp -type d) \
&& chmod 775 $(find /var/www/passbolt/webroot/img/public -type f) \
&& chmod 664 $(find /var/www/passbolt/webroot/img/public -type d)
COPY conf/passbolt.conf /etc/nginx/conf.d/default.conf
COPY conf/supervisord.conf /etc/supervisord.conf

View File

@ -24,17 +24,17 @@ gpg_gen_key() {
Name-Email: $key_email
Expire-Date: $expiration
%commit
EOF" -ls /bin/sh nginx
EOF" -ls /bin/sh www-data
su -m -c "gpg --armor --export-secret-keys $key_email > $gpg_private_key" -ls /bin/sh nginx
su -m -c "gpg --armor --export $key_email > $gpg_public_key" -ls /bin/sh nginx
su -c "gpg --armor --export-secret-keys $key_email > $gpg_private_key" -ls /bin/sh www-data
su -c "gpg --armor --export $key_email > $gpg_public_key" -ls /bin/sh www-data
}
gpg_import_key() {
key_id=""
key_id=$(su -m -c "gpg --with-colons $gpg_private_key | grep sec |cut -f5 -d:" -ls /bin/sh nginx)
su -m -c "gpg --batch --import $gpg_public_key" -ls /bin/sh nginx
su -m -c "gpg -K $key_id" -ls /bin/sh nginx || su -m -c "gpg --batch --import $gpg_private_key" -ls /bin/sh nginx
key_id=$(su -m -c "gpg --with-colons $gpg_private_key | grep sec |cut -f5 -d:" -ls /bin/sh www-data)
su -c "gpg --batch --import $gpg_public_key" -ls /bin/sh www-data
su -c "gpg -K $key_id" -ls /bin/sh www-data || su -m -c "gpg --batch --import $gpg_private_key" -ls /bin/sh www-data
}
gen_ssl_cert() {
@ -53,8 +53,8 @@ install() {
-p"$DATASOURCES_DEFAULT_PASSWORD" |wc -l)
if [ "$tables" -eq 0 ]; then
su -c "cp /var/www/passbolt/config/app.default.php /var/www/passbolt/config/app.php" -s /bin/sh nginx
su -m -c "PATH=$PATH:/usr/local/bin /var/www/passbolt/bin/cake passbolt install --no-admin --force" -s /bin/sh nginx
su -c "cp /var/www/passbolt/config/app.default.php /var/www/passbolt/config/app.php" -s /bin/sh www-data
su -c "PATH=$PATH:/usr/local/bin /var/www/passbolt/bin/cake passbolt install --no-admin --force" -s /bin/sh www-data
else
echo "Enjoy! ☮"
fi
@ -70,7 +70,7 @@ email_cron_job() {
echo "* * * * * run-parts $cron_task_dir" >> $root_crontab
echo "#!/bin/sh" > $cron_task
chmod +x $cron_task
echo "su -c \"$process_email\" -s /bin/sh nginx" >> $cron_task
echo "su -c \"$process_email\" -s /bin/sh www-data" >> $cron_task
}
if [ -z "$DATASOURCES_DEFAULT_HOST" ] \
@ -95,7 +95,7 @@ if [ ! -f $ssl_key ] && [ ! -L $ssl_key ] && \
gen_ssl_cert
fi
gpg_auto_fingerprint=$(su -m -c "gpg --with-fingerprint $gpg_public_key | grep fingerprint | awk '{for(i=4;i<=NF;++i)printf \$i}'" -ls /bin/sh nginx)
gpg_auto_fingerprint=$(su -c "gpg --with-fingerprint $gpg_public_key | grep fingerprint | awk '{for(i=4;i<=NF;++i)printf \$i}'" -ls /bin/sh www-data)
export PASSBOLT_GPG_SERVER_KEY_FINGERPRINT=$gpg_auto_fingerprint
install
email_cron_job

View File

@ -21,7 +21,7 @@ describe 'Dockerfile' do
let(:passbolt_home) { '/var/www/passbolt' }
let(:passbolt_tmp) { '/var/www/passbolt/tmp' }
let(:passbolt_image) { '/var/www/passbolt/webroot/img/public' }
let(:passbolt_owner) { 'nginx' }
let(:passbolt_owner) { 'www-data' }
let(:exposed_ports) { [ '80', '443' ] }
let(:composer) { '/usr/local/bin/composer'}
let(:php_extensions) { [

View File

@ -0,0 +1,82 @@
require 'spec_helper'
require 'rspec/wait'
describe 'passbolt_api service' do
before(:all) do
@mysql = Docker::Container.create(
'Env' => [
'MYSQL_ROOT_PASSWORD=test',
'MYSQL_DATABASE=passbolt',
'MYSQL_USER=passbolt',
'MYSQL_PASSWORD=P4ssb0lt'
],
"Healthcheck" => {
"Test": [
"CMD-SHELL",
"mysqladmin ping --silent"
]
},
'Image' => 'mysql')
@mysql.start
while @mysql.json['State']['Health']['Status'] != 'healthy'
sleep 1
end
@image = Docker::Image.build_from_dir(ROOT_DOCKERFILES)
@container = Docker::Container.create(
'Env' => [
"DATASOURCES_DEFAULT_HOST=#{@mysql.json['NetworkSettings']['IPAddress']}",
'DATASOURCES_DEFAULT_PASSWORD=P4ssb0lt',
'DATASOURCES_DEFAULT_USERNAME=passbolt',
'DATASOURCES_DEFAULT_DATABASE=passbolt',
#'DATASOURCES_DEFAULT_PORT=3306',
#'PASSBOLT_GPG_KEYRING=/var/lib/nginx/.gnupg',
#'PASSBOLT_GPG_SERVER_KEY_PUBLIC=/var/www/passbolt/config/gpg/serverkey.asc',
#'PASSBOLT_GPG_SERVER_KEY_PRIVATE=/var/www/passbolt/config/gpg/serverkey_private.asc'
],
'Image' => @image.id)
@container.start
@container.logs(stdout: true)
set :docker_container, @container.id
sleep 17
end
after(:all) do
@mysql.kill
@container.kill
end
describe 'php service' do
it 'is running supervised' do
expect(process('php-fpm')).to be_running.under('supervisor')
end
it 'has its port open' do
expect(port(9000)).to be_listening.with('tcp')
end
end
describe 'email cron' do
it 'is running supervised' do
expect(service('crond')).to be_running.under('supervisor')
end
end
describe 'web service' do
it 'is running supervised' do
expect(service('nginx')).to be_running.under('supervisor')
end
it 'is listening on port 80' do
expect(port(80)).to be_listening.with('tcp')
end
it 'is listening on port 443' do
expect(port(443)).to be_listening.with('tcp')
end
end
end