aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2014-02-07 23:29:26 +0100
committerRobin Appelman <icewind@owncloud.com>2014-02-07 23:29:26 +0100
commit8ad3fc89bed6b52b0f40095834b3b61b36d7c71c (patch)
treefbb1d0ecf7f9ce6241c9265431686f89bd0014df /tests
parentf830ad0e47df14e821161c49ab1b52694f74912a (diff)
parent91254c304d454b6f7977037dbd5dd2db5e00ff9f (diff)
downloadnextcloud-server-8ad3fc89bed6b52b0f40095834b3b61b36d7c71c.tar.gz
nextcloud-server-8ad3fc89bed6b52b0f40095834b3b61b36d7c71c.zip
Merge branch 'master' into quota-space-root
Diffstat (limited to 'tests')
-rw-r--r--tests/karma.config.js64
-rw-r--r--tests/lib/errorHandler.php62
-rw-r--r--tests/lib/request.php15
3 files changed, 129 insertions, 12 deletions
diff --git a/tests/karma.config.js b/tests/karma.config.js
index f73ade0f3c6..529bd31338f 100644
--- a/tests/karma.config.js
+++ b/tests/karma.config.js
@@ -29,25 +29,52 @@
* environment variable to the apps name, for example "core" or "files_encryption".
* Multiple apps can be specified by separating them with space.
*
+ * Setting the environment variable NOCOVERAGE to 1 will disable the coverage
+ * preprocessor, which is needed to be able to debug tests properly in a browser.
*/
+
+/* jshint node: true */
module.exports = function(config) {
+ function findApps() {
+ /*
+ var fs = require('fs');
+ var apps = fs.readdirSync('apps');
+ return apps;
+ */
+ // other apps tests don't run yet... needs further research / clean up
+ return ['files'];
+ }
+
+ // respect NOCOVERAGE env variable
+ // it is useful to disable coverage for debugging
+ // because the coverage preprocessor will wrap the JS files somehow
+ var enableCoverage = !parseInt(process.env.NOCOVERAGE, 10);
+ console.log('Coverage preprocessor: ', enableCoverage?'enabled':'disabled');
+
// default apps to test when none is specified (TODO: read from filesystem ?)
- var defaultApps = 'core files';
- var appsToTest = process.env.KARMA_TESTSUITE || defaultApps;
+ var appsToTest = process.env.KARMA_TESTSUITE;
+ if (appsToTest) {
+ appsToTest = appsToTest.split(' ');
+ }
+ else {
+ appsToTest = ['core'].concat(findApps());
+ }
+
+ console.log('Apps to test: ', appsToTest);
// read core files from core.json,
// these are required by all apps so always need to be loaded
// note that the loading order is important that's why they
// are specified in a separate file
var corePath = 'core/js/';
- var coreFiles = require('../' + corePath + 'core.json').modules;
+ var coreModule = require('../' + corePath + 'core.json');
var testCore = false;
var files = [];
var index;
+ var preprocessors = {};
// find out what apps to test from appsToTest
- appsToTest = appsToTest.split(' ');
index = appsToTest.indexOf('core');
if (index > -1) {
appsToTest.splice(index, 1);
@@ -60,11 +87,23 @@ module.exports = function(config) {
// core mocks
files.push(corePath + 'tests/specHelper.js');
- // add core files
- for ( var i = 0; i < coreFiles.length; i++ ) {
- files.push( corePath + coreFiles[i] );
+ // add core library files
+ for ( var i = 0; i < coreModule.libraries.length; i++ ) {
+ var srcFile = corePath + coreModule.libraries[i];
+ files.push(srcFile);
+ }
+
+ // add core modules files
+ for ( var i = 0; i < coreModule.modules.length; i++ ) {
+ var srcFile = corePath + coreModule.modules[i];
+ files.push(srcFile);
+ if (enableCoverage) {
+ preprocessors[srcFile] = 'coverage';
+ }
}
+ // TODO: settings pages
+
// need to test the core app as well ?
if (testCore) {
// core tests
@@ -73,7 +112,11 @@ module.exports = function(config) {
for ( var i = 0; i < appsToTest.length; i++ ) {
// add app JS
- files.push('apps/' + appsToTest[i] + '/js/*.js');
+ var srcFile = 'apps/' + appsToTest[i] + '/js/*.js';
+ files.push(srcFile);
+ if (enableCoverage) {
+ preprocessors[srcFile] = 'coverage';
+ }
// add test specs
files.push('apps/' + appsToTest[i] + '/tests/js/*.js');
}
@@ -83,7 +126,6 @@ module.exports = function(config) {
// base path, that will be used to resolve files and exclude
basePath: '..',
-
// frameworks to use
frameworks: ['jasmine'],
@@ -106,9 +148,7 @@ module.exports = function(config) {
// web server port
port: 9876,
- preprocessors: {
- 'apps/files/js/*.js': 'coverage'
- },
+ preprocessors: preprocessors,
coverageReporter: {
dir:'tests/karma-coverage',
diff --git a/tests/lib/errorHandler.php b/tests/lib/errorHandler.php
new file mode 100644
index 00000000000..68b87deccb6
--- /dev/null
+++ b/tests/lib/errorHandler.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Bjoern Schiessle
+ * @copyright 2014 Bjoern Schiessle <schiessle@owncloud.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library 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 library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+class Test_ErrorHandler extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @brief provide username, password combinations for testRemovePassword
+ * @return array
+ */
+ function passwordProvider() {
+ return array(
+ array('user', 'password'),
+ array('user@owncloud.org', 'password'),
+ array('user', 'pass@word'),
+ array('us:er', 'password'),
+ array('user', 'pass:word'),
+ );
+
+ }
+
+ /**
+ * @dataProvider passwordProvider
+ * @param string $username
+ * @param string $password
+ */
+ function testRemovePassword($username, $password) {
+ $url = 'http://'.$username.':'.$password.'@owncloud.org';
+ $expectedResult = 'http://xxx:xxx@owncloud.org';
+ $result = TestableErrorHandler::testRemovePassword($url);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+}
+
+/**
+ * @brief dummy class to access protected methods of \OC\Log\ErrorHandler
+ */
+class TestableErrorHandler extends \OC\Log\ErrorHandler {
+ public static function testRemovePassword($msg) {
+ return self::removePassword($msg);
+ }
+}
diff --git a/tests/lib/request.php b/tests/lib/request.php
index c6401a57144..1d77acc70ae 100644
--- a/tests/lib/request.php
+++ b/tests/lib/request.php
@@ -118,6 +118,21 @@ class Test_Request extends PHPUnit_Framework_TestCase {
),
true
),
+ array(
+ 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0',
+ OC_Request::USER_AGENT_FREEBOX,
+ false
+ ),
+ array(
+ 'Mozilla/5.0',
+ OC_Request::USER_AGENT_FREEBOX,
+ true
+ ),
+ array(
+ 'Fake Mozilla/5.0',
+ OC_Request::USER_AGENT_FREEBOX,
+ false
+ ),
);
}
}