#!/bin/sh

# Cf. .travis.yml

set -eu
PATH="/usr/sbin:/sbin:/usr/bin:/bin"
export PATH

adduser \
    --home=/var/lib/otrs \
    --ingroup=www-data \
    --shell=/bin/sh \
    --system otrs

# cf. scripts/tools/travis/Config.mysql.pm
MYSQL_DATABASE=otrs
MYSQL_USER=otrs
MYSQL_PASSWORD=secret
MYSQL_DATABASE_TEST=otrstest
MYSQL_USER_TEST=otrstest
MYSQL_PASSWORD_TEST=otrstest

mysql --defaults-extra-file="/etc/mysql/debian.cnf" <<-EOF
	CREATE USER '$MYSQL_USER'@'localhost' IDENTIFIED BY '$MYSQL_PASSWORD';
	CREATE DATABASE $MYSQL_DATABASE CHARACTER SET utf8;
	GRANT ALL PRIVILEGES ON \`$MYSQL_DATABASE\`.* TO '$MYSQL_USER'@'localhost';

	CREATE USER '$MYSQL_USER_TEST'@'localhost' IDENTIFIED BY '$MYSQL_PASSWORD_TEST';
	CREATE DATABASE $MYSQL_DATABASE_TEST CHARACTER SET utf8;
	GRANT ALL PRIVILEGES ON \`$MYSQL_DATABASE_TEST\`.* TO '$MYSQL_USER_TEST'@'localhost';
EOF

mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" <scripts/database/otrs-schema.mysql.sql
mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" <scripts/database/otrs-initial_insert.mysql.sql
mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" <scripts/database/otrs-schema-post.mysql.sql

install -ootrs -gwww-data -m02775 -d var/tmp
install -ootrs -gwww-data -m0775 -Dd var/spool

install -ootrs -gwww-data -m0640 /dev/null Kernel/Config.pm
# tweek config and blacklist broken tests (due to request to
# https://ftp.otrs.org or mail to @localunittest.com)
sed -r 's/(.*\{Database\}.*)\botrs\b/\1'"${MYSQL_DATABASE}"'/;
        s/(.*\{DatabaseUser\}.*)\botrs\b/\1'"${MYSQL_USER}"'/;
        s/(.*\{DatabasePw\}.*)\botrs\b/\1'"${MYSQL_PASSWORD}"'/;
        s#^\s+return\s*;#    $Self->{"UnitTest::Blacklist"} = {\
        foo => [\
            "Package/ConfiguredRepositoryDefinitionGet.t",\
            "Ticket/TicketCreateAfterGet.t",\
            "Ticket/UnlockOnAway.t",\
            "WebUserAgent.t"\
        ]\
    };\n&#;' \
        scripts/tools/travis/Config.mysql.pm >Kernel/Config.pm

bin/otrs.SetPermissions.pl

runuser -u www-data -- plackup --port 5000 bin/cgi-bin/app.psgi >"$AUTOPKGTEST_TMP/plack.log" 2>&1 & pid=$!
sleep 1

runuser -u otrs -- bin/otrs.CheckSum.pl -a create
runuser -u otrs -- bin/otrs.CheckModules.pl
runuser -u otrs -- perl -cw bin/cgi-bin/index.pl
runuser -u otrs -- perl -cw bin/cgi-bin/app.psgi
runuser -u otrs -- bin/otrs.Console.pl Maint::Database::Check
runuser -u otrs -- bin/otrs.Console.pl Maint::Config::Rebuild
runuser -u otrs -- bin/otrs.Console.pl Dev::UnitTest::Run
