summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-03-06 10:50:21 +0100
committerMaxence Lange <maxence@artificial-owl.com>2019-03-07 06:53:14 -0100
commit3383843670129d128e281ea90cab7db9c21eb196 (patch)
treead8531d25ad32e744b7b5219f219c7c85836613d /tests
parent90779e4e6c69de94d331fcb616ff0db866e7d6dc (diff)
Add basic test skeleton
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'tests')
-rw-r--r--tests/SocialTest.php27
-rw-r--r--tests/bootstrap.php7
-rw-r--r--tests/drone-server-install.sh138
-rw-r--r--tests/drone-server-setup.sh65
-rw-r--r--tests/phpunit.xml23
5 files changed, 260 insertions, 0 deletions
diff --git a/tests/SocialTest.php b/tests/SocialTest.php
new file mode 100644
index 00000000..d45c1e1b
--- /dev/null
+++ b/tests/SocialTest.php
@@ -0,0 +1,27 @@
+<?php
+namespace OCA\Social\Tests;
+
+use OCA\Social\Controller\NavigationController;
+use OCA\Social\Controller\SocialPubController;
+use OCA\Social\Service\CacheActorService;
+use OCP\IL10N;
+use OCP\IRequest;
+
+class SocialTest extends \PHPUnit\Framework\TestCase {
+
+ public function testDummy() {
+ /**
+ * Dummy test to check if phpunit is working properly
+ */
+ $socialPub = new SocialPubController(
+ 'admin',
+ $this->createMock(IRequest::class),
+ $this->createMock(IL10N::class),
+ $this->createMock(CacheActorService::class),
+ $this->createMock(NavigationController::class)
+ );
+ $socialPub->actor('123');
+ $this->assertTrue(true);
+ }
+
+} \ No newline at end of file
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
new file mode 100644
index 00000000..56afd432
--- /dev/null
+++ b/tests/bootstrap.php
@@ -0,0 +1,7 @@
+<?php
+
+require_once __DIR__ . '/../../../tests/bootstrap.php';
+require_once __DIR__.'/../vendor/autoload.php';
+
+\OC_App::loadApp('social');
+OC_Hook::clear();
diff --git a/tests/drone-server-install.sh b/tests/drone-server-install.sh
new file mode 100644
index 00000000..65559056
--- /dev/null
+++ b/tests/drone-server-install.sh
@@ -0,0 +1,138 @@
+#!/bin/bash
+# TODO: move this out of the repo to make it usable in other apps
+
+set -e
+
+DATABASENAME=oc_autotest
+DATABASEUSER=oc_autotest
+[ -z "$DATABASEHOST" ] && DATABASEHOST="localhost"
+ADMINLOGIN=admin
+BASEDIR=$PWD
+
+DBCONFIGS="sqlite mysql pgsql oracle"
+PHPUNIT=$(which phpunit)
+
+if [ $1 ]; then
+ FOUND=0
+ for DBCONFIG in $DBCONFIGS; do
+ if [ $1 = $DBCONFIG ]; then
+ FOUND=1
+ break
+ fi
+ done
+ if [ $FOUND = 0 ]; then
+ echo -e "Unknown database config name \"$1\"\n" >&2
+ print_syntax
+ exit 2
+ fi
+fi
+
+# use tmpfs for datadir - should speedup unit test execution
+DATADIR=$BASEDIR/data-autotest
+
+echo "Using $1 database $DATABASENAME"
+
+# create autoconfig for sqlite, mysql and postgresql
+cat > ./tests/autoconfig-sqlite.php <<DELIM
+<?php
+\$AUTOCONFIG = array (
+ 'installed' => false,
+ 'dbtype' => 'sqlite',
+ 'dbtableprefix' => 'oc_',
+ 'adminlogin' => '$ADMINLOGIN',
+ 'adminpass' => 'admin',
+ 'directory' => '$DATADIR',
+);
+DELIM
+
+cat > ./tests/autoconfig-mysql.php <<DELIM
+<?php
+\$AUTOCONFIG = array (
+ 'installed' => false,
+ 'dbtype' => 'mysql',
+ 'dbtableprefix' => 'oc_',
+ 'adminlogin' => '$ADMINLOGIN',
+ 'adminpass' => 'admin',
+ 'directory' => '$DATADIR',
+ 'dbuser' => '$DATABASEUSER',
+ 'dbname' => '$DATABASENAME',
+ 'dbhost' => '$DATABASEHOST',
+ 'dbpass' => 'owncloud',
+);
+DELIM
+
+cat > ./tests/autoconfig-pgsql.php <<DELIM
+<?php
+\$AUTOCONFIG = array (
+ 'installed' => false,
+ 'dbtype' => 'pgsql',
+ 'dbtableprefix' => 'oc_',
+ 'adminlogin' => '$ADMINLOGIN',
+ 'adminpass' => 'admin',
+ 'directory' => '$DATADIR',
+ 'dbuser' => '$DATABASEUSER',
+ 'dbname' => '$DATABASENAME',
+ 'dbhost' => '$DATABASEHOST',
+ 'dbpass' => 'owncloud',
+);
+DELIM
+
+cat > ./tests/autoconfig-oracle.php <<DELIM
+<?php
+\$AUTOCONFIG = array (
+ 'installed' => false,
+ 'dbtype' => 'oci',
+ 'dbtableprefix' => 'oc_',
+ 'adminlogin' => '$ADMINLOGIN',
+ 'adminpass' => 'admin',
+ 'directory' => '$DATADIR',
+ 'dbuser' => 'autotest',
+ 'dbname' => 'XE',
+ 'dbhost' =>'$DATABASEHOST',
+ 'dbpass' => 'owncloud',
+ 'loglevel' => 0,
+);
+DELIM
+
+function run_install {
+ echo "Setup environment for $1 testing ..."
+ # back to root folder
+ cd $BASEDIR
+
+ # revert changes to tests/data
+ git checkout tests/data/*
+
+ # reset data directory
+ rm -rf $DATADIR
+ mkdir $DATADIR
+ touch $DATADIR/nextcloud.log
+
+ cp tests/preseed-config.php config/config.php
+
+ # copy autoconfig
+ cp $BASEDIR/tests/autoconfig-$1.php $BASEDIR/config/autoconfig.php
+
+ # trigger installation
+ echo "INDEX"
+ php -f index.php
+ echo "END INDEX"
+
+}
+
+function print_config {
+
+ echo "nextcloud configuration:"
+ cat $BASEDIR/config/config.php
+
+ echo "data directory:"
+ ls -ll $DATADIR
+
+ echo "nextcloud.log:"
+ [[ -f "$DATADIR/nextcloud.log" ]] && cat $DATADIR/nextcloud.log
+
+}
+
+run_install $1
+print_config
+
+cd $BASEDIR \ No newline at end of file
diff --git a/tests/drone-server-setup.sh b/tests/drone-server-setup.sh
new file mode 100644
index 00000000..8d754c65
--- /dev/null
+++ b/tests/drone-server-setup.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# ownCloud
+#
+# @author Thomas Müller
+# @copyright 2014 Thomas Müller thomas.mueller@tmit.eu
+#
+
+# TODO: move this out of the repo to make it usable in other apps
+
+set -e
+
+WORKDIR=$PWD
+APP_NAME=$1
+CORE_BRANCH=$2
+DB=$3
+echo "Work directory: $WORKDIR"
+echo "Database: $DB"
+
+# Cloning server
+cd ..
+git clone --depth 1 -b $CORE_BRANCH https://github.com/nextcloud/server
+cd server
+git submodule update --init
+
+# Move app into apps folder
+cd apps
+cp -R $WORKDIR/ $APP_NAME
+cd $WORKDIR
+
+[[ -z "$DATABASEHOST" ]] && DATABASEHOST="$DB"
+
+if [[ "$DB" == "mysql" ]] ; then
+ echo "Waiting for MySQL initialisation ..."
+ if ! ../server/apps/files_external/tests/env/wait-for-connection $DATABASEHOST 3306 600; then
+ echo "[ERROR] Waited 600 seconds, no response" >&2
+ exit 1
+ fi
+fi
+
+if [[ "$DB" == "postgres" ]] ; then
+ echo "Waiting for Postgres to be available ..."
+ if ! ../server/apps/files_external/tests/env/wait-for-connection $DATABASEHOST 5432 60; then
+ echo "[ERROR] Waited 60 seconds for $DATABASEHOST, no response" >&2
+ exit 1
+ fi
+ echo "Give it 10 additional seconds ..."
+ sleep 10
+ # Temporary fix since core_install uses pgsql
+ DB="pgsql"
+fi
+
+# TODO: oracle
+export DATABASEHOST="$DATABASEHOST"
+
+echo "Installing server"
+cd ../server
+bash $WORKDIR/tests/drone-server-install.sh $DB
+
+echo "Installing app: $APP_NAME"
+php occ app:enable $APP_NAME
+
+cd apps/$APP_NAME
+pwd
+ls /drone/src
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
new file mode 100644
index 00000000..a5c8b79c
--- /dev/null
+++ b/tests/phpunit.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<phpunit bootstrap="bootstrap.php"
+ verbose="true"
+ timeoutForSmallTests="900"
+ timeoutForMediumTests="900"
+ timeoutForLargeTests="900"
+ >
+ <testsuite name='Social App Tests'>
+ <directory suffix='Test.php'>.</directory>
+ </testsuite>
+ <!-- filters for code coverage -->
+ <filter>
+ <whitelist>
+ <directory suffix=".php">../appinfo</directory>
+ <directory suffix=".php">../lib</directory>
+ </whitelist>
+ </filter>
+ <logging>
+ <!-- and this is where your report will be written -->
+ <log type="coverage-clover" target="./clover.xml"/>
+ </logging>
+</phpunit>
+