diff options
Diffstat (limited to 'apps/files_sharing/tests')
-rw-r--r-- | apps/files_sharing/tests/api.php | 18 | ||||
-rw-r--r-- | apps/files_sharing/tests/external/manager.php | 142 | ||||
-rw-r--r-- | apps/files_sharing/tests/sharedstorage.php | 3 |
3 files changed, 161 insertions, 2 deletions
diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php index 9256f9bcc85..371c94a8c88 100644 --- a/apps/files_sharing/tests/api.php +++ b/apps/files_sharing/tests/api.php @@ -1079,6 +1079,24 @@ class Test_Files_Sharing_Api extends TestCase { $this->assertTrue(is_array($updatedLinkShare)); $this->assertEquals($dateWithinRange->format('Y-m-d') . ' 00:00:00', $updatedLinkShare['expiration']); + + // Try to remove expire date + $params = array(); + $params['id'] = $linkShare['id']; + $params['_put'] = ['expireDate' => '']; + + $result = \OCA\Files_Sharing\API\Local::updateShare($params); + + $this->assertFalse($result->succeeded()); + + $items = \OCP\Share::getItemShared('file', $linkShare['file_source']); + + $updatedLinkShare = reset($items); + + // date shouldn't be changed + $this->assertTrue(is_array($updatedLinkShare)); + $this->assertEquals($dateWithinRange->format('Y-m-d') . ' 00:00:00', $updatedLinkShare['expiration']); + // cleanup $config->setAppValue('core', 'shareapi_default_expire_date', 'no'); $config->setAppValue('core', 'shareapi_enforce_expire_date', 'no'); diff --git a/apps/files_sharing/tests/external/manager.php b/apps/files_sharing/tests/external/manager.php new file mode 100644 index 00000000000..dcb3dfba692 --- /dev/null +++ b/apps/files_sharing/tests/external/manager.php @@ -0,0 +1,142 @@ +<?php +/** + * @author Robin Appelman <icewind@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\Files_sharing\Tests\External; + +use OC\Files\Storage\StorageFactory; +use Test\TestCase; + +class Manager extends TestCase { + private $uid; + + /** + * @var \OC\Files\Mount\Manager + */ + private $mountManager; + + /** + * @var \OCA\Files_Sharing\External\Manager + */ + private $instance; + + public function setUp() { + $this->uid = uniqid(); + $this->mountManager = new \OC\Files\Mount\Manager(); + $this->instance = new \OCA\Files_Sharing\External\Manager(\OC::$server->getDatabaseConnection(), + $this->mountManager, new StorageFactory(), \OC::$server->getHTTPHelper(), $this->uid); + } + + public function tearDown() { + $this->instance->removeUserShares($this->uid); + } + + private function getFullPath($path) { + return '/' . $this->uid . '/files' . $path; + } + + private function assertMount($mountPoint) { + $mountPoint = rtrim($mountPoint, '/'); + $mount = $this->mountManager->find($this->getFullPath($mountPoint)); + $this->assertInstanceOf('\OCP\Files\Mount\IMountPoint', $mount); + $this->assertEquals($this->getFullPath($mountPoint), rtrim($mount->getMountPoint(), '/')); + $storage = $mount->getStorage(); + $this->assertInstanceOf('\OCA\Files_Sharing\External\Storage', $storage); + } + + private function assertNotMount($mountPoint) { + $mountPoint = rtrim($mountPoint, '/'); + $mount = $this->mountManager->find($this->getFullPath($mountPoint)); + if ($mount) { + $this->assertInstanceOf('\OCP\Files\Mount\IMountPoint', $mount); + $this->assertNotEquals($this->getFullPath($mountPoint), rtrim($mount->getMountPoint(), '/')); + } else { + $this->assertNull($mount); + } + } + + public function testAddBasic() { + $this->instance->addShare('http://example.com', 'foo', 'bar', 'example', 'me', true); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertMount('/example'); + } + + public function testAddBasicEmptyPassword() { + $this->instance->addShare('http://example.com', 'foo', '', 'example', 'me', true); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertMount('/example'); + } + + public function testAddNotAcceptedShare() { + $this->instance->addShare('http://example.com', 'foo', 'bar', 'example', 'me', false); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertNotMount('/example'); + } + + public function testAcceptMount() { + $this->instance->addShare('http://example.com', 'foo', 'bar', 'example', 'me', false); + $open = $this->instance->getOpenShares(); + $this->assertCount(1, $open); + $this->instance->acceptShare($open[0]['id']); + $this->assertEquals([], $this->instance->getOpenShares()); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertMount('/example'); + } + + public function testDeclineMount() { + $this->instance->addShare('http://example.com', 'foo', 'bar', 'example', 'me', false); + $open = $this->instance->getOpenShares(); + $this->assertCount(1, $open); + $this->instance->declineShare($open[0]['id']); + $this->assertEquals([], $this->instance->getOpenShares()); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertNotMount('/example'); + } + + public function testSetMountPoint() { + $this->instance->addShare('http://example.com', 'foo', 'bar', 'example', 'me', true); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertMount('/example'); + $this->instance->setMountPoint($this->getFullPath('/example'), $this->getFullPath('/renamed')); + $this->mountManager->clear(); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertMount('/renamed'); + $this->assertNotMount('/example'); + } + + public function testRemoveShare() { + $this->instance->addShare('http://example.com', 'foo', 'bar', 'example', 'me', true); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertMount('/example'); + $this->instance->removeShare($this->getFullPath('/example')); + $this->mountManager->clear(); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertNotMount('/example'); + } + + public function testRemoveShareForUser() { + $this->instance->addShare('http://example.com', 'foo', 'bar', 'example', 'me', true); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertMount('/example'); + $this->instance->removeUserShares($this->uid); + $this->mountManager->clear(); + \Test_Helper::invokePrivate($this->instance, 'setupMounts'); + $this->assertNotMount('/example'); + } +} diff --git a/apps/files_sharing/tests/sharedstorage.php b/apps/files_sharing/tests/sharedstorage.php index 2959b9aacfb..46f75b488b5 100644 --- a/apps/files_sharing/tests/sharedstorage.php +++ b/apps/files_sharing/tests/sharedstorage.php @@ -182,9 +182,8 @@ class Test_Files_Sharing_Storage extends OCA\Files_sharing\Tests\TestCase { // for the share root we expect: // the shared permissions (1) // the delete permission (8), to enable unshare - // the update permission (2), to allow renaming of the mount point $rootInfo = \OC\Files\Filesystem::getFileInfo($this->folder); - $this->assertSame(11, $rootInfo->getPermissions()); + $this->assertSame(9, $rootInfo->getPermissions()); // for the file within the shared folder we expect: // the shared permissions (1) |