diff --git a/test.sh b/test.sh index 6c4ff7e..29d3451 100755 --- a/test.sh +++ b/test.sh @@ -54,11 +54,18 @@ function _vagrant_ssh() { vagrant ssh -c "$command" \ > $tty_output \ 2> >(grep --invert-match 'Connection to 127.0.0.1 closed.' 1>&2) # Filter out the SSH deconnection message printed on stderr + local exit_code=$? + return $exit_code } function _assert_success() { local message="$1" local command="$2" + if [ -z "$command" ]; then + echo "Invalid arguments: command missing." + echo "Usage: _assert_success " + return -1 + fi local RED=`tput setaf 1` local GREEN=`tput setaf 2` @@ -74,6 +81,19 @@ function _assert_success() { set -e # Fail again on first error } +function _assert_mattermost_frontpage_up() { + local domain="$1" + + # On the default Yunohost Vagrant box, this file + # bypass all SSOWAT configurations, and redirects the root of the domain to the SSO login form. + # We need to access the frontpage, so we remove this bypass. + _vagrant_ssh "sudo rm -f /etc/ssowat/conf.json.persistent" + + _assert_success \ + "Mattermost frontpage is reachable" \ + "curl --silent --show-error --insecure -L -H 'Host: ${DOMAIN}' --resolve ${DOMAIN}:443:127.0.0.1 https://${DOMAIN}/ | grep -q 'Mattermost'" +} + function setup() { if $SKIP_SNAPSHOT; then echo "--- Starting Vagrant box ---" @@ -105,11 +125,13 @@ function setup() { function test_simple_install() { echo "--- Running simple installation test ---" _vagrant_ssh "sudo yunohost app install '$APP_DIR' --args 'domain=${DOMAIN}&public_site=Yes&analytics=0' $VERBOSE_OPT" + _assert_mattermost_frontpage_up "$DOMAIN" } function test_simple_upgrade() { echo "--- Running simple upgrade test ---" _vagrant_ssh "sudo yunohost app upgrade $APP_NAME --file '$APP_DIR' $VERBOSE_OPT" + _assert_mattermost_frontpage_up "$DOMAIN" } function test_simple_backup() { @@ -126,6 +148,7 @@ function test_simple_restore() { echo "--- Running simple restore test ---" _vagrant_ssh "sudo yunohost backup list | cut -d ' ' -f 2 > backup_name" _vagrant_ssh "sudo yunohost backup restore \$(cat backup_name) --force --ignore-hooks --apps $APP_NAME $VERBOSE_OPT" + _assert_mattermost_frontpage_up "$DOMAIN" } function test_package_check() {