diff options
author | Robin Appelman <icewind@owncloud.com> | 2013-06-02 20:12:44 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2013-06-02 20:12:44 +0200 |
commit | 251527c6e65a5f88b56c2dbcfebb7d8dbe38d8fb (patch) | |
tree | edcdac4b814573dad6fb8d47ce4af6f93bd7836d /tests | |
parent | b7585050b565ac8f42c3afa625037adaf1a8d92c (diff) | |
parent | cf71a54f5d6e08020a1a574d43f7fca6642776c9 (diff) | |
download | nextcloud-server-251527c6e65a5f88b56c2dbcfebb7d8dbe38d8fb.tar.gz nextcloud-server-251527c6e65a5f88b56c2dbcfebb7d8dbe38d8fb.zip |
merge master into backgroundjob
Diffstat (limited to 'tests')
-rw-r--r-- | tests/enable_all.php | 1 | ||||
-rw-r--r-- | tests/lib/autoloader.php | 65 | ||||
-rw-r--r-- | tests/lib/cache/file.php | 11 | ||||
-rw-r--r-- | tests/lib/files/cache/cache.php | 136 | ||||
-rw-r--r-- | tests/lib/files/cache/permissions.php | 6 | ||||
-rw-r--r-- | tests/lib/files/cache/updater.php | 9 | ||||
-rw-r--r-- | tests/lib/files/cache/watcher.php | 10 | ||||
-rw-r--r-- | tests/lib/files/filesystem.php | 2 | ||||
-rw-r--r-- | tests/lib/files/mount.php | 58 | ||||
-rw-r--r-- | tests/lib/files/mount/manager.php | 67 | ||||
-rw-r--r-- | tests/lib/files/view.php | 73 | ||||
-rw-r--r-- | tests/lib/hooks/basicemitter.php | 261 | ||||
-rw-r--r-- | tests/lib/hooks/legacyemitter.php | 55 | ||||
-rw-r--r-- | tests/lib/public/contacts.php | 2 | ||||
-rw-r--r-- | tests/lib/session/memory.php | 16 | ||||
-rw-r--r-- | tests/lib/session/session.php | 64 | ||||
-rw-r--r-- | tests/lib/streamwrappers.php | 4 | ||||
-rw-r--r-- | tests/lib/template.php | 7 | ||||
-rw-r--r-- | tests/lib/user/backend.php | 99 | ||||
-rw-r--r-- | tests/lib/user/database.php | 44 | ||||
-rw-r--r-- | tests/lib/user/dummy.php | 27 | ||||
-rw-r--r-- | tests/lib/vcategories.php | 11 | ||||
-rw-r--r-- | tests/lib/vobject.php | 19 |
23 files changed, 783 insertions, 264 deletions
diff --git a/tests/enable_all.php b/tests/enable_all.php index 44af0115650..111ed0e1357 100644 --- a/tests/enable_all.php +++ b/tests/enable_all.php @@ -8,6 +8,7 @@ require_once __DIR__.'/../lib/base.php'; +OC_App::enable('files_encryption'); OC_App::enable('calendar'); OC_App::enable('contacts'); OC_App::enable('apptemplateadvanced'); diff --git a/tests/lib/autoloader.php b/tests/lib/autoloader.php index e769bf3bcf6..0e7d606ccf6 100644 --- a/tests/lib/autoloader.php +++ b/tests/lib/autoloader.php @@ -6,14 +6,69 @@ * See the COPYING-README file. */ -class Test_AutoLoader extends PHPUnit_Framework_TestCase { +namespace Test; - public function testLeadingSlashOnClassName(){ - $this->assertTrue(class_exists('\OC\Files\Storage\Local')); +class AutoLoader extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Autoloader $loader + */ + private $loader; + + public function setUp() { + $this->loader = new \OC\AutoLoader(); + } + + public function testLeadingSlashOnClassName() { + $this->assertEquals(array('files/storage/local.php'), $this->loader->findClass('\OC\Files\Storage\Local')); + } + + public function testNoLeadingSlashOnClassName() { + $this->assertEquals(array('files/storage/local.php'), $this->loader->findClass('OC\Files\Storage\Local')); + } + + public function testLegacyPath() { + $this->assertEquals(array('legacy/files.php', 'files.php'), $this->loader->findClass('OC_Files')); + } + + public function testClassPath() { + $this->loader->registerClass('Foo\Bar', 'foobar.php'); + $this->assertEquals(array('foobar.php'), $this->loader->findClass('Foo\Bar')); + } + + public function testPrefixNamespace() { + $this->loader->registerPrefix('Foo', 'foo'); + $this->assertEquals(array('foo/Foo/Bar.php'), $this->loader->findClass('Foo\Bar')); } - public function testNoLeadingSlashOnClassName(){ - $this->assertTrue(class_exists('OC\Files\Storage\Local')); + public function testPrefix() { + $this->loader->registerPrefix('Foo_', 'foo'); + $this->assertEquals(array('foo/Foo/Bar.php'), $this->loader->findClass('Foo_Bar')); } + public function testLoadTestNamespace() { + $this->assertEquals(array('tests/lib/foo/bar.php'), $this->loader->findClass('Test\Foo\Bar')); + } + + public function testLoadTest() { + $this->assertEquals(array('tests/lib/foo/bar.php'), $this->loader->findClass('Test_Foo_Bar')); + } + + public function testLoadCoreNamespace() { + $this->assertEquals(array('foo/bar.php'), $this->loader->findClass('OC\Foo\Bar')); + } + + public function testLoadCore() { + $this->assertEquals(array('legacy/foo/bar.php', 'foo/bar.php'), $this->loader->findClass('OC_Foo_Bar')); + } + + public function testLoadPublicNamespace() { + $this->assertEquals(array('public/foo/bar.php'), $this->loader->findClass('OCP\Foo\Bar')); + } + + public function testLoadAppNamespace() { + $result = $this->loader->findClass('OCA\Files\Foobar'); + $this->assertEquals(2, count($result)); + $this->assertStringEndsWith('apps/files/foobar.php', $result[0]); + $this->assertStringEndsWith('apps/files/lib/foobar.php', $result[1]); + } } diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php index 5dcd3268804..7da5a8b85c6 100644 --- a/tests/lib/cache/file.php +++ b/tests/lib/cache/file.php @@ -31,12 +31,13 @@ class Test_Cache_File extends Test_Cache { //clear all proxies and hooks so we can do clean testing OC_FileProxy::clearProxies(); OC_Hook::clear('OC_Filesystem'); - + + //disabled atm //enable only the encryption hook if needed - if(OC_App::isEnabled('files_encryption')) { - OC_FileProxy::register(new OC_FileProxy_Encryption()); - } - + //if(OC_App::isEnabled('files_encryption')) { + // OC_FileProxy::register(new OC_FileProxy_Encryption()); + //} + //set up temporary storage \OC\Files\Filesystem::clearMounts(); \OC\Files\Filesystem::mount('\OC\Files\Storage\Temporary',array(),'/'); diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index 250842805e5..f272655925b 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -8,6 +8,8 @@ namespace Test\Files\Cache; +use PHPUnit_Framework_MockObject_MockObject; + class LongId extends \OC\Files\Storage\Temporary { public function getId() { return 'long:' . str_repeat('foo', 50) . parent::getId(); @@ -19,11 +21,19 @@ class Cache extends \PHPUnit_Framework_TestCase { * @var \OC\Files\Storage\Temporary $storage; */ private $storage; + /** + * @var \OC\Files\Storage\Temporary $storage2; + */ + private $storage2; /** * @var \OC\Files\Cache\Cache $cache */ private $cache; + /** + * @var \OC\Files\Cache\Cache $cache2 + */ + private $cache2; public function testSimple() { $file1 = 'foo'; @@ -162,13 +172,21 @@ class Cache extends \PHPUnit_Framework_TestCase { $file4 = 'folder/foo/1'; $file5 = 'folder/foo/2'; $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'foo/bar'); + $folderData = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); - $this->cache->put($file1, $data); - $this->cache->put($file2, $data); - $this->cache->put($file3, $data); + $this->cache->put($file1, $folderData); + $this->cache->put($file2, $folderData); + $this->cache->put($file3, $folderData); $this->cache->put($file4, $data); $this->cache->put($file5, $data); + /* simulate a second user with a different storage id but the same folder structure */ + $this->cache2->put($file1, $folderData); + $this->cache2->put($file2, $folderData); + $this->cache2->put($file3, $folderData); + $this->cache2->put($file4, $data); + $this->cache2->put($file5, $data); + $this->cache->move('folder/foo', 'folder/foobar'); $this->assertFalse($this->cache->inCache('folder/foo')); @@ -179,6 +197,16 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->assertTrue($this->cache->inCache('folder/foobar')); $this->assertTrue($this->cache->inCache('folder/foobar/1')); $this->assertTrue($this->cache->inCache('folder/foobar/2')); + + /* the folder structure of the second user must not change! */ + $this->assertTrue($this->cache2->inCache('folder/bar')); + $this->assertTrue($this->cache2->inCache('folder/foo')); + $this->assertTrue($this->cache2->inCache('folder/foo/1')); + $this->assertTrue($this->cache2->inCache('folder/foo/2')); + + $this->assertFalse($this->cache2->inCache('folder/foobar')); + $this->assertFalse($this->cache2->inCache('folder/foobar/1')); + $this->assertFalse($this->cache2->inCache('folder/foobar/2')); } function testGetIncomplete() { @@ -210,6 +238,23 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->assertEquals(array($storageId, 'foo'), \OC\Files\Cache\Cache::getById($id)); } + function testStorageMTime() { + $data = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file'); + $this->cache->put('foo', $data); + $cachedData = $this->cache->get('foo'); + $this->assertEquals($data['mtime'], $cachedData['storage_mtime']);//if no storage_mtime is saved, mtime should be used + + $this->cache->put('foo', array('storage_mtime' => 30));//when setting storage_mtime, mtime is also set + $cachedData = $this->cache->get('foo'); + $this->assertEquals(30, $cachedData['storage_mtime']); + $this->assertEquals(30, $cachedData['mtime']); + + $this->cache->put('foo', array('mtime' => 25));//setting mtime does not change storage_mtime + $cachedData = $this->cache->get('foo'); + $this->assertEquals(30, $cachedData['storage_mtime']); + $this->assertEquals(25, $cachedData['mtime']); + } + function testLongId() { $storage = new LongId(array()); $cache = $storage->getCache(); @@ -219,12 +264,97 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->assertEquals(array(md5($storageId), 'foo'), \OC\Files\Cache\Cache::getById($id)); } + /** + * @brief this test show the bug resulting if we have no normalizer installed + */ + public function testWithoutNormalizer() { + // folder name "Schön" with U+00F6 (normalized) + $folderWith00F6 = "\x53\x63\x68\xc3\xb6\x6e"; + + // folder name "Schön" with U+0308 (un-normalized) + $folderWith0308 = "\x53\x63\x68\x6f\xcc\x88\x6e"; + + /** + * @var \OC\Files\Cache\Cache | PHPUnit_Framework_MockObject_MockObject $cacheMock + */ + $cacheMock = $this->getMock('\OC\Files\Cache\Cache', array('normalize'), array($this->storage), '', true); + + $cacheMock->expects($this->any()) + ->method('normalize') + ->will($this->returnArgument(0)); + + $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + + // put root folder + $this->assertFalse($cacheMock->get('folder')); + $this->assertGreaterThan(0, $cacheMock->put('folder', $data)); + + // put un-normalized folder + $this->assertFalse($cacheMock->get('folder/' .$folderWith0308)); + $this->assertGreaterThan(0, $cacheMock->put('folder/' .$folderWith0308, $data)); + + // get un-normalized folder by name + $unNormalizedFolderName = $cacheMock->get('folder/' .$folderWith0308); + + // check if database layer normalized the folder name (this should not happen) + $this->assertEquals($folderWith0308, $unNormalizedFolderName['name']); + + // put normalized folder + $this->assertFalse($cacheMock->get('folder/' . $folderWith00F6)); + $this->assertGreaterThan(0, $cacheMock->put('folder/' .$folderWith00F6, $data)); + + // this is our bug, we have two different hashes with the same name (Schön) + $this->assertEquals(2, count($cacheMock->getFolderContents('folder'))); + } + + /** + * @brief this test shows that there is no bug if we use the normalizer + */ + public function testWithNormalizer() { + + if(!class_exists('Patchwork\PHP\Shim\Normalizer')) { + $this->markTestSkipped('The 3rdparty Normalizer extension is not available.'); + return; + } + + // folder name "Schön" with U+00F6 (normalized) + $folderWith00F6 = "\x53\x63\x68\xc3\xb6\x6e"; + + // folder name "Schön" with U+0308 (un-normalized) + $folderWith0308 = "\x53\x63\x68\x6f\xcc\x88\x6e"; + + $data = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory'); + + // put root folder + $this->assertFalse($this->cache->get('folder')); + $this->assertGreaterThan(0, $this->cache->put('folder', $data)); + + // put un-normalized folder + $this->assertFalse($this->cache->get('folder/' .$folderWith0308)); + $this->assertGreaterThan(0, $this->cache->put('folder/' .$folderWith0308, $data)); + + // get un-normalized folder by name + $unNormalizedFolderName = $this->cache->get('folder/' .$folderWith0308); + + // check if folder name was normalized + $this->assertEquals($folderWith00F6, $unNormalizedFolderName['name']); + + // put normalized folder + $this->assertTrue(is_array($this->cache->get('folder/' . $folderWith00F6))); + $this->assertGreaterThan(0, $this->cache->put('folder/' .$folderWith00F6, $data)); + + // at this point we should have only one folder named "Schön" + $this->assertEquals(1, count($this->cache->getFolderContents('folder'))); + } + public function tearDown() { $this->cache->clear(); } public function setUp() { $this->storage = new \OC\Files\Storage\Temporary(array()); + $this->storage2 = new \OC\Files\Storage\Temporary(array()); $this->cache = new \OC\Files\Cache\Cache($this->storage); + $this->cache2 = new \OC\Files\Cache\Cache($this->storage2); } } diff --git a/tests/lib/files/cache/permissions.php b/tests/lib/files/cache/permissions.php index 56dbbc4518e..7e6e11e2eb2 100644 --- a/tests/lib/files/cache/permissions.php +++ b/tests/lib/files/cache/permissions.php @@ -14,8 +14,8 @@ class Permissions extends \PHPUnit_Framework_TestCase { */ private $permissionsCache; - function setUp(){ - $this->permissionsCache=new \OC\Files\Cache\Permissions('dummy'); + function setUp() { + $this->permissionsCache = new \OC\Files\Cache\Permissions('dummy'); } function testSimple() { @@ -23,8 +23,10 @@ class Permissions extends \PHPUnit_Framework_TestCase { $user = uniqid(); $this->assertEquals(-1, $this->permissionsCache->get(1, $user)); + $this->assertNotContains($user, $this->permissionsCache->getUsers(1)); $this->permissionsCache->set(1, $user, 1); $this->assertEquals(1, $this->permissionsCache->get(1, $user)); + $this->assertContains($user, $this->permissionsCache->getUsers(1)); $this->assertEquals(-1, $this->permissionsCache->get(2, $user)); $this->assertEquals(-1, $this->permissionsCache->get(1, $user . '2')); diff --git a/tests/lib/files/cache/updater.php b/tests/lib/files/cache/updater.php index aaf932c97fe..dad3cd7e650 100644 --- a/tests/lib/files/cache/updater.php +++ b/tests/lib/files/cache/updater.php @@ -42,14 +42,11 @@ class Updater extends \PHPUnit_Framework_TestCase { $this->scanner->scan(''); $this->cache = $this->storage->getCache(); + \OC\Files\Filesystem::tearDown(); if (!self::$user) { - if (!\OC\Files\Filesystem::getView()) { - self::$user = uniqid(); - \OC\Files\Filesystem::init(self::$user, '/' . self::$user . '/files'); - } else { - self::$user = \OC_User::getUser(); - } + self::$user = uniqid(); } + \OC\Files\Filesystem::init(self::$user, '/' . self::$user . '/files'); Filesystem::clearMounts(); Filesystem::mount($this->storage, array(), '/' . self::$user . '/files'); diff --git a/tests/lib/files/cache/watcher.php b/tests/lib/files/cache/watcher.php index 8ef6ab44d10..e43c86ed438 100644 --- a/tests/lib/files/cache/watcher.php +++ b/tests/lib/files/cache/watcher.php @@ -35,7 +35,7 @@ class Watcher extends \PHPUnit_Framework_TestCase { $updater = $storage->getWatcher(); //set the mtime to the past so it can detect an mtime change - $cache->put('', array('mtime' => 10)); + $cache->put('', array('storage_mtime' => 10)); $this->assertTrue($cache->inCache('folder/bar.txt')); $this->assertTrue($cache->inCache('folder/bar2.txt')); @@ -47,14 +47,14 @@ class Watcher extends \PHPUnit_Framework_TestCase { $cachedData = $cache->get('bar.test'); $this->assertEquals(3, $cachedData['size']); - $cache->put('bar.test', array('mtime' => 10)); + $cache->put('bar.test', array('storage_mtime' => 10)); $storage->file_put_contents('bar.test', 'test data'); $updater->checkUpdate('bar.test'); $cachedData = $cache->get('bar.test'); $this->assertEquals(9, $cachedData['size']); - $cache->put('folder', array('mtime' => 10)); + $cache->put('folder', array('storage_mtime' => 10)); $storage->unlink('folder/bar2.txt'); $updater->checkUpdate('folder'); @@ -69,7 +69,7 @@ class Watcher extends \PHPUnit_Framework_TestCase { $updater = $storage->getWatcher(); //set the mtime to the past so it can detect an mtime change - $cache->put('', array('mtime' => 10)); + $cache->put('', array('storage_mtime' => 10)); $storage->unlink('foo.txt'); $storage->rename('folder', 'foo.txt'); @@ -85,7 +85,7 @@ class Watcher extends \PHPUnit_Framework_TestCase { $updater = $storage->getWatcher(); //set the mtime to the past so it can detect an mtime change - $cache->put('foo.txt', array('mtime' => 10)); + $cache->put('foo.txt', array('storage_mtime' => 10)); $storage->unlink('foo.txt'); $storage->rename('folder', 'foo.txt'); diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index 6ce45e6178a..bef70cc725b 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -72,7 +72,7 @@ class Filesystem extends \PHPUnit_Framework_TestCase { $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('\path')); $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo//bar/')); $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo////bar')); - if (class_exists('Normalizer')) { + if (class_exists('Patchwork\PHP\Shim\Normalizer')) { $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("/foo/baru\xCC\x88")); } } diff --git a/tests/lib/files/mount.php b/tests/lib/files/mount.php deleted file mode 100644 index a3dc06cc668..00000000000 --- a/tests/lib/files/mount.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Test\Files; - -use \OC\Files\Storage\Temporary; - -class LongId extends Temporary { - public function getId() { - return 'long:' . str_repeat('foo', 50) . parent::getId(); - } -} - -class Mount extends \PHPUnit_Framework_TestCase { - public function setup() { - \OC_Util::setupFS(); - \OC\Files\Mount::clear(); - } - - public function testFind() { - $this->assertNull(\OC\Files\Mount::find('/')); - - $rootMount = new \OC\Files\Mount(new Temporary(array()), '/'); - $this->assertEquals($rootMount, \OC\Files\Mount::find('/')); - $this->assertEquals($rootMount, \OC\Files\Mount::find('/foo/bar')); - - $storage = new Temporary(array()); - $mount = new \OC\Files\Mount($storage, '/foo'); - $this->assertEquals($rootMount, \OC\Files\Mount::find('/')); - $this->assertEquals($mount, \OC\Files\Mount::find('/foo/bar')); - - $this->assertEquals(1, count(\OC\Files\Mount::findIn('/'))); - new \OC\Files\Mount(new Temporary(array()), '/bar'); - $this->assertEquals(2, count(\OC\Files\Mount::findIn('/'))); - - $id = $mount->getStorageId(); - $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId($id)); - - $mount2 = new \OC\Files\Mount($storage, '/foo/bar'); - $this->assertEquals(array($mount, $mount2), \OC\Files\Mount::findByStorageId($id)); - } - - public function testLong() { - $storage = new LongId(array()); - $mount = new \OC\Files\Mount($storage, '/foo'); - - $id = $mount->getStorageId(); - $storageId = $storage->getId(); - $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId($id)); - $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId($storageId)); - $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId(md5($storageId))); - } -} diff --git a/tests/lib/files/mount/manager.php b/tests/lib/files/mount/manager.php new file mode 100644 index 00000000000..154c35ccead --- /dev/null +++ b/tests/lib/files/mount/manager.php @@ -0,0 +1,67 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Mount; + +use \OC\Files\Storage\Temporary; + +class LongId extends Temporary { + public function getId() { + return 'long:' . str_repeat('foo', 50) . parent::getId(); + } +} + +class Manager extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Files\Mount\Manager + */ + private $manager; + + public function setup() { + $this->manager = new \OC\Files\Mount\Manager(); + } + + public function testFind() { + $this->assertNull($this->manager->find('/')); + + $rootMount = new \OC\Files\Mount\Mount(new Temporary(array()), '/'); + $this->manager->addMount($rootMount); + $this->assertEquals($rootMount, $this->manager->find('/')); + $this->assertEquals($rootMount, $this->manager->find('/foo/bar')); + + $storage = new Temporary(array()); + $mount1 = new \OC\Files\Mount\Mount($storage, '/foo'); + $this->manager->addMount($mount1); + $this->assertEquals($rootMount, $this->manager->find('/')); + $this->assertEquals($mount1, $this->manager->find('/foo/bar')); + + $this->assertEquals(1, count($this->manager->findIn('/'))); + $mount2 = new \OC\Files\Mount\Mount(new Temporary(array()), '/bar'); + $this->manager->addMount($mount2); + $this->assertEquals(2, count($this->manager->findIn('/'))); + + $id = $mount1->getStorageId(); + $this->assertEquals(array($mount1), $this->manager->findByStorageId($id)); + + $mount3 = new \OC\Files\Mount\Mount($storage, '/foo/bar'); + $this->manager->addMount($mount3); + $this->assertEquals(array($mount1, $mount3), $this->manager->findByStorageId($id)); + } + + public function testLong() { + $storage = new LongId(array()); + $mount = new \OC\Files\Mount\Mount($storage, '/foo'); + $this->manager->addMount($mount); + + $id = $mount->getStorageId(); + $storageId = $storage->getId(); + $this->assertEquals(array($mount), $this->manager->findByStorageId($id)); + $this->assertEquals(array($mount), $this->manager->findByStorageId($storageId)); + $this->assertEquals(array($mount), $this->manager->findByStorageId(md5($storageId))); + } +} diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index a064e44f3ef..01f9a9cca11 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -7,6 +7,12 @@ namespace Test\Files; +class TemporaryNoTouch extends \OC\Files\Storage\Temporary { + public function touch($path, $mtime = null) { + return false; + } +} + class View extends \PHPUnit_Framework_TestCase { /** * @var \OC\Files\Storage\Storage[] $storages; @@ -220,7 +226,7 @@ class View extends \PHPUnit_Framework_TestCase { $cachedData = $rootView->getFileInfo('foo.txt'); $this->assertEquals(16, $cachedData['size']); - $rootView->putFileInfo('foo.txt', array('mtime' => 10)); + $rootView->putFileInfo('foo.txt', array('storage_mtime' => 10)); $storage1->file_put_contents('foo.txt', 'foo'); clearstatcache(); @@ -228,12 +234,73 @@ class View extends \PHPUnit_Framework_TestCase { $this->assertEquals(3, $cachedData['size']); } + function testCopyBetweenStorages() { + $storage1 = $this->getTestStorage(); + $storage2 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + + $rootView = new \OC\Files\View(''); + $rootView->mkdir('substorage/emptyfolder'); + $rootView->copy('substorage', 'anotherfolder'); + $this->assertTrue($rootView->is_dir('/anotherfolder')); + $this->assertTrue($rootView->is_dir('/substorage')); + $this->assertTrue($rootView->is_dir('/anotherfolder/emptyfolder')); + $this->assertTrue($rootView->is_dir('/substorage/emptyfolder')); + $this->assertTrue($rootView->file_exists('/anotherfolder/foo.txt')); + $this->assertTrue($rootView->file_exists('/anotherfolder/foo.png')); + $this->assertTrue($rootView->file_exists('/anotherfolder/folder/bar.txt')); + $this->assertTrue($rootView->file_exists('/substorage/foo.txt')); + $this->assertTrue($rootView->file_exists('/substorage/foo.png')); + $this->assertTrue($rootView->file_exists('/substorage/folder/bar.txt')); + } + + function testMoveBetweenStorages() { + $storage1 = $this->getTestStorage(); + $storage2 = $this->getTestStorage(); + \OC\Files\Filesystem::mount($storage1, array(), '/'); + \OC\Files\Filesystem::mount($storage2, array(), '/substorage'); + + $rootView = new \OC\Files\View(''); + $rootView->rename('foo.txt', 'substorage/folder/foo.txt'); + $this->assertFalse($rootView->file_exists('foo.txt')); + $this->assertTrue($rootView->file_exists('substorage/folder/foo.txt')); + $rootView->rename('substorage/folder', 'anotherfolder'); + $this->assertFalse($rootView->is_dir('substorage/folder')); + $this->assertTrue($rootView->file_exists('anotherfolder/foo.txt')); + $this->assertTrue($rootView->file_exists('anotherfolder/bar.txt')); + } + + function testTouch() { + $storage = $this->getTestStorage(true, '\Test\Files\TemporaryNoTouch'); + + \OC\Files\Filesystem::mount($storage, array(), '/'); + + $rootView = new \OC\Files\View(''); + $oldCachedData = $rootView->getFileInfo('foo.txt'); + + $rootView->touch('foo.txt', 500); + + $cachedData = $rootView->getFileInfo('foo.txt'); + $this->assertEquals(500, $cachedData['mtime']); + $this->assertEquals($oldCachedData['storage_mtime'], $cachedData['storage_mtime']); + + $rootView->putFileInfo('foo.txt', array('storage_mtime' => 1000)); //make sure the watcher detects the change + $rootView->file_put_contents('foo.txt', 'asd'); + $cachedData = $rootView->getFileInfo('foo.txt'); + $this->assertGreaterThanOrEqual($cachedData['mtime'], $oldCachedData['mtime']); + $this->assertEquals($cachedData['storage_mtime'], $cachedData['mtime']); + } + /** * @param bool $scan * @return \OC\Files\Storage\Storage */ - private function getTestStorage($scan = true) { - $storage = new \OC\Files\Storage\Temporary(array()); + private function getTestStorage($scan = true, $class = '\OC\Files\Storage\Temporary') { + /** + * @var \OC\Files\Storage\Storage $storage + */ + $storage = new $class(array()); $textData = "dummy file data\n"; $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo.png'); $storage->mkdir('folder'); diff --git a/tests/lib/hooks/basicemitter.php b/tests/lib/hooks/basicemitter.php new file mode 100644 index 00000000000..f48dc53c563 --- /dev/null +++ b/tests/lib/hooks/basicemitter.php @@ -0,0 +1,261 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Hooks; + +/** + * Class DummyEmitter + * + * class to make BasicEmitter::emit publicly available + * + * @package Test\Hooks + */ +class DummyEmitter extends \OC\Hooks\BasicEmitter { + public function emitEvent($scope, $method, $arguments = array()) { + $this->emit($scope, $method, $arguments); + } +} + +/** + * Class EmittedException + * + * a dummy exception so we can check if an event is emitted + * + * @package Test\Hooks + */ +class EmittedException extends \Exception { +} + +class BasicEmitter extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Hooks\Emitter $emitter + */ + protected $emitter; + + public function setUp() { + $this->emitter = new DummyEmitter(); + } + + public function nonStaticCallBack() { + throw new EmittedException; + } + + public static function staticCallBack() { + throw new EmittedException; + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testAnonymousFunction() { + $this->emitter->listen('Test', 'test', function () { + throw new EmittedException; + }); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testStaticCallback() { + $this->emitter->listen('Test', 'test', array('\Test\Hooks\BasicEmitter', 'staticCallBack')); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testNonStaticCallback() { + $this->emitter->listen('Test', 'test', array($this, 'nonStaticCallBack')); + $this->emitter->emitEvent('Test', 'test'); + } + + public function testOnlyCallOnce() { + $count = 0; + $listener = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->assertEquals(1, $count, 'Listener called an invalid number of times (' . $count . ') expected 1'); + } + + public function testDifferentMethods() { + $count = 0; + $listener = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Test', 'foo'); + $this->assertEquals(2, $count, 'Listener called an invalid number of times (' . $count . ') expected 2'); + } + + public function testDifferentScopes() { + $count = 0; + $listener = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Bar', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Bar', 'test'); + $this->assertEquals(2, $count, 'Listener called an invalid number of times (' . $count . ') expected 2'); + } + + public function testDifferentCallbacks() { + $count = 0; + $listener1 = function () use (&$count) { + $count++; + }; + $listener2 = function () use (&$count) { + $count++; + }; + $this->emitter->listen('Test', 'test', $listener1); + $this->emitter->listen('Test', 'test', $listener2); + $this->emitter->emitEvent('Test', 'test'); + $this->assertEquals(2, $count, 'Listener called an invalid number of times (' . $count . ') expected 2'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testArguments() { + $this->emitter->listen('Test', 'test', function ($foo, $bar) { + if ($foo == 'foo' and $bar == 'bar') { + throw new EmittedException; + } + }); + $this->emitter->emitEvent('Test', 'test', array('foo', 'bar')); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testNamedArguments() { + $this->emitter->listen('Test', 'test', function ($foo, $bar) { + if ($foo == 'foo' and $bar == 'bar') { + throw new EmittedException; + } + }); + $this->emitter->emitEvent('Test', 'test', array('foo' => 'foo', 'bar' => 'bar')); + } + + public function testRemoveAllSpecified() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->removeListener('Test', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + } + + public function testRemoveWildcardListener() { + $listener1 = function () { + throw new EmittedException; + }; + $listener2 = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener1); + $this->emitter->listen('Test', 'test', $listener2); + $this->emitter->removeListener('Test', 'test'); + $this->emitter->emitEvent('Test', 'test'); + } + + public function testRemoveWildcardMethod() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->removeListener('Test', null, $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Test', 'foo'); + } + + public function testRemoveWildcardScope() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Bar', 'test', $listener); + $this->emitter->removeListener(null, 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Bar', 'test'); + } + + public function testRemoveWildcardScopeAndMethod() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->listen('Bar', 'foo', $listener); + $this->emitter->removeListener(null, null, $listener); + $this->emitter->emitEvent('Test', 'test'); + $this->emitter->emitEvent('Test', 'foo'); + $this->emitter->emitEvent('Bar', 'foo'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveKeepOtherCallback() { + $listener1 = function () { + throw new EmittedException; + }; + $listener2 = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener1); + $this->emitter->listen('Test', 'test', $listener2); + $this->emitter->removeListener('Test', 'test', $listener1); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveKeepOtherMethod() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Test', 'foo', $listener); + $this->emitter->removeListener('Test', 'foo', $listener); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveKeepOtherScope() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->listen('Bar', 'test', $listener); + $this->emitter->removeListener('Bar', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + } + + /** + * @expectedException \Test\Hooks\EmittedException + */ + public function testRemoveNonExistingName() { + $listener = function () { + throw new EmittedException; + }; + $this->emitter->listen('Test', 'test', $listener); + $this->emitter->removeListener('Bar', 'test', $listener); + $this->emitter->emitEvent('Test', 'test'); + } +} diff --git a/tests/lib/hooks/legacyemitter.php b/tests/lib/hooks/legacyemitter.php new file mode 100644 index 00000000000..a7bed879a72 --- /dev/null +++ b/tests/lib/hooks/legacyemitter.php @@ -0,0 +1,55 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Hooks; + +/** + * Class DummyLegacyEmitter + * + * class to make LegacyEmitter::emit publicly available + * + * @package Test\Hooks + */ +class DummyLegacyEmitter extends \OC\Hooks\LegacyEmitter { + public function emitEvent($scope, $method, $arguments = array()) { + $this->emit($scope, $method, $arguments); + } +} + +class LegacyEmitter extends BasicEmitter { + + //we can't use exceptions here since OC_Hooks catches all exceptions + private static $emitted = false; + + public function setUp() { + $this->emitter = new DummyLegacyEmitter(); + self::$emitted = false; + \OC_Hook::clear('Test','test'); + } + + public static function staticLegacyCallBack() { + self::$emitted = true; + } + + public static function staticLegacyArgumentsCallBack($arguments) { + if ($arguments['foo'] == 'foo' and $arguments['bar'] == 'bar') + self::$emitted = true; + } + + public function testLegacyHook() { + \OC_Hook::connect('Test', 'test', '\Test\Hooks\LegacyEmitter', 'staticLegacyCallBack'); + $this->emitter->emitEvent('Test', 'test'); + $this->assertEquals(true, self::$emitted); + } + + public function testLegacyArguments() { + \OC_Hook::connect('Test', 'test', '\Test\Hooks\LegacyEmitter', 'staticLegacyArgumentsCallBack'); + $this->emitter->emitEvent('Test', 'test', array('foo' => 'foo', 'bar' => 'bar')); + $this->assertEquals(true, self::$emitted); + } +} diff --git a/tests/lib/public/contacts.php b/tests/lib/public/contacts.php index ce5d762226b..d6008876a00 100644 --- a/tests/lib/public/contacts.php +++ b/tests/lib/public/contacts.php @@ -19,8 +19,6 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -OC::autoload('OCP\Contacts'); - class Test_Contacts extends PHPUnit_Framework_TestCase { diff --git a/tests/lib/session/memory.php b/tests/lib/session/memory.php new file mode 100644 index 00000000000..2dc236b73bf --- /dev/null +++ b/tests/lib/session/memory.php @@ -0,0 +1,16 @@ +<?php + +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Session; + +class Memory extends Session { + public function setUp() { + $this->instance = new \OC\Session\Memory(uniqid()); + } +} diff --git a/tests/lib/session/session.php b/tests/lib/session/session.php new file mode 100644 index 00000000000..72dee44e7cb --- /dev/null +++ b/tests/lib/session/session.php @@ -0,0 +1,64 @@ +<?php + +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Session; + +abstract class Session extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Session\Session + */ + protected $instance; + + public function tearDown() { + $this->instance->clear(); + } + + public function testNotExistsEmpty() { + $this->assertFalse($this->instance->exists('foo')); + } + + public function testExistsAfterSet() { + $this->instance->set('foo', 1); + $this->assertTrue($this->instance->exists('foo')); + } + + public function testNotExistsAfterRemove() { + $this->instance->set('foo', 1); + $this->instance->remove('foo'); + $this->assertFalse($this->instance->exists('foo')); + } + + public function testGetNonExisting() { + $this->assertNull($this->instance->get('foo')); + } + + public function testGetAfterSet() { + $this->instance->set('foo', 'bar'); + $this->assertEquals('bar', $this->instance->get(('foo'))); + } + + public function testRemoveNonExisting() { + $this->instance->remove('foo'); + } + + public function testNotExistsAfterClear() { + $this->instance->set('foo', 1); + $this->instance->clear(); + $this->assertFalse($this->instance->exists('foo')); + } + + public function testArrayInterface() { + $this->assertFalse(isset($this->instance['foo'])); + $this->instance['foo'] = 'bar'; + $this->assertTrue(isset($this->instance['foo'])); + $this->assertEquals('bar', $this->instance['foo']); + unset($this->instance['foo']); + $this->assertFalse(isset($this->instance['foo'])); + } +} diff --git a/tests/lib/streamwrappers.php b/tests/lib/streamwrappers.php index 2237ee7d378..c7e51ccfa48 100644 --- a/tests/lib/streamwrappers.php +++ b/tests/lib/streamwrappers.php @@ -77,10 +77,10 @@ class Test_StreamWrappers extends PHPUnit_Framework_TestCase { } public function testOC() { - \OC\Files\Mount::clear(); + \OC\Files\Filesystem::clearMounts(); $storage = new \OC\Files\Storage\Temporary(array()); $storage->file_put_contents('foo.txt', 'asd'); - new \OC\Files\Mount($storage, '/'); + \OC\Files\Filesystem::mount($storage, array(), '/'); $this->assertTrue(file_exists('oc:///foo.txt')); $this->assertEquals('asd', file_get_contents('oc:///foo.txt')); diff --git a/tests/lib/template.php b/tests/lib/template.php index 6e88d4c07fc..fd12119da58 100644 --- a/tests/lib/template.php +++ b/tests/lib/template.php @@ -20,10 +20,13 @@ * */ -OC::autoload('OC_Template'); - class Test_TemplateFunctions extends PHPUnit_Framework_TestCase { + public function setUp() { + $loader = new \OC\Autoloader(); + $loader->load('OC_Template'); + } + public function testP() { // FIXME: do we need more testcases? $htmlString = "<script>alert('xss');</script>"; diff --git a/tests/lib/user/backend.php b/tests/lib/user/backend.php deleted file mode 100644 index 40674424c96..00000000000 --- a/tests/lib/user/backend.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php -/** -* ownCloud -* -* @author Robin Appelman -* @copyright 2012 Robin Appelman icewind@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/>. -* -*/ - -/** - * Abstract class to provide the basis of backend-specific unit test classes. - * - * All subclasses MUST assign a backend property in setUp() which implements - * user operations (add, remove, etc.). Test methods in this class will then be - * run on each separate subclass and backend therein. - * - * For an example see /tests/lib/user/dummy.php - */ - -abstract class Test_User_Backend extends PHPUnit_Framework_TestCase { - /** - * @var OC_User_Backend $backend - */ - protected $backend; - - /** - * get a new unique user name - * test cases can override this in order to clean up created user - * @return array - */ - public function getUser() { - return uniqid('test_'); - } - - public function testAddRemove() { - //get the number of groups we start with, in case there are exising groups - $startCount=count($this->backend->getUsers()); - - $name1=$this->getUser(); - $name2=$this->getUser(); - $this->backend->createUser($name1, ''); - $count=count($this->backend->getUsers())-$startCount; - $this->assertEquals(1, $count); - $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); - $this->assertFalse((array_search($name2, $this->backend->getUsers())!==false)); - $this->backend->createUser($name2, ''); - $count=count($this->backend->getUsers())-$startCount; - $this->assertEquals(2, $count); - $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); - $this->assertTrue((array_search($name2, $this->backend->getUsers())!==false)); - - $this->backend->deleteUser($name2); - $count=count($this->backend->getUsers())-$startCount; - $this->assertEquals(1, $count); - $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); - $this->assertFalse((array_search($name2, $this->backend->getUsers())!==false)); - } - - public function testLogin() { - $name1=$this->getUser(); - $name2=$this->getUser(); - - $this->assertFalse($this->backend->userExists($name1)); - $this->assertFalse($this->backend->userExists($name2)); - - $this->backend->createUser($name1, 'pass1'); - $this->backend->createUser($name2, 'pass2'); - - $this->assertTrue($this->backend->userExists($name1)); - $this->assertTrue($this->backend->userExists($name2)); - - $this->assertTrue($this->backend->checkPassword($name1, 'pass1')); - $this->assertTrue($this->backend->checkPassword($name2, 'pass2')); - - $this->assertFalse($this->backend->checkPassword($name1, 'pass2')); - $this->assertFalse($this->backend->checkPassword($name2, 'pass1')); - - $this->assertFalse($this->backend->checkPassword($name1, 'dummy')); - $this->assertFalse($this->backend->checkPassword($name2, 'foobar')); - - $this->backend->setPassword($name1, 'newpass1'); - $this->assertFalse($this->backend->checkPassword($name1, 'pass1')); - $this->assertTrue($this->backend->checkPassword($name1, 'newpass1')); - $this->assertFalse($this->backend->checkPassword($name2, 'newpass1')); - } -} diff --git a/tests/lib/user/database.php b/tests/lib/user/database.php deleted file mode 100644 index fe7d87c44de..00000000000 --- a/tests/lib/user/database.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/** -* ownCloud -* -* @author Robin Appelman -* @copyright 2012 Robin Appelman icewind@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_User_Database extends Test_User_Backend { - /** - * get a new unique user name - * test cases can override this in order to clean up created user - * @return array - */ - public function getUser() { - $user=uniqid('test_'); - $this->users[]=$user; - return $user; - } - - public function setUp() { - $this->backend=new OC_User_Dummy(); - } - - public function tearDown() { - foreach($this->users as $user) { - $this->backend->deleteUser($user); - } - } -} diff --git a/tests/lib/user/dummy.php b/tests/lib/user/dummy.php deleted file mode 100644 index e417fd97603..00000000000 --- a/tests/lib/user/dummy.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** -* ownCloud -* -* @author Robin Appelman -* @copyright 2012 Robin Appelman icewind@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_User_Dummy extends Test_User_Backend { - public function setUp() { - $this->backend=new OC_User_Dummy(); - } -} diff --git a/tests/lib/vcategories.php b/tests/lib/vcategories.php index e79dd49870c..df5f600f20d 100644 --- a/tests/lib/vcategories.php +++ b/tests/lib/vcategories.php @@ -81,6 +81,17 @@ class Test_VCategories extends PHPUnit_Framework_TestCase { } + public function testrenameCategory() { + $defcategories = array('Friends', 'Family', 'Wrok', 'Other'); + $catmgr = new OC_VCategories($this->objectType, $this->user, $defcategories); + + $this->assertTrue($catmgr->rename('Wrok', 'Work')); + $this->assertTrue($catmgr->hasCategory('Work')); + $this->assertFalse($catmgr->hasCategory('Wrok')); + $this->assertFalse($catmgr->rename('Wrok', 'Work')); + + } + public function testAddToCategory() { $objids = array(1, 2, 3, 4, 5, 6, 7, 8, 9); diff --git a/tests/lib/vobject.php b/tests/lib/vobject.php index 1103a4b3297..f28d22a1fcd 100644 --- a/tests/lib/vobject.php +++ b/tests/lib/vobject.php @@ -10,10 +10,29 @@ class Test_VObject extends PHPUnit_Framework_TestCase { public function setUp() { Sabre\VObject\Property::$classMap['SUMMARY'] = 'OC\VObject\StringProperty'; + Sabre\VObject\Property::$classMap['ORG'] = 'OC\VObject\CompoundProperty'; } function testStringProperty() { $property = Sabre\VObject\Property::create('SUMMARY', 'Escape;this,please'); $this->assertEquals("SUMMARY:Escape\;this\,please\r\n", $property->serialize()); } + + function testCompoundProperty() { + + $arr = array( + 'ABC, Inc.', + 'North American Division', + 'Marketing;Sales', + ); + + $property = Sabre\VObject\Property::create('ORG'); + $property->setParts($arr); + + $this->assertEquals('ABC\, Inc.;North American Division;Marketing\;Sales', $property->value); + $this->assertEquals('ORG:ABC\, Inc.;North American Division;Marketing\;Sales' . "\r\n", $property->serialize()); + $this->assertEquals(3, count($property->getParts())); + $parts = $property->getParts(); + $this->assertEquals('Marketing;Sales', $parts[2]); + } }
\ No newline at end of file |