summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2014-05-07 17:54:38 +0200
committerBart Visscher <bartv@thisnet.nl>2014-05-07 17:54:38 +0200
commitf569c721a64486d0e7c7e307ed77ac0caed2dc2d (patch)
treedf7b3399a858ffdae6bd6e66616746efbcee24bc /tests
parent47d70da2f5cb55ad47023b061b68062dd8b8d8e2 (diff)
parent254fa5eb22efa5ba572702064377a6ad9eec9a53 (diff)
downloadnextcloud-server-f569c721a64486d0e7c7e307ed77ac0caed2dc2d.tar.gz
nextcloud-server-f569c721a64486d0e7c7e307ed77ac0caed2dc2d.zip
Merge branch 'master' into optimize-startup-queries
Conflicts: apps/files_sharing/lib/sharedstorage.php tests/lib/group/manager.php removed hasFilesSharedWith from lib/public/share.php and sharedstorage.php to fix merge
Diffstat (limited to 'tests')
-rw-r--r--tests/bootstrap.php10
-rw-r--r--tests/data/db_structure.xml15
-rw-r--r--tests/data/db_structure2.xml15
-rw-r--r--tests/data/lorem-big.txt29
-rw-r--r--tests/enable_all.php2
-rw-r--r--tests/karma.config.js10
-rw-r--r--tests/lib/api.php2
-rw-r--r--tests/lib/appframework/dependencyinjection/DIContainerTest.php2
-rw-r--r--tests/lib/appframework/http/DownloadResponseTest.php2
-rw-r--r--tests/lib/appframework/http/JSONResponseTest.php17
-rw-r--r--tests/lib/appframework/http/RedirectResponseTest.php2
-rw-r--r--tests/lib/appframework/http/RequestTest.php28
-rw-r--r--tests/lib/appframework/http/ResponseTest.php22
-rw-r--r--tests/lib/appframework/http/TemplateResponseTest.php10
-rw-r--r--tests/lib/appframework/middleware/MiddlewareDispatcherTest.php2
-rw-r--r--tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php2
-rw-r--r--tests/lib/appframework/routing/RoutingTest.php38
-rw-r--r--tests/lib/connector/sabre/aborteduploaddetectionplugin.php27
-rw-r--r--tests/lib/connector/sabre/directory.php22
-rw-r--r--tests/lib/connector/sabre/file.php77
-rw-r--r--tests/lib/connector/sabre/objecttree.php15
-rw-r--r--tests/lib/connector/sabre/quotaplugin.php23
-rw-r--r--tests/lib/dbschema.php3
-rw-r--r--tests/lib/files/cache/homecache.php1
-rw-r--r--tests/lib/files/cache/scanner.php26
-rw-r--r--tests/lib/files/cache/updater.php90
-rw-r--r--tests/lib/files/etagtest.php6
-rw-r--r--tests/lib/files/filesystem.php51
-rw-r--r--tests/lib/files/storage/storage.php81
-rw-r--r--tests/lib/files/storage/wrapper/quota.php34
-rw-r--r--tests/lib/files/view.php48
-rw-r--r--tests/lib/group.php19
-rw-r--r--tests/lib/group/group.php64
-rw-r--r--tests/lib/group/manager.php52
-rw-r--r--tests/lib/helper.php213
-rw-r--r--tests/lib/helperstorage.php113
-rw-r--r--tests/lib/image.php24
-rw-r--r--tests/lib/mail.php39
-rw-r--r--tests/lib/preview.php140
-rw-r--r--tests/lib/public/ocpconfig.php37
-rw-r--r--tests/lib/request.php137
-rw-r--r--tests/lib/share/helper.php54
-rw-r--r--tests/lib/share/share.php12
-rw-r--r--tests/lib/template.php38
-rw-r--r--tests/lib/urlgenerator.php73
-rw-r--r--tests/lib/user/manager.php12
-rw-r--r--tests/lib/util.php25
-rw-r--r--tests/lib/utilcheckserver.php108
-rw-r--r--tests/phpunit-autotest.xml1
-rw-r--r--tests/phpunit.xml.dist3
-rw-r--r--tests/startsessionlistener.php47
-rw-r--r--tests/testcleanuplistener.php37
52 files changed, 1673 insertions, 287 deletions
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index 581cfcff9f3..99374d68a5c 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -3,11 +3,17 @@
define('PHPUNIT_RUN', 1);
-require_once __DIR__.'/../lib/base.php';
+$configDir = getenv('CONFIG_DIR');
+if ($configDir) {
+ define('PHPUNIT_CONFIG_DIR', $configDir);
+}
+
+require_once __DIR__ . '/../lib/base.php';
-if(!class_exists('PHPUnit_Framework_TestCase')) {
+if (!class_exists('PHPUnit_Framework_TestCase')) {
require_once('PHPUnit/Autoload.php');
}
OC_Hook::clear();
OC_Log::$enabled = false;
+OC_FileProxy::clearProxies();
diff --git a/tests/data/db_structure.xml b/tests/data/db_structure.xml
index d98066c4b7e..858c9ab1002 100644
--- a/tests/data/db_structure.xml
+++ b/tests/data/db_structure.xml
@@ -223,4 +223,19 @@
</declaration>
</table>
+<table>
+ <name>*dbprefix*migratekeyword</name>
+
+ <declaration>
+
+ <field>
+ <name>select</name>
+ <type>text</type>
+ <default></default>
+ <notnull>true</notnull>
+ <length>255</length>
+ </field>
+ </declaration>
+</table>
+
</database>
diff --git a/tests/data/db_structure2.xml b/tests/data/db_structure2.xml
index ae5f22e9573..568d90ab0a9 100644
--- a/tests/data/db_structure2.xml
+++ b/tests/data/db_structure2.xml
@@ -119,4 +119,19 @@
</declaration>
</table>
+ <table>
+ <name>*dbprefix*migratekeyword</name>
+
+ <declaration>
+
+ <field>
+ <name>select</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>255</length>
+ </field>
+ </declaration>
+ </table>
+
</database>
diff --git a/tests/data/lorem-big.txt b/tests/data/lorem-big.txt
new file mode 100644
index 00000000000..3712b9d30f0
--- /dev/null
+++ b/tests/data/lorem-big.txt
@@ -0,0 +1,29 @@
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id hendrerit felis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed dictum dolor nec lobortis sagittis. Aliquam blandit lobortis ullamcorper. Donec malesuada ante ante, vel cursus purus suscipit ut. Sed a eros vitae lorem tristique hendrerit a a odio. Cras interdum mi lectus, sed molestie mauris tempus sit amet. Praesent auctor neque venenatis diam tincidunt sodales. Maecenas tincidunt ligula et ipsum dignissim, et molestie dui hendrerit. Nunc lobortis mauris vel tempor tristique. Sed consectetur bibendum nunc. Pellentesque augue velit, interdum ac posuere eu, eleifend et massa. Vestibulum ac mi eu mi viverra iaculis. Sed consequat leo adipiscing dui varius, sagittis vestibulum massa vehicula.
+
+Praesent imperdiet erat vitae dui placerat, sit amet vulputate tortor viverra. In laoreet elit lorem, at luctus est tempor ac. Nam elementum scelerisque nisl vitae accumsan. Curabitur cursus rutrum est, ut adipiscing ante elementum ut. Ut lectus sem, luctus ut massa non, dignissim vestibulum ipsum. Suspendisse non convallis enim, aliquam adipiscing velit. Donec pharetra non turpis hendrerit porttitor. Aliquam erat volutpat.
+
+Cras eget arcu eu dolor faucibus accumsan non eget orci. Integer quis quam tincidunt, faucibus neque in, imperdiet lacus. Aenean dui turpis, lacinia quis ligula non, semper adipiscing tellus. Curabitur vitae dui quis nisl malesuada commodo. Nunc eleifend metus enim, eu aliquet dui semper sit amet. Sed a odio sapien. Suspendisse vitae ante id sapien semper accumsan. Sed vestibulum erat quis laoreet pellentesque. Nullam placerat ligula eu odio faucibus, eget dictum orci tristique. Quisque sit amet pulvinar velit, lacinia dictum sem.
+
+Phasellus id sagittis lacus. Vivamus facilisis convallis metus, sit amet ultricies purus gravida quis. Vivamus eget egestas arcu, a euismod risus. Fusce metus arcu, molestie ut lacinia at, commodo eu nibh. In leo tortor, feugiat aliquet semper in, malesuada ac nulla. Fusce tempor ultricies blandit. Pellentesque et lorem quam. Suspendisse eros eros, mattis ut porttitor vitae, fermentum eget augue. Aliquam vitae justo sed est dictum lobortis. Cras lacinia commodo ligula sed ornare. Donec ut eros semper, sodales tellus quis, cursus quam. Quisque elementum ullamcorper pellentesque. Integer in rutrum ante, vel condimentum metus. Aliquam erat volutpat.
+
+Quisque convallis tempus eros, sit amet mattis ipsum eleifend in. Mauris volutpat, urna ut commodo tempus, est quam scelerisque erat, eget consequat nulla arcu id eros. Nam elementum nibh quis tincidunt adipiscing. Fusce tristique pretium mollis. Nulla quis ornare felis, vel lacinia diam. In et dui et mauris vestibulum commodo. In hac habitasse platea dictumst. Vestibulum viverra pellentesque tortor, tempor vehicula orci. Praesent rutrum turpis ipsum, ac commodo nisi vehicula ac.
+
+Nulla gravida ultrices mauris. Ut congue purus nec dolor euismod, vitae auctor elit condimentum. Nullam elementum velit lectus, fringilla pharetra sem hendrerit sit amet. Cras quis lobortis nisi, id interdum massa. Proin eget porttitor sapien. Vivamus quam odio, consectetur at rhoncus vel, posuere in nisi. Donec hendrerit urna ac massa tristique, pellentesque consequat orci dapibus. Mauris mi erat, aliquet id adipiscing ultricies, ultrices nec lacus. Proin imperdiet elit magna, ut suscipit metus faucibus eget. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas at leo lorem. Donec mi nibh, blandit ut mi quis, dictum adipiscing ante. Curabitur sodales blandit odio id viverra. Fusce sagittis rutrum nibh. Mauris risus lacus, placerat at dictum in, varius volutpat quam.
+
+Ut accumsan tincidunt dui, non semper lorem sodales nec. Curabitur pellentesque velit nec erat ultrices, in convallis diam suscipit. Curabitur pellentesque convallis mi. Phasellus iaculis orci quis nisi semper auctor. Vestibulum eleifend tortor quis odio feugiat, pulvinar congue turpis blandit. Sed viverra diam risus, vel mattis orci dignissim ut. Cras pellentesque dapibus dolor. Morbi tempor eleifend magna. Ut sodales ut sapien sed elementum. In hac habitasse platea dictumst.
+
+Nullam eget sagittis tellus. Donec a tellus id ligula viverra pellentesque. Pellentesque nulla turpis, pretium vel sem vel, placerat ultricies diam. Donec felis nibh, rhoncus id ornare at, lobortis vel massa. Nullam eu luctus ipsum. Mauris consequat dictum aliquam. Suspendisse ullamcorper aliquam mauris, viverra tincidunt augue suscipit at. Sed luctus scelerisque justo ut semper. Phasellus massa mauris, molestie at nulla eget, dictum ultricies nisi. Aliquam rhoncus nisl sed urna egestas, vel luctus lectus euismod. Mauris sagittis dapibus leo. Donec vitae dignissim risus, ac ultricies augue. Ut vulputate tortor sed dui consectetur placerat. Nullam viverra non diam vel dignissim.
+
+Suspendisse potenti. Integer facilisis neque vitae euismod adipiscing. Aenean dictum leo commodo dui sodales, sit amet volutpat mauris gravida. Proin tempus convallis eros at consectetur. Proin nisl purus, dictum vel euismod ut, imperdiet quis est. Etiam sollicitudin lobortis neque eget pulvinar. Etiam venenatis vel sem ut posuere. Aliquam consectetur rhoncus facilisis. Morbi a viverra orci.
+
+Praesent ut vehicula orci, vel convallis risus. Suspendisse consectetur varius interdum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Proin vel sodales enim. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur suscipit tristique justo vel dapibus. Sed tincidunt mattis massa a auctor. Donec in tincidunt elit. Curabitur interdum neque at ante fringilla tempus. In hac habitasse platea dictumst. Vivamus luctus ligula ut nisl fermentum egestas. Praesent pulvinar accumsan neque. Sed nec leo sit amet arcu vehicula vehicula non ac diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+
+Morbi vel arcu quis neque dictum ullamcorper. Pellentesque condimentum consequat lacinia. Vestibulum eleifend placerat erat, eu hendrerit dui pulvinar eget. Vestibulum accumsan, lectus id vehicula fringilla, erat eros dictum massa, ut tristique libero mi eu ante. In at ante nunc. Praesent sodales ullamcorper porta. Curabitur egestas odio elit. Praesent et libero malesuada, venenatis lorem vitae, eleifend nisl. Donec dapibus euismod turpis, nec porttitor turpis dapibus ac. Fusce iaculis lacus eget dictum aliquam. Sed dictum eu enim ac posuere. Ut accumsan, ipsum et laoreet consectetur, ipsum quam dapibus diam, ac molestie ligula dui id massa. Nulla aliquam mauris congue nibh vestibulum imperdiet.
+
+Aenean ultricies, orci vel consectetur suscipit, ante nisi eleifend est, vitae suscipit risus erat dictum dui. Ut nisi diam, tristique sed nisl nec, aliquam gravida orci. Vestibulum in molestie sem. Ut eu molestie mi. Suspendisse potenti. Nunc sagittis lorem ut est vehicula, vitae imperdiet leo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec pharetra urna pretium, faucibus orci cursus, sodales purus. Duis iaculis dignissim augue, non aliquet ligula elementum quis. Sed tempus a nisi et faucibus. Donec mattis ligula ac sem aliquam, sed sodales est ullamcorper. Cras vel orci est. Integer eget ultricies nisi.
+
+Quisque rhoncus, nisl vel auctor consectetur, sapien augue iaculis urna, quis suscipit arcu dolor ac est. Fusce sit amet quam lacinia, malesuada lorem vitae, dapibus justo. Mauris eget massa nec dolor volutpat tempor ut eu ante. Donec risus mi, aliquam at euismod vulputate, ullamcorper non leo. Etiam ac elit velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus sollicitudin enim sed felis pharetra, a convallis mi venenatis. Donec convallis non velit venenatis suscipit. Sed massa risus, dictum quis aliquam ut, placerat quis arcu. Donec at nisi neque. Nullam porta et mi vel ultricies. Donec vel aliquam sem. Mauris varius, ipsum interdum mattis rhoncus, nunc nisl vehicula tortor, quis condimentum nibh nisl vel ante. Sed vel pretium dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar molestie neque, quis luctus ante.
+
+Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec ac ipsum egestas, luctus urna aliquet, fringilla tortor. Cras eleifend sed tellus tempor congue. Integer venenatis magna dignissim pharetra cursus. Nulla volutpat, sem sit amet malesuada laoreet, odio libero consectetur orci, sit amet pellentesque neque ligula quis libero. Morbi nec interdum metus, in imperdiet justo. Fusce euismod egestas nulla et elementum. Etiam aliquam lectus quis eros semper, sed dapibus velit ultrices. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+Proin sed elit vel massa placerat mattis et vel mauris. Aliquam accumsan ante ligula, at accumsan enim pellentesque sit amet. Sed eget quam vel nunc molestie iaculis vitae nec massa. Vivamus sed accumsan libero. Duis pretium quam at blandit sollicitudin. Nullam sodales sit amet elit ac adipiscing. Ut ullamcorper dignissim sapien. Nulla facilisi. Fusce sed consequat lectus, et tempus ipsum. Aliquam vestibulum lectus vitae quam mollis, et adipiscing nisl lobortis
diff --git a/tests/enable_all.php b/tests/enable_all.php
index efb43cae508..386ae2070e4 100644
--- a/tests/enable_all.php
+++ b/tests/enable_all.php
@@ -18,7 +18,7 @@ function enableApp($app) {
enableApp('files_sharing');
enableApp('files_encryption');
-//enableApp('files_external');
+enableApp('files_external');
enableApp('user_ldap');
enableApp('files_versions');
diff --git a/tests/karma.config.js b/tests/karma.config.js
index 529bd31338f..338e3f868e9 100644
--- a/tests/karma.config.js
+++ b/tests/karma.config.js
@@ -121,6 +121,9 @@ module.exports = function(config) {
files.push('apps/' + appsToTest[i] + '/tests/js/*.js');
}
+ // serve images to avoid warnings
+ files.push({pattern: 'core/img/**/*', watched: false, included: false, served: true});
+
config.set({
// base path, that will be used to resolve files and exclude
@@ -137,6 +140,11 @@ module.exports = function(config) {
],
+ proxies: {
+ // prevent warnings for images
+ '/context.html//core/img/': 'http://localhost:9876/base/core/img/'
+ },
+
// test results reporter to use
// possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
reporters: ['dots', 'junit', 'coverage'],
@@ -167,7 +175,7 @@ module.exports = function(config) {
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
- autoWatch: false,
+ autoWatch: true,
// Start these browsers, currently available:
// - Chrome
diff --git a/tests/lib/api.php b/tests/lib/api.php
index 233beebd68a..0f7d08543ea 100644
--- a/tests/lib/api.php
+++ b/tests/lib/api.php
@@ -37,7 +37,7 @@ class Test_API extends PHPUnit_Framework_TestCase {
function dataProviderTestOneResult() {
return array(
array(100, true),
- array(101, true),
+ array(101, false),
array(997, false),
);
}
diff --git a/tests/lib/appframework/dependencyinjection/DIContainerTest.php b/tests/lib/appframework/dependencyinjection/DIContainerTest.php
index f3ebff0207f..d1bc900fb28 100644
--- a/tests/lib/appframework/dependencyinjection/DIContainerTest.php
+++ b/tests/lib/appframework/dependencyinjection/DIContainerTest.php
@@ -70,7 +70,7 @@ class DIContainerTest extends \PHPUnit_Framework_TestCase {
public function testMiddlewareDispatcherIncludesSecurityMiddleware(){
- $this->container['Request'] = new Request();
+ $this->container['Request'] = new Request(array('method' => 'GET'));
$security = $this->container['SecurityMiddleware'];
$dispatcher = $this->container['MiddlewareDispatcher'];
diff --git a/tests/lib/appframework/http/DownloadResponseTest.php b/tests/lib/appframework/http/DownloadResponseTest.php
index 64fe7992b6a..b305c63ad4d 100644
--- a/tests/lib/appframework/http/DownloadResponseTest.php
+++ b/tests/lib/appframework/http/DownloadResponseTest.php
@@ -22,7 +22,7 @@
*/
-namespace OC\AppFramework\Http;
+namespace OCP\AppFramework\Http;
//require_once(__DIR__ . "/../classloader.php");
diff --git a/tests/lib/appframework/http/JSONResponseTest.php b/tests/lib/appframework/http/JSONResponseTest.php
index 534c54cbcee..fbaae1b9227 100644
--- a/tests/lib/appframework/http/JSONResponseTest.php
+++ b/tests/lib/appframework/http/JSONResponseTest.php
@@ -28,6 +28,7 @@ namespace OC\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
+use OCP\AppFramework\Http;
//require_once(__DIR__ . "/../classloader.php");
@@ -78,13 +79,6 @@ class JSONResponseTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals($expected, $this->json->render());
}
-
- public function testShouldHaveXContentHeaderByDefault() {
- $headers = $this->json->getHeaders();
- $this->assertEquals('nosniff', $headers['X-Content-Type-Options']);
- }
-
-
public function testConstructorAllowsToSetData() {
$data = array('hi');
$code = 300;
@@ -95,4 +89,13 @@ class JSONResponseTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals($code, $response->getStatus());
}
+ public function testChainability() {
+ $params = array('hi', 'yo');
+ $this->json->setData($params)
+ ->setStatus(Http::STATUS_NOT_FOUND);
+
+ $this->assertEquals(Http::STATUS_NOT_FOUND, $this->json->getStatus());
+ $this->assertEquals(array('hi', 'yo'), $this->json->getData());
+ }
+
}
diff --git a/tests/lib/appframework/http/RedirectResponseTest.php b/tests/lib/appframework/http/RedirectResponseTest.php
index f82d0c3a675..f62b420f4ee 100644
--- a/tests/lib/appframework/http/RedirectResponseTest.php
+++ b/tests/lib/appframework/http/RedirectResponseTest.php
@@ -22,7 +22,7 @@
*/
-namespace OC\AppFramework\Http;
+namespace OCP\AppFramework\Http;
use OCP\AppFramework\Http;
diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php
index 00473a8c44f..58828d17bb2 100644
--- a/tests/lib/appframework/http/RequestTest.php
+++ b/tests/lib/appframework/http/RequestTest.php
@@ -18,6 +18,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
stream_wrapper_unregister('fakeinput');
}
stream_wrapper_register('fakeinput', 'RequestStream');
+ $this->stream = 'fakeinput://data';
}
public function tearDown() {
@@ -30,7 +31,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'method' => 'GET',
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
// Countable
$this->assertEquals(2, count($request));
@@ -54,9 +55,10 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'),
'post' => array('name' => 'Jane Doe', 'nickname' => 'Janey'),
'urlParams' => array('user' => 'jw', 'name' => 'Johnny Weissmüller'),
+ 'method' => 'GET'
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$this->assertEquals(3, count($request));
$this->assertEquals('Janey', $request->{'nickname'});
@@ -70,9 +72,10 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
public function testImmutableArrayAccess() {
$vars = array(
'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'),
+ 'method' => 'GET'
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$request['nickname'] = 'Janey';
}
@@ -82,9 +85,10 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
public function testImmutableMagicAccess() {
$vars = array(
'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'),
+ 'method' => 'GET'
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$request->{'nickname'} = 'Janey';
}
@@ -97,7 +101,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'method' => 'GET',
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$result = $request->post;
}
@@ -107,7 +111,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'method' => 'GET',
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$this->assertEquals('GET', $request->method);
$result = $request->get;
$this->assertEquals('John Q. Public', $result['name']);
@@ -119,10 +123,10 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
$data = '{"name": "John Q. Public", "nickname": "Joey"}';
$vars = array(
'method' => 'POST',
- 'server' => array('CONTENT_TYPE' => 'application/json; utf-8'),
+ 'server' => array('CONTENT_TYPE' => 'application/json; utf-8')
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$this->assertEquals('POST', $request->method);
$result = $request->post;
$this->assertEquals('John Q. Public', $result['name']);
@@ -140,7 +144,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'server' => array('CONTENT_TYPE' => 'application/x-www-form-urlencoded'),
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$this->assertEquals('PATCH', $request->method);
$result = $request->patch;
@@ -159,7 +163,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'server' => array('CONTENT_TYPE' => 'application/json; utf-8'),
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$this->assertEquals('PUT', $request->method);
$result = $request->put;
@@ -174,7 +178,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'server' => array('CONTENT_TYPE' => 'application/json; utf-8'),
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$this->assertEquals('PATCH', $request->method);
$result = $request->patch;
@@ -193,7 +197,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
'server' => array('CONTENT_TYPE' => 'image/png'),
);
- $request = new Request($vars);
+ $request = new Request($vars, $this->stream);
$this->assertEquals('PUT', $request->method);
$resource = $request->put;
$contents = stream_get_contents($resource);
diff --git a/tests/lib/appframework/http/ResponseTest.php b/tests/lib/appframework/http/ResponseTest.php
index 4f21d77a170..27350725d79 100644
--- a/tests/lib/appframework/http/ResponseTest.php
+++ b/tests/lib/appframework/http/ResponseTest.php
@@ -78,7 +78,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase {
public function testGetEtag() {
$this->childResponse->setEtag('hi');
- $this->assertEquals('hi', $this->childResponse->getEtag());
+ $this->assertSame('hi', $this->childResponse->getEtag());
}
@@ -117,5 +117,25 @@ class ResponseTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals('Thu, 01 Jan 1970 00:00:01 +0000', $headers['Last-Modified']);
}
+ public function testChainability() {
+ $lastModified = new \DateTime(null, new \DateTimeZone('GMT'));
+ $lastModified->setTimestamp(1);
+
+ $this->childResponse->setEtag('hi')
+ ->setStatus(Http::STATUS_NOT_FOUND)
+ ->setLastModified($lastModified)
+ ->cacheFor(33)
+ ->addHeader('hello', 'world');
+
+ $headers = $this->childResponse->getHeaders();
+
+ $this->assertEquals('world', $headers['hello']);
+ $this->assertEquals(Http::STATUS_NOT_FOUND, $this->childResponse->getStatus());
+ $this->assertEquals('hi', $this->childResponse->getEtag());
+ $this->assertEquals('Thu, 01 Jan 1970 00:00:01 +0000', $headers['Last-Modified']);
+ $this->assertEquals('max-age=33, must-revalidate',
+ $headers['Cache-Control']);
+
+ }
}
diff --git a/tests/lib/appframework/http/TemplateResponseTest.php b/tests/lib/appframework/http/TemplateResponseTest.php
index a583d9da14f..0b158edff6f 100644
--- a/tests/lib/appframework/http/TemplateResponseTest.php
+++ b/tests/lib/appframework/http/TemplateResponseTest.php
@@ -25,6 +25,7 @@
namespace OC\AppFramework\Http;
use OCP\AppFramework\Http\TemplateResponse;
+use OCP\AppFramework\Http;
class TemplateResponseTest extends \PHPUnit_Framework_TestCase {
@@ -98,4 +99,13 @@ class TemplateResponseTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals($render, $this->tpl->getRenderAs());
}
+ public function testChainability() {
+ $params = array('hi' => 'yo');
+ $this->tpl->setParams($params)
+ ->setStatus(Http::STATUS_NOT_FOUND);
+
+ $this->assertEquals(Http::STATUS_NOT_FOUND, $this->tpl->getStatus());
+ $this->assertEquals(array('hi' => 'yo'), $this->tpl->getParams());
+ }
+
}
diff --git a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
index f16b14150c3..935f97d2a6f 100644
--- a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
+++ b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
@@ -132,7 +132,7 @@ class MiddlewareDispatcherTest extends \PHPUnit_Framework_TestCase {
private function getControllerMock(){
return $this->getMock('OCP\AppFramework\Controller', array('method'),
- array($this->getAPIMock(), new Request()));
+ array($this->getAPIMock(), new Request(array('method' => 'GET'))));
}
diff --git a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
index 63c48a62829..19e8a68c388 100644
--- a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
+++ b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
@@ -26,7 +26,7 @@ namespace OC\AppFramework\Middleware\Security;
use OC\AppFramework\Http;
use OC\AppFramework\Http\Request;
-use OC\AppFramework\Http\RedirectResponse;
+use OCP\AppFramework\Http\RedirectResponse;
use OCP\AppFramework\Http\JSONResponse;
diff --git a/tests/lib/appframework/routing/RoutingTest.php b/tests/lib/appframework/routing/RoutingTest.php
index d0244cf2511..261ab0b26af 100644
--- a/tests/lib/appframework/routing/RoutingTest.php
+++ b/tests/lib/appframework/routing/RoutingTest.php
@@ -36,6 +36,16 @@ class RouteConfigTest extends \PHPUnit_Framework_TestCase
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open');
}
+ public function testSimpleRouteWithRequirements()
+ {
+ $routes = array('routes' => array(
+ array('name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'requirements' => array('something'))
+ ));
+
+ $this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array('something'));
+ }
+
+
/**
* @expectedException \UnexpectedValueException
*/
@@ -46,7 +56,7 @@ class RouteConfigTest extends \PHPUnit_Framework_TestCase
));
// router mock
- $router = $this->getMock("\OC_Router", array('create'));
+ $router = $this->getMock("\OC\Route\Router", array('create'));
// load route configuration
$container = new DIContainer('app1');
@@ -85,13 +95,13 @@ class RouteConfigTest extends \PHPUnit_Framework_TestCase
* @param string $controllerName
* @param string $actionName
*/
- private function assertSimpleRoute($routes, $name, $verb, $url, $controllerName, $actionName)
+ private function assertSimpleRoute($routes, $name, $verb, $url, $controllerName, $actionName, array $requirements=array())
{
// route mocks
- $route = $this->mockRoute($verb, $controllerName, $actionName);
+ $route = $this->mockRoute($verb, $controllerName, $actionName, $requirements);
// router mock
- $router = $this->getMock("\OC_Router", array('create'));
+ $router = $this->getMock("\OC\Route\Router", array('create'));
// we expect create to be called once:
$router
@@ -116,7 +126,7 @@ class RouteConfigTest extends \PHPUnit_Framework_TestCase
private function assertResource($yaml, $resourceName, $url, $controllerName, $paramName)
{
// router mock
- $router = $this->getMock("\OC_Router", array('create'));
+ $router = $this->getMock("\OC\Route\Router", array('create'));
// route mocks
$indexRoute = $this->mockRoute('GET', $controllerName, 'index');
@@ -166,15 +176,15 @@ class RouteConfigTest extends \PHPUnit_Framework_TestCase
}
/**
- * @param $verb
- * @param $controllerName
- * @param $actionName
+ * @param string $verb
+ * @param string $controllerName
+ * @param string $actionName
* @return \PHPUnit_Framework_MockObject_MockObject
*/
- private function mockRoute($verb, $controllerName, $actionName)
+ private function mockRoute($verb, $controllerName, $actionName, array $requirements=array())
{
$container = new DIContainer('app1');
- $route = $this->getMock("\OC_Route", array('method', 'action'), array(), '', false);
+ $route = $this->getMock("\OC\Route\Route", array('method', 'action', 'requirements'), array(), '', false);
$route
->expects($this->exactly(1))
->method('method')
@@ -186,6 +196,14 @@ class RouteConfigTest extends \PHPUnit_Framework_TestCase
->method('action')
->with($this->equalTo(new RouteActionHandler($container, $controllerName, $actionName)))
->will($this->returnValue($route));
+
+ if(count($requirements) > 0) {
+ $route
+ ->expects($this->exactly(1))
+ ->method('requirements')
+ ->with($this->equalTo($requirements))
+ ->will($this->returnValue($route));
+ }
return $route;
}
diff --git a/tests/lib/connector/sabre/aborteduploaddetectionplugin.php b/tests/lib/connector/sabre/aborteduploaddetectionplugin.php
index 201f1263867..60d141e72bc 100644
--- a/tests/lib/connector/sabre/aborteduploaddetectionplugin.php
+++ b/tests/lib/connector/sabre/aborteduploaddetectionplugin.php
@@ -1,11 +1,11 @@
<?php
+
/**
* Copyright (c) 2013 Thomas Müller <thomas.mueller@tmit.eu>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
-
class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Framework_TestCase {
/**
@@ -18,17 +18,18 @@ class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Frame
*/
private $plugin;
- public function setUp() {
+ private function init($view) {
$this->server = new Sabre_DAV_Server();
- $this->plugin = new OC_Connector_Sabre_AbortedUploadDetectionPlugin();
+ $this->plugin = new OC_Connector_Sabre_AbortedUploadDetectionPlugin($view);
$this->plugin->initialize($this->server);
}
/**
* @dataProvider lengthProvider
*/
- public function testLength($expected, $headers)
- {
+ public function testLength($expected, $headers) {
+ $this->init(null);
+
$this->server->httpRequest = new Sabre_HTTP_Request($headers);
$length = $this->plugin->getLength();
$this->assertEquals($expected, $length);
@@ -37,9 +38,8 @@ class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Frame
/**
* @dataProvider verifyContentLengthProvider
*/
- public function testVerifyContentLength($method, $fileSize, $headers)
- {
- $this->plugin->fileView = $this->buildFileViewMock($fileSize);
+ public function testVerifyContentLength($method, $fileSize, $headers) {
+ $this->init($this->buildFileViewMock($fileSize));
$headers['REQUEST_METHOD'] = $method;
$this->server->httpRequest = new Sabre_HTTP_Request($headers);
@@ -51,12 +51,11 @@ class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Frame
* @dataProvider verifyContentLengthFailedProvider
* @expectedException Sabre_DAV_Exception_BadRequest
*/
- public function testVerifyContentLengthFailed($method, $fileSize, $headers)
- {
- $this->plugin->fileView = $this->buildFileViewMock($fileSize);
-
+ public function testVerifyContentLengthFailed($method, $fileSize, $headers) {
+ $view = $this->buildFileViewMock($fileSize);
+ $this->init($view);
// we expect unlink to be called
- $this->plugin->fileView->expects($this->once())->method('unlink');
+ $view->expects($this->once())->method('unlink');
$headers['REQUEST_METHOD'] = $method;
$this->server->httpRequest = new Sabre_HTTP_Request($headers);
@@ -92,7 +91,7 @@ class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Frame
private function buildFileViewMock($fileSize) {
// mock filesystem
- $view = $this->getMock('\OC\Files\View', array('filesize', 'unlink'), array(), '', FALSE);
+ $view = $this->getMock('\OC\Files\View', array('filesize', 'unlink'), array(), '', false);
$view->expects($this->any())->method('filesize')->withAnyParameters()->will($this->returnValue($fileSize));
return $view;
diff --git a/tests/lib/connector/sabre/directory.php b/tests/lib/connector/sabre/directory.php
index c501521b601..b2bf0d4a6d2 100644
--- a/tests/lib/connector/sabre/directory.php
+++ b/tests/lib/connector/sabre/directory.php
@@ -1,18 +1,32 @@
<?php
+
/**
* Copyright (c) 2013 Thomas Müller <thomas.mueller@tmit.eu>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
-
class Test_OC_Connector_Sabre_Directory extends PHPUnit_Framework_TestCase {
+ private function getRootDir() {
+ $view = $this->getMock('OC\Files\View', array(), array(), '', false);
+ $view->expects($this->once())
+ ->method('getRelativePath')
+ ->will($this->returnValue(''));
+
+ $info = $this->getMock('OC\Files\FileInfo', array(), array(), '', false);
+ $info->expects($this->once())
+ ->method('getPath')
+ ->will($this->returnValue(''));
+
+ return new OC_Connector_Sabre_Directory($view, $info);
+ }
+
/**
* @expectedException Sabre_DAV_Exception_Forbidden
*/
public function testCreateSharedFileFails() {
- $dir = new OC_Connector_Sabre_Directory('');
+ $dir = $this->getRootDir();
$dir->createFile('Shared');
}
@@ -20,7 +34,7 @@ class Test_OC_Connector_Sabre_Directory extends PHPUnit_Framework_TestCase {
* @expectedException Sabre_DAV_Exception_Forbidden
*/
public function testCreateSharedFolderFails() {
- $dir = new OC_Connector_Sabre_Directory('');
+ $dir = $this->getRootDir();
$dir->createDirectory('Shared');
}
@@ -28,7 +42,7 @@ class Test_OC_Connector_Sabre_Directory extends PHPUnit_Framework_TestCase {
* @expectedException Sabre_DAV_Exception_Forbidden
*/
public function testDeleteSharedFolderFails() {
- $dir = new OC_Connector_Sabre_Directory('Shared');
+ $dir = $this->getRootDir();
$dir->delete();
}
}
diff --git a/tests/lib/connector/sabre/file.php b/tests/lib/connector/sabre/file.php
index c2f0ffa12d4..a9056460a5c 100644
--- a/tests/lib/connector/sabre/file.php
+++ b/tests/lib/connector/sabre/file.php
@@ -13,9 +13,20 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase {
*/
public function testSimplePutFails() {
// setup
- $file = new OC_Connector_Sabre_File('/test.txt');
- $file->fileView = $this->getMock('\OC\Files\View', array('file_put_contents'), array(), '', FALSE);
- $file->fileView->expects($this->any())->method('file_put_contents')->withAnyParameters()->will($this->returnValue(false));
+ $view = $this->getMock('\OC\Files\View', array('file_put_contents', 'getRelativePath'), array(), '', false);
+ $view->expects($this->any())
+ ->method('file_put_contents')
+ ->will($this->returnValue(false));
+
+ $view->expects($this->any())
+ ->method('getRelativePath')
+ ->will($this->returnValue('/test.txt'));
+
+ $info = new \OC\Files\FileInfo('/test.txt', null, null, array(
+ 'permissions'=>\OCP\PERMISSION_ALL
+ ));
+
+ $file = new OC_Connector_Sabre_File($view, $info);
// action
$etag = $file->put('test data');
@@ -26,10 +37,25 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase {
*/
public function testSimplePutFailsOnRename() {
// setup
- $file = new OC_Connector_Sabre_File('/test.txt');
- $file->fileView = $this->getMock('\OC\Files\View', array('file_put_contents', 'rename'), array(), '', FALSE);
- $file->fileView->expects($this->any())->method('file_put_contents')->withAnyParameters()->will($this->returnValue(true));
- $file->fileView->expects($this->any())->method('rename')->withAnyParameters()->will($this->returnValue(false));
+ $view = $this->getMock('\OC\Files\View', array('file_put_contents', 'rename', 'getRelativePath'), array(), '', false);
+ $view->expects($this->any())
+ ->method('file_put_contents')
+ ->withAnyParameters()
+ ->will($this->returnValue(true));
+ $view->expects($this->any())
+ ->method('rename')
+ ->withAnyParameters()
+ ->will($this->returnValue(false));
+
+ $view->expects($this->any())
+ ->method('getRelativePath')
+ ->will($this->returnValue('/test.txt'));
+
+ $info = new \OC\Files\FileInfo('/test.txt', null, null, array(
+ 'permissions' => \OCP\PERMISSION_ALL
+ ));
+
+ $file = new OC_Connector_Sabre_File($view, $info);
// action
$etag = $file->put('test data');
@@ -40,9 +66,19 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase {
*/
public function testSimplePutInvalidChars() {
// setup
- $file = new OC_Connector_Sabre_File('/super*star.txt');
- $file->fileView = $this->getMock('\OC\Files\View', array('file_put_contents'), array(), '', FALSE);
- $file->fileView->expects($this->any())->method('file_put_contents')->withAnyParameters()->will($this->returnValue(false));
+ $view = $this->getMock('\OC\Files\View', array('file_put_contents', 'getRelativePath'), array(), '', false);
+ $view->expects($this->any())
+ ->method('file_put_contents')
+ ->will($this->returnValue(false));
+
+ $view->expects($this->any())
+ ->method('getRelativePath')
+ ->will($this->returnValue('/super*star.txt'));
+
+ $info = new \OC\Files\FileInfo('/super*star.txt', null, null, array(
+ 'permissions' => \OCP\PERMISSION_ALL
+ ));
+ $file = new OC_Connector_Sabre_File($view, $info);
// action
$etag = $file->put('test data');
@@ -54,17 +90,16 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase {
*/
public function testSetNameInvalidChars() {
// setup
- $file = new OC_Connector_Sabre_File('/test.txt');
- $file->fileView = $this->getMock('\OC\Files\View', array('isUpdatable'), array(), '', FALSE);
- $file->fileView->expects($this->any())->method('isUpdatable')->withAnyParameters()->will($this->returnValue(true));
- $file->setName('/super*star.txt');
- }
+ $view = $this->getMock('\OC\Files\View', array('getRelativePath'), array(), '', false);
- /**
- * @expectedException Sabre_DAV_Exception_Forbidden
- */
- public function testDeleteSharedFails() {
- $file = new OC_Connector_Sabre_File('Shared');
- $file->delete();
+ $view->expects($this->any())
+ ->method('getRelativePath')
+ ->will($this->returnValue('/super*star.txt'));
+
+ $info = new \OC\Files\FileInfo('/super*star.txt', null, null, array(
+ 'permissions' => \OCP\PERMISSION_ALL
+ ));
+ $file = new OC_Connector_Sabre_File($view, $info);
+ $file->setName('/super*star.txt');
}
}
diff --git a/tests/lib/connector/sabre/objecttree.php b/tests/lib/connector/sabre/objecttree.php
index fb50c736edd..bc8ec98faee 100644
--- a/tests/lib/connector/sabre/objecttree.php
+++ b/tests/lib/connector/sabre/objecttree.php
@@ -9,6 +9,7 @@
namespace Test\OC\Connector\Sabre;
+use OC\Files\FileInfo;
use OC_Connector_Sabre_Directory;
use PHPUnit_Framework_TestCase;
use Sabre_DAV_Exception_Forbidden;
@@ -32,6 +33,10 @@ class TestDoubleFileView extends \OC\Files\View{
public function rename($path1, $path2) {
return $this->canRename;
}
+
+ public function getRelativePath($path){
+ return $path;
+ }
}
class ObjectTree extends PHPUnit_Framework_TestCase {
@@ -91,10 +96,14 @@ class ObjectTree extends PHPUnit_Framework_TestCase {
* @param $updatables
*/
private function moveTest($source, $dest, $updatables, $deletables) {
- $rootDir = new OC_Connector_Sabre_Directory('');
+ $view = new TestDoubleFileView($updatables, $deletables);
+
+ $info = new FileInfo('', null, null, array());
+
+ $rootDir = new OC_Connector_Sabre_Directory($view, $info);
$objectTree = $this->getMock('\OC\Connector\Sabre\ObjectTree',
array('nodeExists', 'getNodeForPath'),
- array($rootDir));
+ array($rootDir, $view));
$objectTree->expects($this->once())
->method('getNodeForPath')
@@ -102,7 +111,7 @@ class ObjectTree extends PHPUnit_Framework_TestCase {
->will($this->returnValue(false));
/** @var $objectTree \OC\Connector\Sabre\ObjectTree */
- $objectTree->fileView = new TestDoubleFileView($updatables, $deletables);
+ $objectTree->init($rootDir, $view);
$objectTree->move($source, $dest);
}
diff --git a/tests/lib/connector/sabre/quotaplugin.php b/tests/lib/connector/sabre/quotaplugin.php
index 1186de28742..6781b970a4f 100644
--- a/tests/lib/connector/sabre/quotaplugin.php
+++ b/tests/lib/connector/sabre/quotaplugin.php
@@ -1,11 +1,11 @@
<?php
+
/**
* Copyright (c) 2013 Thomas Müller <thomas.mueller@tmit.eu>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
-
class Test_OC_Connector_Sabre_QuotaPlugin extends PHPUnit_Framework_TestCase {
/**
@@ -18,17 +18,18 @@ class Test_OC_Connector_Sabre_QuotaPlugin extends PHPUnit_Framework_TestCase {
*/
private $plugin;
- public function setUp() {
+ private function init($quota) {
+ $view = $this->buildFileViewMock($quota);
$this->server = new Sabre_DAV_Server();
- $this->plugin = new OC_Connector_Sabre_QuotaPlugin();
+ $this->plugin = new OC_Connector_Sabre_QuotaPlugin($view);
$this->plugin->initialize($this->server);
}
/**
* @dataProvider lengthProvider
*/
- public function testLength($expected, $headers)
- {
+ public function testLength($expected, $headers) {
+ $this->init(0);
$this->server->httpRequest = new Sabre_HTTP_Request($headers);
$length = $this->plugin->getLength();
$this->assertEquals($expected, $length);
@@ -37,9 +38,8 @@ class Test_OC_Connector_Sabre_QuotaPlugin extends PHPUnit_Framework_TestCase {
/**
* @dataProvider quotaOkayProvider
*/
- public function testCheckQuota($quota, $headers)
- {
- $this->plugin->fileView = $this->buildFileViewMock($quota);
+ public function testCheckQuota($quota, $headers) {
+ $this->init($quota);
$this->server->httpRequest = new Sabre_HTTP_Request($headers);
$result = $this->plugin->checkQuota('');
@@ -50,9 +50,8 @@ class Test_OC_Connector_Sabre_QuotaPlugin extends PHPUnit_Framework_TestCase {
* @expectedException Sabre_DAV_Exception_InsufficientStorage
* @dataProvider quotaExceededProvider
*/
- public function testCheckExceededQuota($quota, $headers)
- {
- $this->plugin->fileView = $this->buildFileViewMock($quota);
+ public function testCheckExceededQuota($quota, $headers) {
+ $this->init($quota);
$this->server->httpRequest = new Sabre_HTTP_Request($headers);
$this->plugin->checkQuota('');
@@ -92,7 +91,7 @@ class Test_OC_Connector_Sabre_QuotaPlugin extends PHPUnit_Framework_TestCase {
private function buildFileViewMock($quota) {
// mock filesysten
- $view = $this->getMock('\OC\Files\View', array('free_space'), array(), '', FALSE);
+ $view = $this->getMock('\OC\Files\View', array('free_space'), array(), '', false);
$view->expects($this->any())->method('free_space')->withAnyParameters()->will($this->returnValue($quota));
return $view;
diff --git a/tests/lib/dbschema.php b/tests/lib/dbschema.php
index 11e9fcdf4fa..cfa2d6fd9aa 100644
--- a/tests/lib/dbschema.php
+++ b/tests/lib/dbschema.php
@@ -71,6 +71,9 @@ class Test_DBSchema extends PHPUnit_Framework_TestCase {
$this->assertTableNotExist($this->table2);
}
+ /**
+ * @param string $table
+ */
public function tableExist($table) {
switch (OC_Config::getValue( 'dbtype', 'sqlite' )) {
diff --git a/tests/lib/files/cache/homecache.php b/tests/lib/files/cache/homecache.php
index dbcf6e9caa0..80dc54c9d19 100644
--- a/tests/lib/files/cache/homecache.php
+++ b/tests/lib/files/cache/homecache.php
@@ -90,7 +90,6 @@ class HomeCache extends \PHPUnit_Framework_TestCase {
// check that files and root size ignored the unknown sizes
$this->assertEquals(1000, $this->cache->calculateFolderSize('files'));
- $this->assertEquals(1000, $this->cache->calculateFolderSize(''));
// clean up
$this->cache->remove('');
diff --git a/tests/lib/files/cache/scanner.php b/tests/lib/files/cache/scanner.php
index 3f5604b4d45..5182fac8b10 100644
--- a/tests/lib/files/cache/scanner.php
+++ b/tests/lib/files/cache/scanner.php
@@ -150,13 +150,15 @@ class Scanner extends \PHPUnit_Framework_TestCase {
$this->cache->put('folder', array('mtime' => $this->storage->filemtime('folder'), 'storage_mtime' => $this->storage->filemtime('folder')));
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
- $this->assertNotEquals($oldData['etag'], $newData['etag']);
+ $this->assertInternalType('string', $oldData['etag']);
+ $this->assertInternalType('string', $newData['etag']);
+ $this->assertNotSame($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
$oldData = $newData;
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG);
$newData = $this->cache->get('');
- $this->assertEquals($oldData['etag'], $newData['etag']);
+ $this->assertSame($oldData['etag'], $newData['etag']);
$this->assertEquals(-1, $newData['size']);
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE);
@@ -164,17 +166,17 @@ class Scanner extends \PHPUnit_Framework_TestCase {
$this->assertNotEquals(-1, $oldData['size']);
$this->scanner->scanFile('', \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
- $this->assertEquals($oldData['etag'], $newData['etag']);
+ $this->assertSame($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
- $this->assertEquals($oldData['etag'], $newData['etag']);
+ $this->assertSame($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
- $this->assertEquals($oldData['etag'], $newData['etag']);
+ $this->assertSame($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
}
@@ -217,8 +219,11 @@ class Scanner extends \PHPUnit_Framework_TestCase {
// manipulate etag to simulate an empty etag
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG);
$data0 = $this->cache->get('folder/bar.txt');
+ $this->assertInternalType('string', $data0['etag']);
$data1 = $this->cache->get('folder');
+ $this->assertInternalType('string', $data1['etag']);
$data2 = $this->cache->get('');
+ $this->assertInternalType('string', $data2['etag']);
$data0['etag'] = '';
$this->cache->put('folder/bar.txt', $data0);
@@ -227,10 +232,15 @@ class Scanner extends \PHPUnit_Framework_TestCase {
// verify cache content
$newData0 = $this->cache->get('folder/bar.txt');
+ $this->assertInternalType('string', $newData0['etag']);
+ $this->assertNotEmpty($newData0['etag']);
+
$newData1 = $this->cache->get('folder');
+ $this->assertInternalType('string', $newData1['etag']);
+ $this->assertNotSame($data1['etag'], $newData1['etag']);
+
$newData2 = $this->cache->get('');
- $this->assertNotEmpty($newData0['etag']);
- $this->assertNotEquals($data1['etag'], $newData1['etag']);
- $this->assertNotEquals($data2['etag'], $newData2['etag']);
+ $this->assertInternalType('string', $newData2['etag']);
+ $this->assertNotSame($data2['etag'], $newData2['etag']);
}
}
diff --git a/tests/lib/files/cache/updater.php b/tests/lib/files/cache/updater.php
index 48986149a73..e2fae0ae57f 100644
--- a/tests/lib/files/cache/updater.php
+++ b/tests/lib/files/cache/updater.php
@@ -65,11 +65,6 @@ class Updater extends \PHPUnit_Framework_TestCase {
Filesystem::mount($this->storage, array(), '/' . self::$user . '/files');
\OC_Hook::clear('OC_Filesystem');
-
- \OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook');
- \OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook');
- \OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook');
- \OC_Hook::connect('OC_Filesystem', 'post_touch', '\OC\Files\Cache\Updater', 'touchHook');
}
public function tearDown() {
@@ -96,10 +91,14 @@ class Updater extends \PHPUnit_Framework_TestCase {
Filesystem::file_put_contents('foo.txt', 'asd');
$cachedData = $this->cache->get('foo.txt');
$this->assertEquals(3, $cachedData['size']);
- $this->assertNotEquals($fooCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $fooCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($fooCachedData['etag'], $cachedData['etag']);
$cachedData = $this->cache->get('');
$this->assertEquals(2 * $textSize + $imageSize + 3, $cachedData['size']);
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
$rootCachedData = $cachedData;
$this->assertFalse($this->cache->inCache('bar.txt'));
@@ -110,12 +109,15 @@ class Updater extends \PHPUnit_Framework_TestCase {
$mtime = $cachedData['mtime'];
$cachedData = $this->cache->get('');
$this->assertEquals(2 * $textSize + $imageSize + 2 * 3, $cachedData['size']);
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
$this->assertGreaterThanOrEqual($rootCachedData['mtime'], $mtime);
}
public function testWriteWithMountPoints() {
$storage2 = new \OC\Files\Storage\Temporary(array());
+ $storage2->getScanner()->scan(''); //initialize etags
$cache2 = $storage2->getCache();
Filesystem::mount($storage2, array(), '/' . self::$user . '/files/folder/substorage');
$folderCachedData = $this->cache->get('folder');
@@ -127,11 +129,15 @@ class Updater extends \PHPUnit_Framework_TestCase {
$mtime = $cachedData['mtime'];
$cachedData = $cache2->get('');
- $this->assertNotEquals($substorageCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $substorageCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($substorageCachedData['etag'], $cachedData['etag']);
$this->assertEquals($mtime, $cachedData['mtime']);
$cachedData = $this->cache->get('folder');
- $this->assertNotEquals($folderCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $folderCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($folderCachedData['etag'], $cachedData['etag']);
$this->assertEquals($mtime, $cachedData['mtime']);
}
@@ -146,19 +152,25 @@ class Updater extends \PHPUnit_Framework_TestCase {
$this->assertFalse($this->cache->inCache('foo.txt'));
$cachedData = $this->cache->get('');
$this->assertEquals(2 * $textSize + $imageSize, $cachedData['size']);
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
$this->assertGreaterThanOrEqual($rootCachedData['mtime'], $cachedData['mtime']);
$rootCachedData = $cachedData;
Filesystem::mkdir('bar_folder');
$this->assertTrue($this->cache->inCache('bar_folder'));
$cachedData = $this->cache->get('');
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
$rootCachedData = $cachedData;
Filesystem::rmdir('bar_folder');
$this->assertFalse($this->cache->inCache('bar_folder'));
$cachedData = $this->cache->get('');
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
$this->assertGreaterThanOrEqual($rootCachedData['mtime'], $cachedData['mtime']);
}
@@ -174,11 +186,15 @@ class Updater extends \PHPUnit_Framework_TestCase {
$this->assertFalse($cache2->inCache('foo.txt'));
$cachedData = $cache2->get('');
- $this->assertNotEquals($substorageCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $substorageCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($substorageCachedData['etag'], $cachedData['etag']);
$this->assertGreaterThanOrEqual($substorageCachedData['mtime'], $cachedData['mtime']);
$cachedData = $this->cache->get('folder');
- $this->assertNotEquals($folderCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $folderCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($folderCachedData['etag'], $cachedData['etag']);
$this->assertGreaterThanOrEqual($folderCachedData['mtime'], $cachedData['mtime']);
}
@@ -199,7 +215,9 @@ class Updater extends \PHPUnit_Framework_TestCase {
$mtime = $cachedData['mtime'];
$cachedData = $this->cache->get('');
$this->assertEquals(3 * $textSize + $imageSize, $cachedData['size']);
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
}
public function testRenameExtension() {
@@ -227,12 +245,16 @@ class Updater extends \PHPUnit_Framework_TestCase {
$mtime = $cachedData['mtime'];
$cachedData = $cache2->get('');
- $this->assertNotEquals($substorageCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $substorageCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($substorageCachedData['etag'], $cachedData['etag']);
// rename can cause mtime change - invalid assert
// $this->assertEquals($mtime, $cachedData['mtime']);
$cachedData = $this->cache->get('folder');
- $this->assertNotEquals($folderCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $folderCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($folderCachedData['etag'], $cachedData['etag']);
// rename can cause mtime change - invalid assert
// $this->assertEquals($mtime, $cachedData['mtime']);
}
@@ -242,11 +264,15 @@ class Updater extends \PHPUnit_Framework_TestCase {
$fooCachedData = $this->cache->get('foo.txt');
Filesystem::touch('foo.txt');
$cachedData = $this->cache->get('foo.txt');
- $this->assertNotEquals($fooCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $fooCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($fooCachedData['etag'], $cachedData['etag']);
$this->assertGreaterThanOrEqual($fooCachedData['mtime'], $cachedData['mtime']);
$cachedData = $this->cache->get('');
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
$this->assertGreaterThanOrEqual($rootCachedData['mtime'], $cachedData['mtime']);
$rootCachedData = $cachedData;
@@ -255,14 +281,20 @@ class Updater extends \PHPUnit_Framework_TestCase {
$folderCachedData = $this->cache->get('folder');
Filesystem::touch('folder/bar.txt', $time);
$cachedData = $this->cache->get('folder/bar.txt');
- $this->assertNotEquals($barCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $barCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($barCachedData['etag'], $cachedData['etag']);
$this->assertEquals($time, $cachedData['mtime']);
$cachedData = $this->cache->get('folder');
- $this->assertNotEquals($folderCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $folderCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($folderCachedData['etag'], $cachedData['etag']);
$cachedData = $this->cache->get('');
- $this->assertNotEquals($rootCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $rootCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($rootCachedData['etag'], $cachedData['etag']);
$this->assertEquals($time, $cachedData['mtime']);
}
@@ -279,14 +311,20 @@ class Updater extends \PHPUnit_Framework_TestCase {
$time = 1371006070;
Filesystem::touch('folder/substorage/foo.txt', $time);
$cachedData = $cache2->get('foo.txt');
- $this->assertNotEquals($fooCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $fooCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($fooCachedData['etag'], $cachedData['etag']);
$this->assertEquals($time, $cachedData['mtime']);
$cachedData = $cache2->get('');
- $this->assertNotEquals($substorageCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $substorageCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($substorageCachedData['etag'], $cachedData['etag']);
$cachedData = $this->cache->get('folder');
- $this->assertNotEquals($folderCachedData['etag'], $cachedData['etag']);
+ $this->assertInternalType('string', $folderCachedData['etag']);
+ $this->assertInternalType('string', $cachedData['etag']);
+ $this->assertNotSame($folderCachedData['etag'], $cachedData['etag']);
$this->assertEquals($time, $cachedData['mtime']);
}
diff --git a/tests/lib/files/etagtest.php b/tests/lib/files/etagtest.php
index ce05adb188a..af9f66835f0 100644
--- a/tests/lib/files/etagtest.php
+++ b/tests/lib/files/etagtest.php
@@ -65,7 +65,11 @@ class EtagTest extends \PHPUnit_Framework_TestCase {
$scanner = new \OC\Files\Utils\Scanner($user1);
$scanner->backgroundScan('/');
- $this->assertEquals($originalEtags, $this->getEtags($files));
+ $newEtags = $this->getEtags($files);
+ // loop over array and use assertSame over assertEquals to prevent false positives
+ foreach ($originalEtags as $file => $originalEtag) {
+ $this->assertSame($originalEtag, $newEtags[$file]);
+ }
}
/**
diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php
index 90f1dfe581b..53f528af793 100644
--- a/tests/lib/files/filesystem.php
+++ b/tests/lib/files/filesystem.php
@@ -226,4 +226,55 @@ class Filesystem extends \PHPUnit_Framework_TestCase {
$path = $arguments['path'];
$this->assertEquals($path, \OC\Files\Filesystem::normalizePath($path)); //the path passed to the hook should already be normalized
}
+
+ /**
+ * Test that the default cache dir is part of the user's home
+ */
+ public function testMountDefaultCacheDir() {
+ $userId = uniqid('user_');
+ $oldCachePath = \OC_Config::getValue('cache_path', '');
+ // no cache path configured
+ \OC_Config::setValue('cache_path', '');
+
+ \OC_User::createUser($userId, $userId);
+ \OC\Files\Filesystem::initMountPoints($userId);
+
+ $this->assertEquals(
+ '/' . $userId . '/',
+ \OC\Files\Filesystem::getMountPoint('/' . $userId . '/cache')
+ );
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath('/' . $userId . '/cache');
+ $this->assertInstanceOf('\OC\Files\Storage\Home', $storage);
+ $this->assertEquals('cache', $internalPath);
+ \OC_User::deleteUser($userId);
+
+ \OC_Config::setValue('cache_path', $oldCachePath);
+ }
+
+ /**
+ * Test that an external cache is mounted into
+ * the user's home
+ */
+ public function testMountExternalCacheDir() {
+ $userId = uniqid('user_');
+
+ $oldCachePath = \OC_Config::getValue('cache_path', '');
+ // set cache path to temp dir
+ $cachePath = \OC_Helper::tmpFolder() . '/extcache';
+ \OC_Config::setValue('cache_path', $cachePath);
+
+ \OC_User::createUser($userId, $userId);
+ \OC\Files\Filesystem::initMountPoints($userId);
+
+ $this->assertEquals(
+ '/' . $userId . '/cache/',
+ \OC\Files\Filesystem::getMountPoint('/' . $userId . '/cache')
+ );
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath('/' . $userId . '/cache');
+ $this->assertInstanceOf('\OC\Files\Storage\Local', $storage);
+ $this->assertEquals('', $internalPath);
+ \OC_User::deleteUser($userId);
+
+ \OC_Config::setValue('cache_path', $oldCachePath);
+ }
}
diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php
index f9291758606..38cd17ac8c9 100644
--- a/tests/lib/files/storage/storage.php
+++ b/tests/lib/files/storage/storage.php
@@ -64,17 +64,17 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
* @dataProvider directoryProvider
*/
public function testDirectories($directory) {
- $this->assertFalse($this->instance->file_exists('/'.$directory));
+ $this->assertFalse($this->instance->file_exists('/' . $directory));
- $this->assertTrue($this->instance->mkdir('/'.$directory));
+ $this->assertTrue($this->instance->mkdir('/' . $directory));
- $this->assertTrue($this->instance->file_exists('/'.$directory));
- $this->assertTrue($this->instance->is_dir('/'.$directory));
- $this->assertFalse($this->instance->is_file('/'.$directory));
- $this->assertEquals('dir', $this->instance->filetype('/'.$directory));
- $this->assertEquals(0, $this->instance->filesize('/'.$directory));
- $this->assertTrue($this->instance->isReadable('/'.$directory));
- $this->assertTrue($this->instance->isUpdatable('/'.$directory));
+ $this->assertTrue($this->instance->file_exists('/' . $directory));
+ $this->assertTrue($this->instance->is_dir('/' . $directory));
+ $this->assertFalse($this->instance->is_file('/' . $directory));
+ $this->assertEquals('dir', $this->instance->filetype('/' . $directory));
+ $this->assertEquals(0, $this->instance->filesize('/' . $directory));
+ $this->assertTrue($this->instance->isReadable('/' . $directory));
+ $this->assertTrue($this->instance->isUpdatable('/' . $directory));
$dh = $this->instance->opendir('/');
$content = array();
@@ -85,13 +85,13 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
}
$this->assertEquals(array($directory), $content);
- $this->assertFalse($this->instance->mkdir('/'.$directory)); //cant create existing folders
- $this->assertTrue($this->instance->rmdir('/'.$directory));
+ $this->assertFalse($this->instance->mkdir('/' . $directory)); //cant create existing folders
+ $this->assertTrue($this->instance->rmdir('/' . $directory));
$this->wait();
- $this->assertFalse($this->instance->file_exists('/'.$directory));
+ $this->assertFalse($this->instance->file_exists('/' . $directory));
- $this->assertFalse($this->instance->rmdir('/'.$directory)); //cant remove non existing folders
+ $this->assertFalse($this->instance->rmdir('/' . $directory)); //cant remove non existing folders
$dh = $this->instance->opendir('/');
$content = array();
@@ -103,8 +103,7 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
$this->assertEquals(array(), $content);
}
- public function directoryProvider()
- {
+ public function directoryProvider() {
return array(
array('folder'),
array(' folder'),
@@ -113,11 +112,23 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
array('spéciäl földer'),
);
}
+
+ function loremFileProvider() {
+ $root = \OC::$SERVERROOT . '/tests/data/';
+ return array(
+ // small file
+ array($root . 'lorem.txt'),
+ // bigger file (> 8 KB which is the standard PHP block size)
+ array($root . 'lorem-big.txt')
+ );
+ }
+
/**
* test the various uses of file_get_contents and file_put_contents
+ *
+ * @dataProvider loremFileProvider
*/
- public function testGetPutContents() {
- $sourceFile = \OC::$SERVERROOT . '/tests/data/lorem.txt';
+ public function testGetPutContents($sourceFile) {
$sourceText = file_get_contents($sourceFile);
//fill a file with string data
@@ -298,4 +309,40 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
$this->assertFalse($this->instance->file_exists('folder/bar'));
$this->assertFalse($this->instance->file_exists('folder'));
}
+
+ public function hashProvider() {
+ return array(
+ array('Foobar', 'md5'),
+ array('Foobar', 'sha1'),
+ array('Foobar', 'sha256'),
+ );
+ }
+
+ /**
+ * @dataProvider hashProvider
+ */
+ public function testHash($data, $type) {
+ $this->instance->file_put_contents('hash.txt', $data);
+ $this->assertEquals(hash($type, $data), $this->instance->hash($type, 'hash.txt'));
+ $this->assertEquals(hash($type, $data, true), $this->instance->hash($type, 'hash.txt', true));
+ }
+
+ public function testHashInFileName() {
+ $this->instance->file_put_contents('#test.txt', 'data');
+ $this->assertEquals('data', $this->instance->file_get_contents('#test.txt'));
+
+ $this->instance->mkdir('#foo');
+ $this->instance->file_put_contents('#foo/test.txt', 'data');
+ $this->assertEquals('data', $this->instance->file_get_contents('#foo/test.txt'));
+
+ $dh = $this->instance->opendir('#foo');
+ $content = array();
+ while ($file = readdir($dh)) {
+ if ($file != '.' and $file != '..') {
+ $content[] = $file;
+ }
+ }
+
+ $this->assertEquals(array('test.txt'), $content);
+ }
}
diff --git a/tests/lib/files/storage/wrapper/quota.php b/tests/lib/files/storage/wrapper/quota.php
index 43eae78415d..777529fd85e 100644
--- a/tests/lib/files/storage/wrapper/quota.php
+++ b/tests/lib/files/storage/wrapper/quota.php
@@ -53,6 +53,40 @@ class Quota extends \Test\Files\Storage\Storage {
$this->assertEquals(9, $instance->free_space(''));
}
+ public function testFreeSpaceWithUsedSpace() {
+ $instance = $this->getLimitedStorage(9);
+ $instance->getCache()->put(
+ '', array('size' => 3, 'unencrypted_size' => 0)
+ );
+ $this->assertEquals(6, $instance->free_space(''));
+ }
+
+ public function testFreeSpaceWithUnknownDiskSpace() {
+ $storage = $this->getMock(
+ '\OC\Files\Storage\Local',
+ array('free_space'),
+ array(array('datadir' => $this->tmpDir))
+ );
+ $storage->expects($this->any())
+ ->method('free_space')
+ ->will($this->returnValue(-2));
+ $storage->getScanner()->scan('');
+
+ $instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => 9));
+ $instance->getCache()->put(
+ '', array('size' => 3, 'unencrypted_size' => 0)
+ );
+ $this->assertEquals(6, $instance->free_space(''));
+ }
+
+ public function testFreeSpaceWithUsedSpaceAndEncryption() {
+ $instance = $this->getLimitedStorage(9);
+ $instance->getCache()->put(
+ '', array('size' => 7, 'unencrypted_size' => 3)
+ );
+ $this->assertEquals(6, $instance->free_space(''));
+ }
+
public function testFWriteNotEnoughSpace() {
$instance = $this->getLimitedStorage(9);
$stream = $instance->fopen('foo', 'w+');
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index 371d1ed1798..f80dd06e1cb 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -394,13 +394,12 @@ class View extends \PHPUnit_Framework_TestCase {
$this->assertNull($this->hookPath);
$subView->file_put_contents('/foo.txt', 'asd');
- $this->assertNotNull($this->hookPath);
$this->assertEquals('/substorage/foo.txt', $this->hookPath);
}
private $hookPath;
- function dummyHook($params) {
+ public function dummyHook($params) {
$this->hookPath = $params['path'];
}
@@ -442,12 +441,6 @@ class View extends \PHPUnit_Framework_TestCase {
return $storage;
}
- private $createHookPath;
-
- function dummyCreateHook($params) {
- $this->createHookPath = $params['path'];
- }
-
/**
* @medium
*/
@@ -466,23 +459,50 @@ class View extends \PHPUnit_Framework_TestCase {
$this->assertNull($this->hookPath);
}
+ private $hookWritePath;
+ private $hookCreatePath;
+ private $hookUpdatePath;
+
+ public function dummyHookWrite($params) {
+ $this->hookWritePath = $params['path'];
+ }
+
+ public function dummyHookUpdate($params) {
+ $this->hookUpdatePath = $params['path'];
+ }
+
+ public function dummyHookCreate($params) {
+ $this->hookCreatePath = $params['path'];
+ }
+
public function testEditNoCreateHook() {
$storage1 = $this->getTestStorage();
$storage2 = $this->getTestStorage();
$defaultRoot = \OC\Files\Filesystem::getRoot();
\OC\Files\Filesystem::mount($storage1, array(), '/');
\OC\Files\Filesystem::mount($storage2, array(), $defaultRoot);
- \OC_Hook::connect('OC_Filesystem', 'post_create', $this, 'dummyCreateHook');
+ \OC_Hook::connect('OC_Filesystem', 'post_create', $this, 'dummyHookCreate');
+ \OC_Hook::connect('OC_Filesystem', 'post_update', $this, 'dummyHookUpdate');
+ \OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHookWrite');
$view = new \OC\Files\View($defaultRoot);
- $this->hookPath = null;
+ $this->hookWritePath = $this->hookUpdatePath = $this->hookCreatePath = null;
$view->file_put_contents('/asd.txt', 'foo');
- $this->assertEquals('/asd.txt', $this->createHookPath);
- $this->createHookPath = null;
+ $this->assertEquals('/asd.txt', $this->hookCreatePath);
+ $this->assertNull($this->hookUpdatePath);
+ $this->assertEquals('/asd.txt', $this->hookWritePath);
+
+ $this->hookWritePath = $this->hookUpdatePath = $this->hookCreatePath = null;
$view->file_put_contents('/asd.txt', 'foo');
- $this->assertNull($this->createHookPath);
+ $this->assertNull($this->hookCreatePath);
+ $this->assertEquals('/asd.txt', $this->hookUpdatePath);
+ $this->assertEquals('/asd.txt', $this->hookWritePath);
+
+ \OC_Hook::clear('OC_Filesystem', 'post_create');
+ \OC_Hook::clear('OC_Filesystem', 'post_update');
+ \OC_Hook::clear('OC_Filesystem', 'post_write');
}
/**
@@ -563,6 +583,6 @@ class View extends \PHPUnit_Framework_TestCase {
$scanner->scanFile('test', \OC\Files\Cache\Scanner::REUSE_ETAG);
$info2 = $view->getFileInfo('/test/test');
- $this->assertEquals($info['etag'], $info2['etag']);
+ $this->assertSame($info['etag'], $info2['etag']);
}
}
diff --git a/tests/lib/group.php b/tests/lib/group.php
index 8de8d033e19..26232187c36 100644
--- a/tests/lib/group.php
+++ b/tests/lib/group.php
@@ -109,25 +109,6 @@ class Test_Group extends PHPUnit_Framework_TestCase {
$this->assertEquals(array(), OC_Group::getGroups());
}
- public function testDisplayNamesInGroup() {
- OC_Group::useBackend(new OC_Group_Dummy());
- $userBackend = new \OC_User_Dummy();
- \OC_User::getManager()->registerBackend($userBackend);
-
- $group1 = uniqid();
- $user1 = 'uid1';
- $user2 = 'uid2';
- OC_Group::createGroup($group1);
- $userBackend->createUser($user1, '');
- $userBackend->createUser($user2, '');
- OC_Group::addToGroup($user1, $group1);
- OC_Group::addToGroup($user2, $group1);
- //Dummy backend does not support setting displaynames, uid will always
- //be returned. This checks primarily, that the return format is okay.
- $expected = array($user1 => $user1, $user2 => $user2);
- $this->assertEquals($expected, OC_Group::displayNamesInGroup($group1));
- }
-
public function testUsersInGroup() {
OC_Group::useBackend(new OC_Group_Dummy());
$userBackend = new \OC_User_Dummy();
diff --git a/tests/lib/group/group.php b/tests/lib/group/group.php
index 3982c00e45f..990f8ecc1d5 100644
--- a/tests/lib/group/group.php
+++ b/tests/lib/group/group.php
@@ -287,7 +287,7 @@ class Group extends \PHPUnit_Framework_TestCase {
->will($this->returnValue(array('user2')));
$backend2->expects($this->once())
->method('usersInGroup')
- ->with('group1', 'user', 1, 0)
+ ->with('group1', 'user', 2, 1)
->will($this->returnValue(array('user1')));
$users = $group->searchUsers('user', 2, 1);
@@ -299,6 +299,68 @@ class Group extends \PHPUnit_Framework_TestCase {
$this->assertEquals('user1', $user1->getUID());
}
+ public function testCountUsers() {
+ $backend1 = $this->getMock('OC_Group_Database');
+ $userManager = $this->getUserManager();
+ $group = new \OC\Group\Group('group1', array($backend1), $userManager);
+
+ $backend1->expects($this->once())
+ ->method('countUsersInGroup')
+ ->with('group1', '2')
+ ->will($this->returnValue(3));
+
+ $backend1->expects($this->any())
+ ->method('implementsActions')
+ ->will($this->returnValue(true));
+
+ $users = $group->count('2');
+
+ $this->assertSame(3, $users);
+ }
+
+ public function testCountUsersMultipleBackends() {
+ $backend1 = $this->getMock('OC_Group_Database');
+ $backend2 = $this->getMock('OC_Group_Database');
+ $userManager = $this->getUserManager();
+ $group = new \OC\Group\Group('group1', array($backend1, $backend2), $userManager);
+
+ $backend1->expects($this->once())
+ ->method('countUsersInGroup')
+ ->with('group1', '2')
+ ->will($this->returnValue(3));
+ $backend1->expects($this->any())
+ ->method('implementsActions')
+ ->will($this->returnValue(true));
+
+ $backend2->expects($this->once())
+ ->method('countUsersInGroup')
+ ->with('group1', '2')
+ ->will($this->returnValue(4));
+ $backend2->expects($this->any())
+ ->method('implementsActions')
+ ->will($this->returnValue(true));
+
+ $users = $group->count('2');
+
+ $this->assertSame(7, $users);
+ }
+
+ public function testCountUsersNoMethod() {
+ $backend1 = $this->getMock('OC_Group_Database');
+ $userManager = $this->getUserManager();
+ $group = new \OC\Group\Group('group1', array($backend1), $userManager);
+
+ $backend1->expects($this->never())
+ ->method('countUsersInGroup');
+ $backend1->expects($this->any())
+ ->method('implementsActions')
+ ->will($this->returnValue(false));
+
+ $users = $group->count('2');
+
+ $this->assertSame(false, $users);
+ }
+
public function testDelete() {
$backend = $this->getMock('OC_Group_Database');
$userManager = $this->getUserManager();
diff --git a/tests/lib/group/manager.php b/tests/lib/group/manager.php
index c39a7d6f33a..bab9621e39d 100644
--- a/tests/lib/group/manager.php
+++ b/tests/lib/group/manager.php
@@ -254,7 +254,7 @@ class Manager extends \PHPUnit_Framework_TestCase {
$backend2 = $this->getMock('\OC_Group_Database');
$backend2->expects($this->once())
->method('getGroups')
- ->with('1', 1, 0)
+ ->with('1', 2, 1)
->will($this->returnValue(array('group12')));
$backend2->expects($this->any())
->method('groupExists')
@@ -344,6 +344,56 @@ class Manager extends \PHPUnit_Framework_TestCase {
$this->assertEquals('group2', $group2->getGID());
}
+ public function testDisplayNamesInGroupMultipleUserBackends() {
+ $user1 = new User('user1', null);
+ $user2 = new User('user2', null);
+ $user3 = new User('user3', null);
+ $user4 = new User('user33', null);
+
+ /**
+ * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend1
+ */
+ $backend = $this->getMock('\OC_Group_Database');
+ $backend->expects($this->exactly(1))
+ ->method('groupExists')
+ ->with('testgroup')
+ ->will($this->returnValue(true));
+
+ $backend->expects($this->once())
+ ->method('usersInGroup')
+ ->with('testgroup', '', -1, 0)
+ ->will($this->returnValue(array('user2', 'user33')));
+
+ /**
+ * @var \OC\User\Manager $userManager
+ */
+ $userManager = $this->getMock('\OC\User\Manager');
+ $userManager->expects($this->once())
+ ->method('search')
+ ->with('user3')
+ ->will($this->returnValue(array('user3' => $user3, 'user33' => $user4)));
+
+ $userManager->expects($this->any())
+ ->method('get')
+ ->will($this->returnCallback(function($uid) {
+ switch($uid) {
+ case 'user1' : return new User('user1', null);
+ case 'user2' : return new User('user2', null);
+ case 'user3' : return new User('user3', null);
+ case 'user33': return new User('user33', null);
+ default:
+ return null;
+ }
+ }));
+
+ $manager = new \OC\Group\Manager($userManager);
+ $manager->addBackend($backend);
+
+ $users = $manager->displayNamesInGroup('testgroup', 'user3');
+ $this->assertEquals(1, count($users));
+ $this->assertTrue(isset($users['user33']));
+ }
+
public function testGetUserGroupsWithAddUser() {
/**
* @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend
diff --git a/tests/lib/helper.php b/tests/lib/helper.php
index 4311215795c..5663df7c9ae 100644
--- a/tests/lib/helper.php
+++ b/tests/lib/helper.php
@@ -23,6 +23,7 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
array('0 B', 0),
array('1 kB', 1024),
array('9.5 MB', 10000000),
+ array('1.3 GB', 1395864371),
array('465.7 GB', 500000000000),
array('454.7 TB', 500000000000000),
array('444.1 PB', 500000000000000000),
@@ -30,6 +31,28 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
}
/**
+ * @dataProvider phpFileSizeProvider
+ */
+ public function testPhpFileSize($expected, $input)
+ {
+ $result = OC_Helper::phpFileSize($input);
+ $this->assertEquals($expected, $result);
+ }
+
+ public function phpFileSizeProvider()
+ {
+ return array(
+ array('0B', 0),
+ array('1K', 1024),
+ array('9.5M', 10000000),
+ array('1.3G', 1395864371),
+ array('465.7G', 500000000000),
+ array('465661.3G', 500000000000000),
+ array('465661287.3G', 500000000000000000),
+ );
+ }
+
+ /**
* @dataProvider computerFileSizeProvider
*/
function testComputerFileSize($expected, $input) {
@@ -41,8 +64,9 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
return array(
array(0.0, "0 B"),
array(1024.0, "1 kB"),
+ array(1395864371.0, '1.3 GB'),
array(9961472.0, "9.5 MB"),
- array(500041567436.8, "465.7 GB"),
+ array(500041567437.0, "465.7 GB"),
);
}
@@ -69,6 +93,18 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
$this->assertEquals($result, $expected);
}
+ function testGetSecureMimeType() {
+ $dir=OC::$SERVERROOT.'/tests/data';
+
+ $result = OC_Helper::getSecureMimeType('image/svg+xml');
+ $expected = 'text/plain';
+ $this->assertEquals($result, $expected);
+
+ $result = OC_Helper::getSecureMimeType('image/png');
+ $expected = 'image/png';
+ $this->assertEquals($result, $expected);
+ }
+
function testGetFileNameMimeType() {
$this->assertEquals('text/plain', OC_Helper::getFileNameMimeType('foo.txt'));
$this->assertEquals('image/png', OC_Helper::getFileNameMimeType('foo.png'));
@@ -243,4 +279,179 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
array(3670, true, \OC::$SERVERROOT . '/tests/data/testimage.png', \OC::$SERVERROOT . '/tests/data/testimage-copy.png'),
);
}
+
+ // Url generator methods
+
+ /**
+ * @small
+ * @brief test absolute URL construction
+ * @dataProvider provideDocRootURLs
+ */
+ function testMakeAbsoluteURLDocRoot($url, $expectedResult) {
+ \OC::$WEBROOT = '';
+ $result = \OC_Helper::makeURLAbsolute($url);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ /**
+ * @small
+ * @brief test absolute URL construction
+ * @dataProvider provideSubDirURLs
+ */
+ function testMakeAbsoluteURLSubDir($url, $expectedResult) {
+ \OC::$WEBROOT = '/owncloud';
+ $result = \OC_Helper::makeURLAbsolute($url);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ public function provideDocRootURLs() {
+ return array(
+ array('index.php', 'http://localhost/index.php'),
+ array('/index.php', 'http://localhost/index.php'),
+ array('/apps/index.php', 'http://localhost/apps/index.php'),
+ array('apps/index.php', 'http://localhost/apps/index.php'),
+ );
+ }
+
+ public function provideSubDirURLs() {
+ return array(
+ array('index.php', 'http://localhost/owncloud/index.php'),
+ array('/index.php', 'http://localhost/owncloud/index.php'),
+ array('/apps/index.php', 'http://localhost/owncloud/apps/index.php'),
+ array('apps/index.php', 'http://localhost/owncloud/apps/index.php'),
+ );
+ }
+
+ /**
+ * @small
+ * @brief test linkTo URL construction
+ * @dataProvider provideDocRootAppUrlParts
+ */
+ public function testLinkToDocRoot($app, $file, $args, $expectedResult) {
+ \OC::$WEBROOT = '';
+ $result = \OC_Helper::linkTo($app, $file, $args);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ /**
+ * @small
+ * @brief test linkTo URL construction in sub directory
+ * @dataProvider provideSubDirAppUrlParts
+ */
+ public function testLinkToSubDir($app, $file, $args, $expectedResult) {
+ \OC::$WEBROOT = '/owncloud';
+ $result = \OC_Helper::linkTo($app, $file, $args);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ public function provideDocRootAppUrlParts() {
+ return array(
+ array('files', 'index.php', array(), '/index.php/apps/files'),
+ array('files', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/index.php/apps/files?trut=trat&dut=dat'),
+ array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/index.php?trut=trat&dut=dat'),
+ );
+ }
+
+ public function provideSubDirAppUrlParts() {
+ return array(
+ array('files', 'index.php', array(), '/owncloud/index.php/apps/files'),
+ array('files', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/owncloud/index.php/apps/files?trut=trat&dut=dat'),
+ array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/owncloud/index.php?trut=trat&dut=dat'),
+ );
+ }
+
+ /**
+ * @small
+ * @brief test linkToAbsolute URL construction
+ * @dataProvider provideDocRootAppAbsoluteUrlParts
+ */
+ public function testLinkToAbsoluteDocRoot($app, $file, $args, $expectedResult) {
+ \OC::$WEBROOT = '';
+ $result = \OC_Helper::linkToAbsolute($app, $file, $args);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ /**
+ * @small
+ * @brief test linkToAbsolute URL construction in sub directory
+ * @dataProvider provideSubDirAppAbsoluteUrlParts
+ */
+ public function testLinkToAbsoluteSubDir($app, $file, $args, $expectedResult) {
+ \OC::$WEBROOT = '/owncloud';
+ $result = \OC_Helper::linkToAbsolute($app, $file, $args);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ public function provideDocRootAppAbsoluteUrlParts() {
+ return array(
+ array('files', 'index.php', array(), 'http://localhost/index.php/apps/files'),
+ array('files', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/index.php/apps/files?trut=trat&dut=dat'),
+ array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/index.php?trut=trat&dut=dat'),
+ );
+ }
+
+ public function provideSubDirAppAbsoluteUrlParts() {
+ return array(
+ array('files', 'index.php', array(), 'http://localhost/owncloud/index.php/apps/files'),
+ array('files', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/owncloud/index.php/apps/files?trut=trat&dut=dat'),
+ array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/owncloud/index.php?trut=trat&dut=dat'),
+ );
+ }
+
+ /**
+ * @small
+ * @brief test linkToRemoteBase URL construction
+ */
+ public function testLinkToRemoteBase() {
+ \OC::$WEBROOT = '';
+ $result = \OC_Helper::linkToRemoteBase('webdav');
+ $this->assertEquals('/remote.php/webdav', $result);
+
+ \OC::$WEBROOT = '/owncloud';
+ $result = \OC_Helper::linkToRemoteBase('webdav');
+ $this->assertEquals('/owncloud/remote.php/webdav', $result);
+ }
+
+ /**
+ * @small
+ * @brief test linkToRemote URL construction
+ */
+ public function testLinkToRemote() {
+ \OC::$WEBROOT = '';
+ $result = \OC_Helper::linkToRemote('webdav');
+ $this->assertEquals('http://localhost/remote.php/webdav/', $result);
+ $result = \OC_Helper::linkToRemote('webdav', false);
+ $this->assertEquals('http://localhost/remote.php/webdav', $result);
+
+ \OC::$WEBROOT = '/owncloud';
+ $result = \OC_Helper::linkToRemote('webdav');
+ $this->assertEquals('http://localhost/owncloud/remote.php/webdav/', $result);
+ $result = \OC_Helper::linkToRemote('webdav', false);
+ $this->assertEquals('http://localhost/owncloud/remote.php/webdav', $result);
+ }
+
+ /**
+ * @small
+ * @brief test linkToPublic URL construction
+ */
+ public function testLinkToPublic() {
+ \OC::$WEBROOT = '';
+ $result = \OC_Helper::linkToPublic('files');
+ $this->assertEquals('http://localhost/public.php?service=files', $result);
+ $result = \OC_Helper::linkToPublic('files', false);
+ $this->assertEquals('http://localhost/public.php?service=files', $result);
+
+ \OC::$WEBROOT = '/owncloud';
+ $result = \OC_Helper::linkToPublic('files');
+ $this->assertEquals('http://localhost/owncloud/public.php?service=files', $result);
+ $result = \OC_Helper::linkToPublic('files', false);
+ $this->assertEquals('http://localhost/owncloud/public.php?service=files', $result);
+ }
+
}
diff --git a/tests/lib/helperstorage.php b/tests/lib/helperstorage.php
new file mode 100644
index 00000000000..010a54e3bb0
--- /dev/null
+++ b/tests/lib/helperstorage.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+/**
+ * Test the storage functions of OC_Helper
+ */
+class Test_Helper_Storage extends PHPUnit_Framework_TestCase {
+ private $user;
+ private $storageMock;
+
+ public function setUp() {
+ $this->user = 'user_' . uniqid();
+ \OC\Files\Filesystem::tearDown();
+ \OC\Files\Filesystem::init($this->user, '/' . $this->user . '/files');
+
+ $this->storageMock = $this->getMock(
+ '\OC\Files\Storage\Temporary',
+ array('free_space'),
+ array('')
+ );
+
+ \OC\Files\Filesystem::clearMounts();
+
+ $this->storageMock->expects($this->once())
+ ->method('free_space')
+ ->will($this->returnValue(12));
+ }
+
+ public function tearDown() {
+ $this->user = null;
+
+ $this->storageMock->getCache()->clear();
+ \OC\Files\Filesystem::tearDown();
+ }
+
+ /**
+ * Test getting the storage info
+ */
+ function testGetStorageInfo() {
+ \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
+ $this->storageMock->file_put_contents('test.txt', '01234');
+
+ $storageInfo = \OC_Helper::getStorageInfo('');
+ $this->assertEquals(12, $storageInfo['free']);
+ $this->assertEquals(5, $storageInfo['used']);
+ $this->assertEquals(17, $storageInfo['total']);
+ }
+
+ /**
+ * Test getting the storage info with quota enabled
+ */
+ function testGetStorageInfoWithQuota() {
+ $this->storageMock->file_put_contents('test.txt', '01234');
+ $this->storageMock = new \OC\Files\Storage\Wrapper\Quota(
+ array(
+ 'storage' => $this->storageMock,
+ 'quota' => 7
+ )
+ );
+ \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
+
+ $storageInfo = \OC_Helper::getStorageInfo('');
+ $this->assertEquals(2, $storageInfo['free']);
+ $this->assertEquals(5, $storageInfo['used']);
+ $this->assertEquals(7, $storageInfo['total']);
+ }
+
+ /**
+ * Test getting the storage info when data exceeds quota
+ */
+ function testGetStorageInfoWhenSizeExceedsQuota() {
+ $this->storageMock->file_put_contents('test.txt', '0123456789');
+ $this->storageMock = new \OC\Files\Storage\Wrapper\Quota(
+ array(
+ 'storage' => $this->storageMock,
+ 'quota' => 7
+ )
+ );
+ \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
+
+ $storageInfo = \OC_Helper::getStorageInfo('');
+ $this->assertEquals(0, $storageInfo['free']);
+ $this->assertEquals(10, $storageInfo['used']);
+ // total = quota
+ $this->assertEquals(7, $storageInfo['total']);
+ }
+
+ /**
+ * Test getting the storage info when the remaining
+ * free storage space is less than the quota
+ */
+ function testGetStorageInfoWhenFreeSpaceLessThanQuota() {
+ $this->storageMock->file_put_contents('test.txt', '01234');
+ $this->storageMock = new \OC\Files\Storage\Wrapper\Quota(
+ array(
+ 'storage' => $this->storageMock,
+ 'quota' => 18
+ )
+ );
+ \OC\Files\Filesystem::mount($this->storageMock, array(), '/' . $this->user . '/files');
+
+ $storageInfo = \OC_Helper::getStorageInfo('');
+ $this->assertEquals(12, $storageInfo['free']);
+ $this->assertEquals(5, $storageInfo['used']);
+ // total = free + used (because quota > total)
+ $this->assertEquals(17, $storageInfo['total']);
+ }
+}
diff --git a/tests/lib/image.php b/tests/lib/image.php
index 4aba1b0bc61..131a9d86f3e 100644
--- a/tests/lib/image.php
+++ b/tests/lib/image.php
@@ -8,8 +8,8 @@
class Test_Image extends PHPUnit_Framework_TestCase {
public static function tearDownAfterClass() {
- unlink(OC::$SERVERROOT.'/tests/data/testimage2.png');
- unlink(OC::$SERVERROOT.'/tests/data/testimage2.jpg');
+ @unlink(OC::$SERVERROOT.'/tests/data/testimage2.png');
+ @unlink(OC::$SERVERROOT.'/tests/data/testimage2.jpg');
}
public function testGetMimeTypeForFile() {
@@ -236,4 +236,24 @@ class Test_Image extends PHPUnit_Framework_TestCase {
$this->assertEquals(200, $img->width());
$this->assertEquals(200, $img->height());
}
+
+ function convertDataProvider() {
+ return array(
+ array( 'image/gif'),
+ array( 'image/jpeg'),
+ array( 'image/png'),
+ );
+ }
+
+ /**
+ * @dataProvider convertDataProvider
+ */
+ public function testConvert($mimeType) {
+ $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $tempFile = tempnam(sys_get_temp_dir(), 'img-test');
+
+ $img->save($tempFile, $mimeType);
+ $actualMimeType = \OC_Image::getMimeTypeForFile($tempFile);
+ $this->assertEquals($mimeType, $actualMimeType);
+ }
}
diff --git a/tests/lib/mail.php b/tests/lib/mail.php
new file mode 100644
index 00000000000..3cc9868e25e
--- /dev/null
+++ b/tests/lib/mail.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Copyright (c) 2014 Thomas Müller <deepdiver@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+class Test_Mail extends PHPUnit_Framework_TestCase {
+
+ protected function setUp()
+ {
+ if (!function_exists('idn_to_ascii')) {
+ $this->markTestSkipped(
+ 'The intl extension is not available.'
+ );
+ }
+ }
+
+ /**
+ * @dataProvider buildAsciiEmailProvider
+ * @param $expected
+ * @param $address
+ */
+ public function testBuildAsciiEmail($expected, $address) {
+ $actual = \OC_Mail::buildAsciiEmail($address);
+ $this->assertEquals($expected, $actual);
+ }
+
+ function buildAsciiEmailProvider() {
+ return array(
+ array('info@example.com', 'info@example.com'),
+ array('info@xn--cjr6vy5ejyai80u.com', 'info@國際化域名.com'),
+ array('info@xn--mller-kva.de', 'info@müller.de'),
+ array('info@xn--mller-kva.xn--mller-kva.de', 'info@müller.müller.de'),
+ );
+ }
+
+}
diff --git a/tests/lib/preview.php b/tests/lib/preview.php
index 353b66fd6d6..4ef61fb8257 100644
--- a/tests/lib/preview.php
+++ b/tests/lib/preview.php
@@ -10,66 +10,73 @@ namespace Test;
class Preview extends \PHPUnit_Framework_TestCase {
- public function testIsPreviewDeleted() {
- $user = $this->initFS();
+ /**
+ * @var string
+ */
+ private $user;
+
+ /**
+ * @var \OC\Files\View
+ */
+ private $rootView;
+
+ public function setUp() {
+ $this->user = $this->initFS();
- $rootView = new \OC\Files\View('');
- $rootView->mkdir('/'.$user);
- $rootView->mkdir('/'.$user.'/files');
+ $this->rootView = new \OC\Files\View('');
+ $this->rootView->mkdir('/'.$this->user);
+ $this->rootView->mkdir('/'.$this->user.'/files');
+ }
+
+ public function testIsPreviewDeleted() {
- $samplefile = '/'.$user.'/files/test.txt';
+ $sampleFile = '/'.$this->user.'/files/test.txt';
- $rootView->file_put_contents($samplefile, 'dummy file data');
+ $this->rootView->file_put_contents($sampleFile, 'dummy file data');
$x = 50;
$y = 50;
- $preview = new \OC\Preview($user, 'files/', 'test.txt', $x, $y);
+ $preview = new \OC\Preview($this->user, 'files/', 'test.txt', $x, $y);
$preview->getPreview();
- $fileinfo = $rootView->getFileInfo($samplefile);
- $fileid = $fileinfo['fileid'];
+ $fileInfo = $this->rootView->getFileInfo($sampleFile);
+ $fileId = $fileInfo['fileid'];
- $thumbcachefile = '/' . $user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileid . '/' . $x . '-' . $y . '.png';
+ $thumbCacheFile = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $x . '-' . $y . '.png';
- $this->assertEquals($rootView->file_exists($thumbcachefile), true);
+ $this->assertEquals($this->rootView->file_exists($thumbCacheFile), true);
$preview->deletePreview();
- $this->assertEquals($rootView->file_exists($thumbcachefile), false);
+ $this->assertEquals($this->rootView->file_exists($thumbCacheFile), false);
}
public function testAreAllPreviewsDeleted() {
- $user = $this->initFS();
- $rootView = new \OC\Files\View('');
- $rootView->mkdir('/'.$user);
- $rootView->mkdir('/'.$user.'/files');
+ $sampleFile = '/'.$this->user.'/files/test.txt';
- $samplefile = '/'.$user.'/files/test.txt';
-
- $rootView->file_put_contents($samplefile, 'dummy file data');
+ $this->rootView->file_put_contents($sampleFile, 'dummy file data');
$x = 50;
$y = 50;
- $preview = new \OC\Preview($user, 'files/', 'test.txt', $x, $y);
+ $preview = new \OC\Preview($this->user, 'files/', 'test.txt', $x, $y);
$preview->getPreview();
- $fileinfo = $rootView->getFileInfo($samplefile);
- $fileid = $fileinfo['fileid'];
+ $fileInfo = $this->rootView->getFileInfo($sampleFile);
+ $fileId = $fileInfo['fileid'];
- $thumbcachefolder = '/' . $user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileid . '/';
+ $thumbCacheFolder = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/';
- $this->assertEquals($rootView->is_dir($thumbcachefolder), true);
+ $this->assertEquals($this->rootView->is_dir($thumbCacheFolder), true);
$preview->deleteAllPreviews();
- $this->assertEquals($rootView->is_dir($thumbcachefolder), false);
+ $this->assertEquals($this->rootView->is_dir($thumbCacheFolder), false);
}
public function testIsMaxSizeWorking() {
- $user = $this->initFS();
$maxX = 250;
$maxY = 250;
@@ -77,15 +84,11 @@ class Preview extends \PHPUnit_Framework_TestCase {
\OC_Config::setValue('preview_max_x', $maxX);
\OC_Config::setValue('preview_max_y', $maxY);
- $rootView = new \OC\Files\View('');
- $rootView->mkdir('/'.$user);
- $rootView->mkdir('/'.$user.'/files');
-
- $samplefile = '/'.$user.'/files/test.txt';
+ $sampleFile = '/'.$this->user.'/files/test.txt';
- $rootView->file_put_contents($samplefile, 'dummy file data');
+ $this->rootView->file_put_contents($sampleFile, 'dummy file data');
- $preview = new \OC\Preview($user, 'files/', 'test.txt', 1000, 1000);
+ $preview = new \OC\Preview($this->user, 'files/', 'test.txt', 1000, 1000);
$image = $preview->getPreview();
$this->assertEquals($image->width(), $maxX);
@@ -108,18 +111,13 @@ class Preview extends \PHPUnit_Framework_TestCase {
* @dataProvider txtBlacklist
*/
public function testIsTransparent($extension, $data, $expectedResult) {
- $user = $this->initFS();
-
- $rootView = new \OC\Files\View('');
- $rootView->mkdir('/'.$user);
- $rootView->mkdir('/'.$user.'/files');
$x = 32;
$y = 32;
- $sample = '/'.$user.'/files/test.'.$extension;
- $rootView->file_put_contents($sample, $data);
- $preview = new \OC\Preview($user, 'files/', 'test.'.$extension, $x, $y);
+ $sample = '/'.$this->user.'/files/test.'.$extension;
+ $this->rootView->file_put_contents($sample, $data);
+ $preview = new \OC\Preview($this->user, 'files/', 'test.'.$extension, $x, $y);
$image = $preview->getPreview();
$resource = $image->resource();
@@ -133,6 +131,64 @@ class Preview extends \PHPUnit_Framework_TestCase {
);
}
+ public function testCreationFromCached() {
+
+ $sampleFile = '/'.$this->user.'/files/test.txt';
+
+ $this->rootView->file_put_contents($sampleFile, 'dummy file data');
+
+ // create base preview
+ $x = 150;
+ $y = 150;
+
+ $preview = new \OC\Preview($this->user, 'files/', 'test.txt', $x, $y);
+ $preview->getPreview();
+
+ $fileInfo = $this->rootView->getFileInfo($sampleFile);
+ $fileId = $fileInfo['fileid'];
+
+ $thumbCacheFile = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $x . '-' . $y . '.png';
+
+ $this->assertEquals($this->rootView->file_exists($thumbCacheFile), true);
+
+
+ // create smaller previews
+ $preview = new \OC\Preview($this->user, 'files/', 'test.txt', 50, 50);
+ $isCached = $preview->isCached($fileId);
+
+ $this->assertEquals($this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/150-150.png', $isCached);
+ }
+
+ /*
+ public function testScalingUp() {
+
+ $sampleFile = '/'.$this->user.'/files/test.txt';
+
+ $this->rootView->file_put_contents($sampleFile, 'dummy file data');
+
+ // create base preview
+ $x = 150;
+ $y = 150;
+
+ $preview = new \OC\Preview($this->user, 'files/', 'test.txt', $x, $y);
+ $preview->getPreview();
+
+ $fileInfo = $this->rootView->getFileInfo($sampleFile);
+ $fileId = $fileInfo['fileid'];
+
+ $thumbCacheFile = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $x . '-' . $y . '.png';
+
+ $this->assertEquals($this->rootView->file_exists($thumbCacheFile), true);
+
+
+ // create bigger previews - with scale up
+ $preview = new \OC\Preview($this->user, 'files/', 'test.txt', 250, 250);
+ $isCached = $preview->isCached($fileId);
+
+ $this->assertEquals($this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/150-150.png', $isCached);
+ }
+ */
+
private function initFS() {
// create a new user with his own filesystem view
// this gets called by each test in this test class
diff --git a/tests/lib/public/ocpconfig.php b/tests/lib/public/ocpconfig.php
new file mode 100644
index 00000000000..43a9ca625ee
--- /dev/null
+++ b/tests/lib/public/ocpconfig.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Thomas Müller
+ * @copyright 2014 Thomas Müller thomas.mueller@tmit.eu
+ *
+ * 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_OCPConfig extends PHPUnit_Framework_TestCase
+{
+
+ public function testSetAppValueIfSetToNull() {
+
+ $key = uniqid("key-");
+
+ $result = \OCP\Config::setAppValue('unit-test', $key, null);
+ $this->assertTrue($result);
+
+ $result = \OCP\Config::setAppValue('unit-test', $key, '12');
+ $this->assertTrue($result);
+
+ }
+
+}
diff --git a/tests/lib/request.php b/tests/lib/request.php
index 1d77acc70ae..bff84e1b03f 100644
--- a/tests/lib/request.php
+++ b/tests/lib/request.php
@@ -135,4 +135,141 @@ class Test_Request extends PHPUnit_Framework_TestCase {
),
);
}
+
+ public function testInsecureServerHost() {
+ unset($_SERVER['HTTP_X_FORWARDED_HOST']);
+ unset($_SERVER['HTTP_HOST']);
+ unset($_SERVER['SERVER_NAME']);
+ $_SERVER['SERVER_NAME'] = 'from.server.name:8080';
+ $host = OC_Request::insecureServerHost();
+ $this->assertEquals('from.server.name:8080', $host);
+
+ $_SERVER['HTTP_HOST'] = 'from.host.header:8080';
+ $host = OC_Request::insecureServerHost();
+ $this->assertEquals('from.host.header:8080', $host);
+
+ $_SERVER['HTTP_X_FORWARDED_HOST'] = 'from.forwarded.host:8080';
+ $host = OC_Request::insecureServerHost();
+ $this->assertEquals('from.forwarded.host:8080', $host);
+
+ $_SERVER['HTTP_X_FORWARDED_HOST'] = 'from.forwarded.host2:8080,another.one:9000';
+ $host = OC_Request::insecureServerHost();
+ $this->assertEquals('from.forwarded.host2:8080', $host);
+
+ // clean up
+ unset($_SERVER['HTTP_X_FORWARDED_HOST']);
+ unset($_SERVER['HTTP_HOST']);
+ unset($_SERVER['SERVER_NAME']);
+ }
+
+ public function testGetOverwriteHost() {
+ unset($_SERVER['REMOTE_ADDR']);
+ OC_Config::deleteKey('overwritecondaddr');
+ OC_Config::deleteKey('overwritehost');
+ $host = OC_Request::getOverwriteHost();
+ $this->assertNull($host);
+
+ OC_Config::setValue('overwritehost', '');
+ $host = OC_Request::getOverwriteHost();
+ $this->assertNull($host);
+
+ OC_Config::setValue('overwritehost', 'host.one.test:8080');
+ $host = OC_Request::getOverwriteHost();
+ $this->assertEquals('host.one.test:8080', $host);
+
+ $_SERVER['REMOTE_ADDR'] = 'somehost.test:8080';
+ OC_Config::setValue('overwritecondaddr', '^somehost\..*$');
+ $host = OC_Request::getOverwriteHost();
+ $this->assertEquals('host.one.test:8080', $host);
+
+ OC_Config::setValue('overwritecondaddr', '^somethingelse.*$');
+ $host = OC_Request::getOverwriteHost();
+ $this->assertNull($host);
+
+ // clean up
+ unset($_SERVER['REMOTE_ADDR']);
+ OC_Config::deleteKey('overwritecondaddr');
+ OC_Config::deleteKey('overwritehost');
+ }
+
+ /**
+ * @dataProvider trustedDomainDataProvider
+ */
+ public function testIsTrustedDomain($trustedDomains, $testDomain, $result) {
+ OC_Config::deleteKey('trusted_domains');
+ if ($trustedDomains !== null) {
+ OC_Config::setValue('trusted_domains', $trustedDomains);
+ }
+
+ $this->assertEquals($result, OC_Request::isTrustedDomain($testDomain));
+
+ // clean up
+ OC_Config::deleteKey('trusted_domains');
+ }
+
+ public function trustedDomainDataProvider() {
+ $trustedHostTestList = array('host.one.test:8080', 'host.two.test:8080');
+ return array(
+ // empty defaults to true
+ array(null, 'host.one.test:8080', true),
+ array('', 'host.one.test:8080', true),
+ array(array(), 'host.one.test:8080', true),
+
+ // trust list when defined
+ array($trustedHostTestList, 'host.two.test:8080', true),
+ array($trustedHostTestList, 'host.two.test:9999', false),
+ array($trustedHostTestList, 'host.three.test:8080', false),
+
+ // trust localhost regardless of trust list
+ array($trustedHostTestList, 'localhost', true),
+ array($trustedHostTestList, 'localhost:8080', true),
+ array($trustedHostTestList, '127.0.0.1', true),
+ array($trustedHostTestList, '127.0.0.1:8080', true),
+
+ // do not trust invalid localhosts
+ array($trustedHostTestList, 'localhost:1:2', false),
+ array($trustedHostTestList, 'localhost: evil.host', false),
+ );
+ }
+
+ public function testServerHost() {
+ OC_Config::deleteKey('overwritecondaddr');
+ OC_Config::setValue('overwritehost', 'overwritten.host:8080');
+ OC_Config::setValue(
+ 'trusted_domains',
+ array(
+ 'trusted.host:8080',
+ 'second.trusted.host:8080'
+ )
+ );
+ $_SERVER['HTTP_HOST'] = 'trusted.host:8080';
+
+ // CLI always gives localhost
+ $oldCLI = OC::$CLI;
+ OC::$CLI = true;
+ $host = OC_Request::serverHost();
+ $this->assertEquals('localhost', $host);
+ OC::$CLI = false;
+
+ // overwritehost overrides trusted domain
+ $host = OC_Request::serverHost();
+ $this->assertEquals('overwritten.host:8080', $host);
+
+ // trusted domain returned when used
+ OC_Config::deleteKey('overwritehost');
+ $host = OC_Request::serverHost();
+ $this->assertEquals('trusted.host:8080', $host);
+
+ // trusted domain returned when untrusted one in header
+ $_SERVER['HTTP_HOST'] = 'untrusted.host:8080';
+ OC_Config::deleteKey('overwritehost');
+ $host = OC_Request::serverHost();
+ $this->assertEquals('trusted.host:8080', $host);
+
+ // clean up
+ OC_Config::deleteKey('overwritecondaddr');
+ OC_Config::deleteKey('overwritehost');
+ unset($_SERVER['HTTP_HOST']);
+ OC::$CLI = $oldCLI;
+ }
}
diff --git a/tests/lib/share/helper.php b/tests/lib/share/helper.php
new file mode 100644
index 00000000000..367507417a0
--- /dev/null
+++ b/tests/lib/share/helper.php
@@ -0,0 +1,54 @@
+<?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_Share_Helper extends PHPUnit_Framework_TestCase {
+
+ public function expireDateProvider() {
+ return array(
+ // no default expire date, we take the users expire date
+ array(array('defaultExpireDateSet' => false), 2000000000, 2000010000, 2000010000),
+ // no default expire date and no user defined expire date, return false
+ array(array('defaultExpireDateSet' => false), 2000000000, null, false),
+ // unenforced expire data and no user defined expire date, take default expire date
+ array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false), 2000000000, null, 2000086400),
+ // enforced expire date and no user defined expire date, take default expire date
+ array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true), 2000000000, null, 2000086400),
+ // unenforced expire date and user defined date > default expire date, take users expire date
+ array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false), 2000000000, 2000100000, 2000100000),
+ // unenforced expire date and user expire date < default expire date, take users expire date
+ array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false), 2000000000, 2000010000, 2000010000),
+ // enforced expire date and user expire date < default expire date, take users expire date
+ array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true), 2000000000, 2000010000, 2000010000),
+ // enforced expire date and users expire date > default expire date, take default expire date
+ array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true), 2000000000, 2000100000, 2000086400),
+ );
+ }
+
+ /**
+ * @dataProvider expireDateProvider
+ */
+ public function testCalculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate, $expected) {
+ $result = \OC\Share\Helper::calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate);
+ $this->assertSame($expected, $result);
+ }
+
+
+}
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index b5cba9430aa..aae91fa1087 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -282,7 +282,7 @@ class Test_Share extends PHPUnit_Framework_TestCase {
OC_User::setUserId($this->user2);
$this->assertEquals(array(OCP\PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
OC_User::setUserId($this->user3);
- $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt'));
+ $this->assertSame(array(), OCP\Share::getItemSharedWith('test', 'test.txt'));
// Reshare again, and then have owner unshare
OC_User::setUserId($this->user1);
@@ -292,9 +292,9 @@ class Test_Share extends PHPUnit_Framework_TestCase {
OC_User::setUserId($this->user1);
$this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
OC_User::setUserId($this->user2);
- $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt'));
+ $this->assertSame(array(), OCP\Share::getItemSharedWith('test', 'test.txt'));
OC_User::setUserId($this->user3);
- $this->assertFalse(OCP\Share::getItemSharedWith('test', 'test.txt'));
+ $this->assertSame(array(), OCP\Share::getItemSharedWith('test', 'test.txt'));
// Attempt target conflict
OC_User::setUserId($this->user1);
@@ -325,7 +325,7 @@ class Test_Share extends PHPUnit_Framework_TestCase {
);
OC_User::setUserId($this->user2);
- $this->assertFalse(
+ $this->assertSame(array(),
OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
'Failed asserting that user 2 no longer has access to test.txt after expiration.'
);
@@ -526,13 +526,13 @@ class Test_Share extends PHPUnit_Framework_TestCase {
);
OC_User::setUserId($this->user2);
- $this->assertFalse(
+ $this->assertSame(array(),
OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
'Failed asserting that user 2 no longer has access to test.txt after expiration.'
);
OC_User::setUserId($this->user3);
- $this->assertFalse(
+ $this->assertSame(array(),
OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
'Failed asserting that user 3 no longer has access to test.txt after expiration.'
);
diff --git a/tests/lib/template.php b/tests/lib/template.php
index b4f1a4c4053..eedf688721d 100644
--- a/tests/lib/template.php
+++ b/tests/lib/template.php
@@ -27,42 +27,32 @@ class Test_TemplateFunctions extends PHPUnit_Framework_TestCase {
$loader->load('OC_Template');
}
- public function testP() {
- // FIXME: do we need more testcases?
- $htmlString = "<script>alert('xss');</script>";
- ob_start();
- p($htmlString);
- $result = ob_get_clean();
+ public function testPJavaScript() {
+ $this->expectOutputString('&lt;img onload=&quot;alert(1)&quot; /&gt;');
+ p('<img onload="alert(1)" />');
+ }
- $this->assertEquals("&lt;script&gt;alert(&#039;xss&#039;);&lt;/script&gt;", $result);
+ public function testPJavaScriptWithScriptTags() {
+ $this->expectOutputString('&lt;script&gt;alert(&#039;Hacked!&#039;);&lt;/script&gt;');
+ p("<script>alert('Hacked!');</script>");
}
public function testPNormalString() {
- $normalString = "This is a good string!";
- ob_start();
- p($normalString);
- $result = ob_get_clean();
-
- $this->assertEquals("This is a good string!", $result);
+ $string = 'This is a good string without HTML.';
+ $this->expectOutputString($string);
+ p($string);
}
public function testPrintUnescaped() {
$htmlString = "<script>alert('xss');</script>";
-
- ob_start();
+ $this->expectOutputString($htmlString);
print_unescaped($htmlString);
- $result = ob_get_clean();
-
- $this->assertEquals($htmlString, $result);
}
public function testPrintUnescapedNormalString() {
- $normalString = "This is a good string!";
- ob_start();
- print_unescaped($normalString);
- $result = ob_get_clean();
-
- $this->assertEquals("This is a good string!", $result);
+ $string = 'This is a good string!';
+ $this->expectOutputString($string);
+ print_unescaped($string);
}
// ---------------------------------------------------------------------------
diff --git a/tests/lib/urlgenerator.php b/tests/lib/urlgenerator.php
index 875a7f06580..65c7fb56943 100644
--- a/tests/lib/urlgenerator.php
+++ b/tests/lib/urlgenerator.php
@@ -8,21 +8,79 @@
class Test_Urlgenerator extends PHPUnit_Framework_TestCase {
+ /**
+ * @small
+ * @brief test linkTo URL construction
+ * @dataProvider provideDocRootAppUrlParts
+ */
+ public function testLinkToDocRoot($app, $file, $args, $expectedResult) {
+ \OC::$WEBROOT = '';
+ $config = $this->getMock('\OCP\IConfig');
+ $urlGenerator = new \OC\URLGenerator($config);
+ $result = $urlGenerator->linkTo($app, $file, $args);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ /**
+ * @small
+ * @brief test linkTo URL construction in sub directory
+ * @dataProvider provideSubDirAppUrlParts
+ */
+ public function testLinkToSubDir($app, $file, $args, $expectedResult) {
+ \OC::$WEBROOT = '/owncloud';
+ $config = $this->getMock('\OCP\IConfig');
+ $urlGenerator = new \OC\URLGenerator($config);
+ $result = $urlGenerator->linkTo($app, $file, $args);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ public function provideDocRootAppUrlParts() {
+ return array(
+ array('files', 'index.php', array(), '/index.php/apps/files'),
+ array('files', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/index.php/apps/files?trut=trat&dut=dat'),
+ array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/index.php?trut=trat&dut=dat'),
+ );
+ }
+
+ public function provideSubDirAppUrlParts() {
+ return array(
+ array('files', 'index.php', array(), '/owncloud/index.php/apps/files'),
+ array('files', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/owncloud/index.php/apps/files?trut=trat&dut=dat'),
+ array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/owncloud/index.php?trut=trat&dut=dat'),
+ );
+ }
/**
* @small
* @brief test absolute URL construction
- * @dataProvider provideURLs
+ * @dataProvider provideDocRootURLs
*/
- function testGetAbsoluteURL($url, $expectedResult) {
+ function testGetAbsoluteURLDocRoot($url, $expectedResult) {
+ \OC::$WEBROOT = '';
$urlGenerator = new \OC\URLGenerator(null);
$result = $urlGenerator->getAbsoluteURL($url);
$this->assertEquals($expectedResult, $result);
}
- public function provideURLs() {
+ /**
+ * @small
+ * @brief test absolute URL construction
+ * @dataProvider provideSubDirURLs
+ */
+ function testGetAbsoluteURLSubDir($url, $expectedResult) {
+
+ \OC::$WEBROOT = '/owncloud';
+ $urlGenerator = new \OC\URLGenerator(null);
+ $result = $urlGenerator->getAbsoluteURL($url);
+
+ $this->assertEquals($expectedResult, $result);
+ }
+
+ public function provideDocRootURLs() {
return array(
array("index.php", "http://localhost/index.php"),
array("/index.php", "http://localhost/index.php"),
@@ -30,5 +88,14 @@ class Test_Urlgenerator extends PHPUnit_Framework_TestCase {
array("apps/index.php", "http://localhost/apps/index.php"),
);
}
+
+ public function provideSubDirURLs() {
+ return array(
+ array("index.php", "http://localhost/owncloud/index.php"),
+ array("/index.php", "http://localhost/owncloud/index.php"),
+ array("/apps/index.php", "http://localhost/owncloud/apps/index.php"),
+ array("apps/index.php", "http://localhost/owncloud/apps/index.php"),
+ );
+ }
}
diff --git a/tests/lib/user/manager.php b/tests/lib/user/manager.php
index ad1ac9e12f2..fd0931af7e4 100644
--- a/tests/lib/user/manager.php
+++ b/tests/lib/user/manager.php
@@ -190,8 +190,8 @@ class Manager extends \PHPUnit_Framework_TestCase {
$result = $manager->search('fo');
$this->assertEquals(2, count($result));
- $this->assertEquals('afoo', $result[0]->getUID());
- $this->assertEquals('foo', $result[1]->getUID());
+ $this->assertEquals('afoo', array_shift($result)->getUID());
+ $this->assertEquals('foo', array_shift($result)->getUID());
}
public function testSearchTwoBackendLimitOffset() {
@@ -210,7 +210,7 @@ class Manager extends \PHPUnit_Framework_TestCase {
$backend2 = $this->getMock('\OC_User_Dummy');
$backend2->expects($this->once())
->method('getUsers')
- ->with($this->equalTo('fo'), $this->equalTo(1), $this->equalTo(0))
+ ->with($this->equalTo('fo'), $this->equalTo(3), $this->equalTo(1))
->will($this->returnValue(array('foo3')));
$manager = new \OC\User\Manager();
@@ -219,9 +219,9 @@ class Manager extends \PHPUnit_Framework_TestCase {
$result = $manager->search('fo', 3, 1);
$this->assertEquals(3, count($result));
- $this->assertEquals('foo1', $result[0]->getUID());
- $this->assertEquals('foo2', $result[1]->getUID());
- $this->assertEquals('foo3', $result[2]->getUID());
+ $this->assertEquals('foo1', array_shift($result)->getUID());
+ $this->assertEquals('foo2', array_shift($result)->getUID());
+ $this->assertEquals('foo3', array_shift($result)->getUID());
}
public function testCreateUserSingleBackendNotExists() {
diff --git a/tests/lib/util.php b/tests/lib/util.php
index ee336aa1118..c4780cc5f48 100644
--- a/tests/lib/util.php
+++ b/tests/lib/util.php
@@ -43,15 +43,32 @@ class Test_Util extends PHPUnit_Framework_TestCase {
}
function testSanitizeHTML() {
+ $badArray = array(
+ 'While it is unusual to pass an array',
+ 'this function actually <blink>supports</blink> it.',
+ 'And therefore there needs to be a <script>alert("Unit"+\'test\')</script> for it!'
+ );
+ $goodArray = array(
+ 'While it is unusual to pass an array',
+ 'this function actually &lt;blink&gt;supports&lt;/blink&gt; it.',
+ 'And therefore there needs to be a &lt;script&gt;alert(&quot;Unit&quot;+&#039;test&#039;)&lt;/script&gt; for it!'
+ );
+ $result = OC_Util::sanitizeHTML($badArray);
+ $this->assertEquals($goodArray, $result);
+
+ $badString = '<img onload="alert(1)" />';
+ $result = OC_Util::sanitizeHTML($badString);
+ $this->assertEquals('&lt;img onload=&quot;alert(1)&quot; /&gt;', $result);
+
$badString = "<script>alert('Hacked!');</script>";
$result = OC_Util::sanitizeHTML($badString);
- $this->assertEquals("&lt;script&gt;alert(&#039;Hacked!&#039;);&lt;/script&gt;", $result);
+ $this->assertEquals('&lt;script&gt;alert(&#039;Hacked!&#039;);&lt;/script&gt;', $result);
- $goodString = "This is an harmless string.";
+ $goodString = 'This is a good string without HTML.';
$result = OC_Util::sanitizeHTML($goodString);
- $this->assertEquals("This is an harmless string.", $result);
+ $this->assertEquals('This is a good string without HTML.', $result);
}
-
+
function testEncodePath(){
$component = '/§#@test%&^ä/-child';
$result = OC_Util::encodePath($component);
diff --git a/tests/lib/utilcheckserver.php b/tests/lib/utilcheckserver.php
new file mode 100644
index 00000000000..155d617c4ad
--- /dev/null
+++ b/tests/lib/utilcheckserver.php
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+/**
+ * Tests for server check functions
+ */
+class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
+
+ private $datadir;
+
+ public function setUp() {
+ $this->datadir = \OC_Config::getValue('datadirectory', \OC::$SERVERROOT . '/data');
+
+ file_put_contents($this->datadir . '/.ocdata', '');
+ }
+
+ public function tearDown() {
+ // clean up
+ @unlink($this->datadir . '/.ocdata');
+ }
+
+ /**
+ * Test that checkServer() returns no errors in the regular case.
+ */
+ public function testCheckServer() {
+ $result = \OC_Util::checkServer();
+ $this->assertEmpty($result);
+ }
+
+ /**
+ * Test that checkServer() does not check the data dir validity
+ * when the server is not installed yet (else the setup cannot
+ * be run...)
+ */
+ public function testCheckServerSkipDataDirValidityOnSetup() {
+ // simulate old version that didn't have it
+ unlink($this->datadir . '/.ocdata');
+
+ $session = \OC::$server->getSession();
+ $oldInstalled = \OC_Config::getValue('installed', false);
+
+ // simulate that the server isn't setup yet
+ \OC_Config::setValue('installed', false);
+
+ // even though ".ocdata" is missing, the error isn't
+ // triggered to allow setup to run
+ $result = \OC_Util::checkServer();
+ $this->assertEmpty($result);
+
+ // restore config
+ \OC_Config::setValue('installed', $oldInstalled);
+ }
+
+ /**
+ * Test that checkServer() does not check the data dir validity
+ * when an upgrade is required (else the upgrade cannot be
+ * performed...)
+ */
+ public function testCheckServerSkipDataDirValidityOnUpgrade() {
+ // simulate old version that didn't have it
+ unlink($this->datadir . '/.ocdata');
+
+ $session = \OC::$server->getSession();
+ $oldCurrentVersion = $session->get('OC_Version');
+ $oldInstallVersion = \OC_Config::getValue('version', '0.0.0');
+
+ // upgrade condition to simulate needUpgrade() === true
+ $session->set('OC_Version', array(6, 0, 0, 2));
+ \OC_Config::setValue('version', '6.0.0.1');
+
+ // even though ".ocdata" is missing, the error isn't
+ // triggered to allow for upgrade
+ $result = \OC_Util::checkServer();
+ $this->assertEmpty($result);
+
+ // restore versions
+ $session->set('OC_Version', $oldCurrentVersion);
+ \OC_Config::setValue('version', $oldInstallVersion);
+ }
+
+ /**
+ * Test that checkDataDirectoryValidity returns no error
+ * when ".ocdata" is present.
+ */
+ public function testCheckDataDirValidity() {
+ $result = \OC_Util::checkDataDirectoryValidity($this->datadir);
+ $this->assertEmpty($result);
+ }
+
+ /**
+ * Test that checkDataDirectoryValidity and checkServer
+ * both return an error when ".ocdata" is missing.
+ */
+ public function testCheckDataDirValidityWhenFileMissing() {
+ unlink($this->datadir . '/.ocdata');
+ $result = \OC_Util::checkDataDirectoryValidity($this->datadir);
+ $this->assertEquals(1, count($result));
+
+ $result = \OC_Util::checkServer();
+ $this->assertEquals(1, count($result));
+ }
+
+}
diff --git a/tests/phpunit-autotest.xml b/tests/phpunit-autotest.xml
index 1a2ab35491b..872ff2c2596 100644
--- a/tests/phpunit-autotest.xml
+++ b/tests/phpunit-autotest.xml
@@ -36,6 +36,7 @@
</whitelist>
</filter>
<listeners>
+ <listener class="StartSessionListener" file="startsessionlistener.php" />
<listener class="TestCleanupListener" file="testcleanuplistener.php">
<arguments>
<string>detail</string>
diff --git a/tests/phpunit.xml.dist b/tests/phpunit.xml.dist
index 71a4ff2762c..21c63ea0469 100644
--- a/tests/phpunit.xml.dist
+++ b/tests/phpunit.xml.dist
@@ -29,4 +29,7 @@
</exclude>
</whitelist>
</filter>
+ <listeners>
+ <listener class="StartSessionListener" file="startsessionlistener.php" />
+ </listeners>
</phpunit>
diff --git a/tests/startsessionlistener.php b/tests/startsessionlistener.php
new file mode 100644
index 00000000000..ba049559c6e
--- /dev/null
+++ b/tests/startsessionlistener.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright (c) 2014 Thomas Müller <deepdiver@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+/**
+ * Starts a new session before each test execution
+ */
+class StartSessionListener implements PHPUnit_Framework_TestListener {
+
+ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
+
+ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) {
+ }
+
+ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
+
+ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
+
+ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
+
+ public function startTest(PHPUnit_Framework_Test $test) {
+ }
+
+ public function endTest(PHPUnit_Framework_Test $test, $time) {
+ // reopen the session - only allowed for memory session
+ if (\OC::$session instanceof \OC\Session\Memory) {
+ /** @var $session \OC\Session\Memory */
+ $session = \OC::$session;
+ $session->reopen();
+ }
+ }
+
+ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) {
+ }
+
+ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) {
+ }
+
+}
diff --git a/tests/testcleanuplistener.php b/tests/testcleanuplistener.php
index 299a589ef4e..b544c8fbe40 100644
--- a/tests/testcleanuplistener.php
+++ b/tests/testcleanuplistener.php
@@ -16,28 +16,31 @@ class TestCleanupListener implements PHPUnit_Framework_TestListener {
$this->verbosity = $verbosity;
}
- public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) {
- }
+ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
- public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) {
- }
+ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) {
+ }
- public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
- }
+ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
+
+ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
- public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
- }
+ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) {
+ }
- public function startTest(PHPUnit_Framework_Test $test) {
- }
+ public function startTest(PHPUnit_Framework_Test $test) {
+ }
- public function endTest(PHPUnit_Framework_Test $test, $time) {
- }
+ public function endTest(PHPUnit_Framework_Test $test, $time) {
+ }
- public function startTestSuite(PHPUnit_Framework_TestSuite $suite) {
- }
+ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) {
+ }
- public function endTestSuite(PHPUnit_Framework_TestSuite $suite) {
+ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) {
if ($this->cleanStrayDataFiles() && $this->isShowSuiteWarning()) {
printf("TestSuite '%s': Did not clean up data dir\n", $suite->getName());
}
@@ -47,7 +50,7 @@ class TestCleanupListener implements PHPUnit_Framework_TestListener {
if ($this->cleanProxies() && $this->isShowSuiteWarning()) {
printf("TestSuite '%s': Did not clean up proxies\n", $suite->getName());
}
- }
+ }
private function isShowSuiteWarning() {
return $this->verbosity === 'suite' || $this->verbosity === 'detail';
@@ -83,6 +86,7 @@ class TestCleanupListener implements PHPUnit_Framework_TestListener {
$knownEntries = array(
'owncloud.log' => true,
'owncloud.db' => true,
+ '.ocdata' => true,
'..' => true,
'.' => true
);
@@ -139,4 +143,3 @@ class TestCleanupListener implements PHPUnit_Framework_TestListener {
return count($proxies) > 0;
}
}
-?>