Add integration test for web based installer

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
Morris Jobke 2016-11-21 14:00:54 +01:00
parent 3d9077ae3a
commit 951f7f5eaf
No known key found for this signature in database
GPG Key ID: 9CE5ED29E7FCD38A
5 changed files with 85 additions and 14 deletions

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,34 @@
<?php
/**
*
* @author Morris Jobke <hey@morrisjobke.de>
* @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 <http://www.gnu.org/licenses/>.
*
*/
use Behat\Behat\Context\Context;
require __DIR__ . '/../../vendor/autoload.php';
/**
* Setup context.
*/
class SetupContext implements Context {
use BasicStructure;
}

View File

@ -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"

View File

@ -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"