summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2013-09-25 09:52:12 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2013-09-25 09:52:12 +0200
commitdb39fede97dc4d6b9a5caf739cb2c03b4dbdd21d (patch)
tree0d8c9f25deb067ce23e901c72f2af842e9002341 /tests
parent843f15f3489856b518a30de4c803740844232209 (diff)
parent2d12e52769a30ba37d5760b1194f613bcc71035b (diff)
downloadnextcloud-server-db39fede97dc4d6b9a5caf739cb2c03b4dbdd21d.tar.gz
nextcloud-server-db39fede97dc4d6b9a5caf739cb2c03b4dbdd21d.zip
Merge branch 'master' into appframework-master
Conflicts: apps/files/lib/helper.php apps/files_trashbin/lib/helper.php
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/files/cache/permissions.php17
-rw-r--r--tests/lib/files/cache/scanner.php57
-rw-r--r--tests/lib/files/view.php14
-rw-r--r--tests/lib/preferences.php179
-rw-r--r--tests/lib/share/share.php48
5 files changed, 304 insertions, 11 deletions
diff --git a/tests/lib/files/cache/permissions.php b/tests/lib/files/cache/permissions.php
index 7e6e11e2eb2..4b284c2c8e2 100644
--- a/tests/lib/files/cache/permissions.php
+++ b/tests/lib/files/cache/permissions.php
@@ -8,6 +8,8 @@
namespace Test\Files\Cache;
+use OC\Files\Storage\Temporary;
+
class Permissions extends \PHPUnit_Framework_TestCase {
/***
* @var \OC\Files\Cache\Permissions $permissionsCache
@@ -55,4 +57,19 @@ class Permissions extends \PHPUnit_Framework_TestCase {
$this->permissionsCache->removeMultiple($ids, $user);
}
+
+ public function testUpdatePermissionsOnRescan() {
+ $storage = new Temporary(array());
+ $scanner = $storage->getScanner();
+ $cache = $storage->getCache();
+ $permissionsCache = $storage->getPermissionsCache();
+
+ $storage->file_put_contents('foo.txt', 'bar');
+ $scanner->scan('');
+ $id = $cache->getId('foo.txt');
+ $permissionsCache->set($id, 'test', 1);
+
+ $scanner->scan('');
+ $this->assertEquals(-1, $permissionsCache->get($id, 'test'));
+ }
}
diff --git a/tests/lib/files/cache/scanner.php b/tests/lib/files/cache/scanner.php
index f6deb93a49e..3f3a045377a 100644
--- a/tests/lib/files/cache/scanner.php
+++ b/tests/lib/files/cache/scanner.php
@@ -24,6 +24,21 @@ class Scanner extends \PHPUnit_Framework_TestCase {
*/
private $cache;
+ function setUp() {
+ $this->storage = new \OC\Files\Storage\Temporary(array());
+ $this->scanner = new \OC\Files\Cache\Scanner($this->storage);
+ $this->cache = new \OC\Files\Cache\Cache($this->storage);
+ }
+
+ function tearDown() {
+ if ($this->cache) {
+ $ids = $this->cache->getAll();
+ $permissionsCache = $this->storage->getPermissionsCache();
+ $permissionsCache->removeMultiple($ids, \OC_User::getUser());
+ $this->cache->clear();
+ }
+ }
+
function testFile() {
$data = "dummy file data\n";
$this->storage->file_put_contents('foo.txt', $data);
@@ -184,18 +199,38 @@ class Scanner extends \PHPUnit_Framework_TestCase {
$this->assertFalse($this->cache->inCache('folder/bar.txt'));
}
- function setUp() {
- $this->storage = new \OC\Files\Storage\Temporary(array());
- $this->scanner = new \OC\Files\Cache\Scanner($this->storage);
- $this->cache = new \OC\Files\Cache\Cache($this->storage);
+ public function testScanRemovedFile(){
+ $this->fillTestFolders();
+
+ $this->scanner->scan('');
+ $this->assertTrue($this->cache->inCache('folder/bar.txt'));
+ $this->storage->unlink('folder/bar.txt');
+ $this->scanner->scanFile('folder/bar.txt');
+ $this->assertFalse($this->cache->inCache('folder/bar.txt'));
}
- function tearDown() {
- if ($this->cache) {
- $ids = $this->cache->getAll();
- $permissionsCache = $this->storage->getPermissionsCache();
- $permissionsCache->removeMultiple($ids, \OC_User::getUser());
- $this->cache->clear();
- }
+ public function testETagRecreation() {
+ $this->fillTestFolders();
+
+ $this->scanner->scan('folder/bar.txt');
+
+ // 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');
+ $data1 = $this->cache->get('folder');
+ $data2 = $this->cache->get('');
+ $data0['etag'] = '';
+ $this->cache->put('folder/bar.txt', $data0);
+
+ // rescan
+ $this->scanner->scan('folder/bar.txt', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG);
+
+ // verify cache content
+ $newData0 = $this->cache->get('folder/bar.txt');
+ $newData1 = $this->cache->get('folder');
+ $newData2 = $this->cache->get('');
+ $this->assertNotEmpty($newData0['etag']);
+ $this->assertNotEquals($data1['etag'], $newData1['etag']);
+ $this->assertNotEquals($data2['etag'], $newData2['etag']);
}
}
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index 0de436f570a..3043f132b73 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -354,8 +354,22 @@ class View extends \PHPUnit_Framework_TestCase {
$this->hookPath = $params['path'];
}
+ public function testSearchNotOutsideView() {
+ $storage1 = $this->getTestStorage();
+ \OC\Files\Filesystem::mount($storage1, array(), '/');
+ $storage1->rename('folder', 'foo');
+ $scanner = $storage1->getScanner();
+ $scanner->scan('');
+
+ $view = new \OC\Files\View('/foo');
+
+ $result = $view->search('.txt');
+ $this->assertCount(1, $result);
+ }
+
/**
* @param bool $scan
+ * @param string $class
* @return \OC\Files\Storage\Storage
*/
private function getTestStorage($scan = true, $class = '\OC\Files\Storage\Temporary') {
diff --git a/tests/lib/preferences.php b/tests/lib/preferences.php
index 612cc81926b..68b794e9ea9 100644
--- a/tests/lib/preferences.php
+++ b/tests/lib/preferences.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it>
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
@@ -124,3 +125,181 @@ class Test_Preferences extends PHPUnit_Framework_TestCase {
$this->assertEquals(0, $result->numRows());
}
}
+
+class Test_Preferences_Object extends PHPUnit_Framework_TestCase {
+ public function testGetUsers()
+ {
+ $statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
+ $statementMock->expects($this->exactly(2))
+ ->method('fetchColumn')
+ ->will($this->onConsecutiveCalls('foo', false));
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->once())
+ ->method('executeQuery')
+ ->with($this->equalTo('SELECT DISTINCT `userid` FROM `*PREFIX*preferences`'))
+ ->will($this->returnValue($statementMock));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $apps = $preferences->getUsers();
+ $this->assertEquals(array('foo'), $apps);
+ }
+
+ public function testGetApps()
+ {
+ $statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
+ $statementMock->expects($this->exactly(2))
+ ->method('fetchColumn')
+ ->will($this->onConsecutiveCalls('foo', false));
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->once())
+ ->method('executeQuery')
+ ->with($this->equalTo('SELECT DISTINCT `appid` FROM `*PREFIX*preferences` WHERE `userid` = ?'),
+ $this->equalTo(array('bar')))
+ ->will($this->returnValue($statementMock));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $apps = $preferences->getApps('bar');
+ $this->assertEquals(array('foo'), $apps);
+ }
+
+ public function testGetKeys()
+ {
+ $statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
+ $statementMock->expects($this->exactly(2))
+ ->method('fetchColumn')
+ ->will($this->onConsecutiveCalls('foo', false));
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->once())
+ ->method('executeQuery')
+ ->with($this->equalTo('SELECT `configkey` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ?'),
+ $this->equalTo(array('bar', 'moo')))
+ ->will($this->returnValue($statementMock));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $keys = $preferences->getKeys('bar', 'moo');
+ $this->assertEquals(array('foo'), $keys);
+ }
+
+ public function testGetValue()
+ {
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->exactly(2))
+ ->method('fetchAssoc')
+ ->with($this->equalTo('SELECT `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?'),
+ $this->equalTo(array('grg', 'bar', 'red')))
+ ->will($this->onConsecutiveCalls(array('configvalue'=>'foo'), null));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $value = $preferences->getValue('grg', 'bar', 'red');
+ $this->assertEquals('foo', $value);
+ $value = $preferences->getValue('grg', 'bar', 'red', 'def');
+ $this->assertEquals('def', $value);
+ }
+
+ public function testSetValue()
+ {
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->exactly(2))
+ ->method('fetchColumn')
+ ->with($this->equalTo('SELECT COUNT(*) FROM `*PREFIX*preferences`'
+ .' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?'),
+ $this->equalTo(array('grg', 'bar', 'foo')))
+ ->will($this->onConsecutiveCalls(0, 1));
+ $connectionMock->expects($this->once())
+ ->method('insert')
+ ->with($this->equalTo('*PREFIX*preferences'),
+ $this->equalTo(
+ array(
+ 'userid' => 'grg',
+ 'appid' => 'bar',
+ 'configkey' => 'foo',
+ 'configvalue' => 'v1',
+ )
+ ));
+ $connectionMock->expects($this->once())
+ ->method('update')
+ ->with($this->equalTo('*PREFIX*preferences'),
+ $this->equalTo(
+ array(
+ 'configvalue' => 'v2',
+ )),
+ $this->equalTo(
+ array(
+ 'userid' => 'grg',
+ 'appid' => 'bar',
+ 'configkey' => 'foo',
+ )
+ ));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $preferences->setValue('grg', 'bar', 'foo', 'v1');
+ $preferences->setValue('grg', 'bar', 'foo', 'v2');
+ }
+
+ public function testDeleteKey()
+ {
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->once())
+ ->method('delete')
+ ->with($this->equalTo('*PREFIX*preferences'),
+ $this->equalTo(
+ array(
+ 'userid' => 'grg',
+ 'appid' => 'bar',
+ 'configkey' => 'foo',
+ )
+ ));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $preferences->deleteKey('grg', 'bar', 'foo');
+ }
+
+ public function testDeleteApp()
+ {
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->once())
+ ->method('delete')
+ ->with($this->equalTo('*PREFIX*preferences'),
+ $this->equalTo(
+ array(
+ 'userid' => 'grg',
+ 'appid' => 'bar',
+ )
+ ));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $preferences->deleteApp('grg', 'bar');
+ }
+
+ public function testDeleteUser()
+ {
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->once())
+ ->method('delete')
+ ->with($this->equalTo('*PREFIX*preferences'),
+ $this->equalTo(
+ array(
+ 'userid' => 'grg',
+ )
+ ));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $preferences->deleteUser('grg');
+ }
+
+ public function testDeleteAppFromAllUsers()
+ {
+ $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
+ $connectionMock->expects($this->once())
+ ->method('delete')
+ ->with($this->equalTo('*PREFIX*preferences'),
+ $this->equalTo(
+ array(
+ 'appid' => 'bar',
+ )
+ ));
+
+ $preferences = new OC\Preferences($connectionMock);
+ $preferences->deleteAppFromAllUsers('bar');
+ }
+}
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index e02b0e4354d..8e9eef65d32 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -535,4 +535,52 @@ class Test_Share extends PHPUnit_Framework_TestCase {
'Failed asserting that user 3 still has access to test.txt after expiration date has been set.'
);
}
+
+ protected function getShareByValidToken($token) {
+ $row = OCP\Share::getShareByToken($token);
+ $this->assertInternalType(
+ 'array',
+ $row,
+ "Failed asserting that a share for token $token exists."
+ );
+ return $row;
+ }
+
+ public function testShareItemWithLink() {
+ OC_User::setUserId($this->user1);
+ $token = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, OCP\PERMISSION_READ);
+ $this->assertInternalType(
+ 'string',
+ $token,
+ 'Failed asserting that user 1 successfully shared text.txt as link with token.'
+ );
+
+ // testGetShareByTokenNoExpiration
+ $row = $this->getShareByValidToken($token);
+ $this->assertEmpty(
+ $row['expiration'],
+ 'Failed asserting that the returned row does not have an expiration date.'
+ );
+
+ // testGetShareByTokenExpirationValid
+ $this->assertTrue(
+ OCP\Share::setExpirationDate('test', 'test.txt', $this->dateInFuture),
+ 'Failed asserting that user 1 successfully set a future expiration date for the test.txt share.'
+ );
+ $row = $this->getShareByValidToken($token);
+ $this->assertNotEmpty(
+ $row['expiration'],
+ 'Failed asserting that the returned row has an expiration date.'
+ );
+
+ // testGetShareByTokenExpirationExpired
+ $this->assertTrue(
+ OCP\Share::setExpirationDate('test', 'test.txt', $this->dateInPast),
+ 'Failed asserting that user 1 successfully set a past expiration date for the test.txt share.'
+ );
+ $this->assertFalse(
+ OCP\Share::getShareByToken($token),
+ 'Failed asserting that an expired share could not be found.'
+ );
+ }
}