diff options
author | Robin Appelman <robin@icewind.nl> | 2015-03-19 16:20:12 +0100 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2015-03-19 16:20:12 +0100 |
commit | be6edd465a5a77ea859661feaedbeacd5a66f9db (patch) | |
tree | 850797a754ef389de7ebd72e4903b53d4a112411 /apps | |
parent | 0868e49663a8619809a35b7879e26a83b58ec1b2 (diff) | |
parent | 6a677ce8fea70c52cfe63c2ea3dc1455e87dcdff (diff) | |
download | nextcloud-server-be6edd465a5a77ea859661feaedbeacd5a66f9db.tar.gz nextcloud-server-be6edd465a5a77ea859661feaedbeacd5a66f9db.zip |
Merge pull request #14537 from owncloud/oci-external-share
Fix external shares without password on oracle
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/lib/external/manager.php | 2 | ||||
-rw-r--r-- | apps/files_sharing/lib/external/storage.php | 2 | ||||
-rw-r--r-- | apps/files_sharing/tests/external/manager.php | 142 |
3 files changed, 144 insertions, 2 deletions
diff --git a/apps/files_sharing/lib/external/manager.php b/apps/files_sharing/lib/external/manager.php index 8985aeb3fce..490e5e5003d 100644 --- a/apps/files_sharing/lib/external/manager.php +++ b/apps/files_sharing/lib/external/manager.php @@ -321,4 +321,4 @@ class Manager { return $result ? $openShares->fetchAll() : array(); } -}
\ No newline at end of file +} diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php index 648376e8cb5..51c4a36029e 100644 --- a/apps/files_sharing/lib/external/storage.php +++ b/apps/files_sharing/lib/external/storage.php @@ -70,7 +70,7 @@ class Storage extends DAV implements ISharedStorage { 'host' => $host, 'root' => $root, 'user' => $options['token'], - 'password' => $options['password'] + 'password' => (string)$options['password'] )); } 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'); + } +} |