]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add integration test for web based installer 2215/head
authorMorris Jobke <hey@morrisjobke.de>
Mon, 21 Nov 2016 13:00:54 +0000 (14:00 +0100)
committerMorris Jobke <hey@morrisjobke.de>
Mon, 21 Nov 2016 21:00:16 +0000 (22:00 +0100)
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
.drone.yml
build/integration/config/behat.yml
build/integration/features/bootstrap/SetupContext.php [new file with mode: 0644]
build/integration/run.sh
build/integration/setup_features/setup.feature [new file with mode: 0644]

index d6b36097b9679248fa2dc5b885c389ea6ff7dd27..3b56e54278b883ddd1e469d4df193a6dd96a909d 100644 (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
index 0c0ecef08e9c844869292d57ce251edc4eab287e..3728e5461d84d12058eb7e141ab39efa0ffa6cab 100644 (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
 
 
 
diff --git a/build/integration/features/bootstrap/SetupContext.php b/build/integration/features/bootstrap/SetupContext.php
new file mode 100644 (file)
index 0000000..53ad761
--- /dev/null
@@ -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;
+}
index cf42ed75e4cd4a2fc51eb5ff932a6f5d4ca4d1d7..145415fd07959df63d87601e4769b78fcafe5d57 100755 (executable)
@@ -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,13 +12,19 @@ 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)
 
-composer install
+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
 
-SCENARIO_TO_RUN=$1
-HIDE_OC_LOGS=$2
+composer install
 
 # avoid port collision on jenkins - use $EXECUTOR_NUMBER
 if [ -z "$EXECUTOR_NUMBER" ]; then
@@ -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 (file)
index 0000000..e1d9a73
--- /dev/null
@@ -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"