From 951f7f5eaf41f72d3e0bee01cd1f48b79ef964f3 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Mon, 21 Nov 2016 14:00:54 +0100 Subject: [PATCH] Add integration test for web based installer Signed-off-by: Morris Jobke --- .drone.yml | 9 ++++ build/integration/config/behat.yml | 10 +++++ .../features/bootstrap/SetupContext.php | 34 +++++++++++++++ build/integration/run.sh | 41 ++++++++++++------- .../integration/setup_features/setup.feature | 5 +++ 5 files changed, 85 insertions(+), 14 deletions(-) create mode 100644 build/integration/features/bootstrap/SetupContext.php create mode 100644 build/integration/setup_features/setup.feature diff --git a/.drone.yml b/.drone.yml index d6b36097b9..3b56e54278 100644 --- a/.drone.yml +++ b/.drone.yml @@ -322,6 +322,14 @@ pipeline: when: matrix: TESTS: integration-sharees-features + integration-setup-features: + image: nextcloudci/integration-php7.0:integration-php7.0-2 + commands: + - cd build/integration + - ./run.sh setup_features/setup.feature + when: + matrix: + TESTS: integration-setup-features nodb-codecov: image: nextcloudci/php7.0:php7.0-6 commands: @@ -365,6 +373,7 @@ matrix: - TESTS: integration-provisioning-v2 - TESTS: integration-webdav-related - TESTS: integration-sharees-features + - TESTS: integration-setup-features - TESTS: jsunit - TESTS: check-autoloader - TESTS: app-check-code diff --git a/build/integration/config/behat.yml b/build/integration/config/behat.yml index 0c0ecef08e..3728e5461d 100644 --- a/build/integration/config/behat.yml +++ b/build/integration/config/behat.yml @@ -52,6 +52,16 @@ default: - admin - admin regular_user_password: 123456 + setup: + paths: + - %paths.base%/../setup_features + contexts: + - SetupContext: + baseUrl: http://localhost:8080/ocs/ + admin: + - admin + - admin + regular_user_password: 123456 diff --git a/build/integration/features/bootstrap/SetupContext.php b/build/integration/features/bootstrap/SetupContext.php new file mode 100644 index 0000000000..53ad7619d3 --- /dev/null +++ b/build/integration/features/bootstrap/SetupContext.php @@ -0,0 +1,34 @@ + + * @copyright Morris Jobke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +use Behat\Behat\Context\Context; + +require __DIR__ . '/../../vendor/autoload.php'; + + +/** + * Setup context. + */ +class SetupContext implements Context { + use BasicStructure; +} diff --git a/build/integration/run.sh b/build/integration/run.sh index cf42ed75e4..145415fd07 100755 --- a/build/integration/run.sh +++ b/build/integration/run.sh @@ -2,6 +2,9 @@ COMPOSER=$(which composer) +SCENARIO_TO_RUN=$1 +HIDE_OC_LOGS=$2 + if [ -x "$COMPOSER" ]; then echo "Using composer executable $COMPOSER" else @@ -9,14 +12,20 @@ else exit 1 fi -# Disable bruteforce protection because the integration tests do trigger them -../../occ config:system:set auth.bruteforce.protection.enabled --value false --type bool +INSTALLED=$(../../occ status | grep installed: | cut -d " " -f 5) + +if [ "$INSTALLED" == "true" ]; then + # Disable bruteforce protection because the integration tests do trigger them + ../../occ config:system:set auth.bruteforce.protection.enabled --value false --type bool +else + if [ "$SCENARIO_TO_RUN" != "setup_features/setup.feature" ]; then + echo "Nextcloud instance needs to be installed" >&2 + exit 1 + fi +fi composer install -SCENARIO_TO_RUN=$1 -HIDE_OC_LOGS=$2 - # avoid port collision on jenkins - use $EXECUTOR_NUMBER if [ -z "$EXECUTOR_NUMBER" ]; then EXECUTOR_NUMBER=0 @@ -36,15 +45,17 @@ echo $PHPPID_FED export TEST_SERVER_URL="http://localhost:$PORT/ocs/" export TEST_SERVER_FED_URL="http://localhost:$PORT_FED/ocs/" -#Enable external storage app -../../occ app:enable files_external +if [ "$INSTALLED" == "true" ]; then + #Enable external storage app + ../../occ app:enable files_external -mkdir -p work/local_storage -OUTPUT_CREATE_STORAGE=`../../occ files_external:create local_storage local null::null -c datadir=./build/integration/work/local_storage` + mkdir -p work/local_storage + OUTPUT_CREATE_STORAGE=`../../occ files_external:create local_storage local null::null -c datadir=./build/integration/work/local_storage` -ID_STORAGE=`echo $OUTPUT_CREATE_STORAGE | awk {'print $5'}` + ID_STORAGE=`echo $OUTPUT_CREATE_STORAGE | awk {'print $5'}` -../../occ files_external:option $ID_STORAGE enable_sharing true + ../../occ files_external:option $ID_STORAGE enable_sharing true +fi vendor/bin/behat -f junit -f pretty $SCENARIO_TO_RUN RESULT=$? @@ -52,10 +63,12 @@ RESULT=$? kill $PHPPID kill $PHPPID_FED -../../occ files_external:delete -y $ID_STORAGE +if [ "$INSTALLED" -eq "true" ]; then + ../../occ files_external:delete -y $ID_STORAGE -#Disable external storage app -../../occ app:disable files_external + #Disable external storage app + ../../occ app:disable files_external +fi if [ -z $HIDE_OC_LOGS ]; then tail "../../data/nextcloud.log" diff --git a/build/integration/setup_features/setup.feature b/build/integration/setup_features/setup.feature new file mode 100644 index 0000000000..e1d9a73187 --- /dev/null +++ b/build/integration/setup_features/setup.feature @@ -0,0 +1,5 @@ +Feature: setup + + Scenario: setup page is shown properly + When requesting "/index.php" with "GET" + Then the HTTP status code should be "200"