mirror of
https://github.com/phpmyadmin/docker.git
synced 2026-08-24 10:13:22 -05:00
107 lines
3.7 KiB
Bash
Executable File
107 lines
3.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
# Set phpMyAdmin environment
|
|
PHPMYADMIN_HOSTNAME=${TESTSUITE_HOSTNAME:=localhost}
|
|
PHPMYADMIN_PORT=${TESTSUITE_PORT:=80}
|
|
PHPMYADMIN_URL=http://${PHPMYADMIN_HOSTNAME}:${PHPMYADMIN_PORT}/
|
|
|
|
# Set database environment
|
|
PHPMYADMIN_DB_HOSTNAME=${PMA_HOST:=localhost}
|
|
PHPMYADMIN_DB_PORT=${PMA_PORT:=3306}
|
|
TESTSUITE_USER=${TESTSUITE_USER:=root}
|
|
TESTSUITE_ROOT_PASSWORD=${TESTSUITE_ROOT_PASSWORD:-}
|
|
|
|
SUBJECT_CA="/C=US/O=phpMyAdmin testing/OU=Docker/CN=ssl-ca.phpmyadmin.local/emailAddress=ssl-ca@example.org"
|
|
SUBJECT_CLIENT="/C=US/O=phpMyAdmin testing/OU=Docker/CN=client.phpmyadmin.local/emailAddress=secure-user@example.org"
|
|
|
|
if [ "${TESTSUITE_USER}" = "root" ] && [ -n "${TESTSUITE_ROOT_PASSWORD}" ]; then
|
|
echo "Do not use TESTSUITE_ROOT_PASSWORD with TESTSUITE_USER=root"
|
|
exit 1
|
|
fi
|
|
|
|
TEST_CLI_ARGS=""
|
|
if [ -n "${TESTSUITE_HOSTNAME_ARBITRARY:-}" ]; then
|
|
TEST_CLI_ARGS="$TEST_CLI_ARGS --server ${PHPMYADMIN_DB_HOSTNAME}"
|
|
fi
|
|
|
|
if [ -n "${TESTSUITE_ROOT_PASSWORD}" ]; then
|
|
TEST_CLI_ARGS="$TEST_CLI_ARGS --root-password ${TESTSUITE_ROOT_PASSWORD}"
|
|
fi
|
|
|
|
# Find test script
|
|
if [ -f ./phpmyadmin_test.py ] ; then
|
|
FILENAME=./phpmyadmin_test.py
|
|
else
|
|
FILENAME=./testing/phpmyadmin_test.py
|
|
fi
|
|
|
|
SSL_FLAG="--skip-ssl"
|
|
|
|
if [ -n "${IS_USING_SSL:-}" ]; then
|
|
SSL_FLAG="--ssl --ssl-verify-server-cert --ssl-ca=/etc/phpmyadmin/ssl/ca-cert.pem"
|
|
fi
|
|
|
|
mariadb $SSL_FLAG -h "${PHPMYADMIN_DB_HOSTNAME}" -P"${PHPMYADMIN_DB_PORT}" -u"$TESTSUITE_USER" -p"${TESTSUITE_PASSWORD}" -e "SELECT @@version;SHOW VARIABLES LIKE 'require_secure_transport';SHOW VARIABLES LIKE '%ssl%';"
|
|
|
|
if [ -n "${IS_USING_SSL:-}" ]; then
|
|
set +e
|
|
mariadb --skip-ssl -h "${PHPMYADMIN_DB_HOSTNAME}" -P"${PHPMYADMIN_DB_PORT}" -u"$TESTSUITE_USER" -p"${TESTSUITE_PASSWORD}" -e "SELECT @@version;SHOW VARIABLES LIKE 'require_secure_transport';" 1> /dev/null 2> /dev/null
|
|
if [ $? != 1 ]; then
|
|
echo "The server does not enforce SSL connections, stopping the test."
|
|
exit 1
|
|
fi
|
|
set -e
|
|
fi
|
|
|
|
if [ -n "${IS_USING_SSL:-}" ] && [ -n "${TESTSUITE_ROOT_PASSWORD}" ]; then
|
|
mariadb $SSL_FLAG -h "${PHPMYADMIN_DB_HOSTNAME}" -P"${PHPMYADMIN_DB_PORT}" -u"root" -p"${TESTSUITE_ROOT_PASSWORD}" \
|
|
-e "CREATE USER 'ssl-specific-user'@'%' REQUIRE SUBJECT '$SUBJECT_CLIENT' AND ISSUER '$SUBJECT_CA';"
|
|
|
|
set +e
|
|
mariadb $SSL_FLAG --ssl-cert=/etc/phpmyadmin/ssl/client-cert.pem --ssl-key=/etc/phpmyadmin/ssl/client-key.pem -h "${PHPMYADMIN_DB_HOSTNAME}" -P"${PHPMYADMIN_DB_PORT}" -u"ssl-specific-user" -e "SELECT @@version;SHOW VARIABLES LIKE 'require_secure_transport';" 1> /dev/null 2> /dev/null
|
|
if [ $? != 0 ]; then
|
|
echo "The server should accept the SSL client cert login, stopping the test."
|
|
exit 1
|
|
fi
|
|
set -e
|
|
|
|
set +e
|
|
mariadb $SSL_FLAG -h "${PHPMYADMIN_DB_HOSTNAME}" -P"${PHPMYADMIN_DB_PORT}" -u"ssl-specific-user" -e "SELECT @@version;SHOW VARIABLES LIKE 'require_secure_transport';" 1> /dev/null 2> /dev/null
|
|
if [ $? != 1 ]; then
|
|
echo "The server should refuse the login without a client cert, stopping the test."
|
|
exit 1
|
|
fi
|
|
set -e
|
|
fi
|
|
|
|
ret=$?
|
|
|
|
if [ $ret -ne 0 ] ; then
|
|
echo "Could not connect to ${PHPMYADMIN_DB_HOSTNAME} on port ${PHPMYADMIN_DB_PORT}"
|
|
exit $ret
|
|
fi
|
|
|
|
curl -fsSL --output /dev/null "${PHPMYADMIN_URL}"
|
|
ret=$?
|
|
|
|
if [ $ret -ne 0 ] ; then
|
|
echo "Could not connect to ${PHPMYADMIN_URL}"
|
|
exit $ret
|
|
fi
|
|
|
|
# Perform tests
|
|
ret=0
|
|
pytest -p no:cacheprovider -q --url "$PHPMYADMIN_URL" --username $TESTSUITE_USER --password "$TESTSUITE_PASSWORD" $TEST_CLI_ARGS $FILENAME
|
|
ret=$?
|
|
|
|
# Show debug output in case of failure
|
|
if [ $ret -ne 0 ] ; then
|
|
${COMMAND_HOST} ps faux
|
|
echo "Result of ${PHPMYADMIN_DB_HOSTNAME} tests: FAILED"
|
|
exit $ret
|
|
fi
|
|
|
|
echo "Result of ${PHPMYADMIN_DB_HOSTNAME} tests: SUCCESS"
|