aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@owncloud.com>2016-02-18 13:38:38 +0100
committerBjoern Schiessle <schiessle@owncloud.com>2016-02-19 12:43:03 +0100
commit2dcf887cceca8dd25b3d664fb0726cb6d69739ef (patch)
tree7b75669b305fb8331b9674b9bfc6d818a92566c6 /tests
parentae2304f23f04f1d6c84f2a049a4b0fdc0c9023c6 (diff)
downloadnextcloud-server-2dcf887cceca8dd25b3d664fb0726cb6d69739ef.tar.gz
nextcloud-server-2dcf887cceca8dd25b3d664fb0726cb6d69739ef.zip
When (re-)sharing an incomming federated share set the corrent owner
Incomming federated shares are a special kind. We mount them as normal webdav shares but we do supply owner info with the federated cloud id of the share owner. Since we do not yet have the new resharing behaviour on federated shares we need to set the correct owner. Which will allow sharing and proper mounting for other users. fixes #22500
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/share20/managertest.php97
1 files changed, 88 insertions, 9 deletions
diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php
index fe94b72c4e6..c41f0754396 100644
--- a/tests/lib/share20/managertest.php
+++ b/tests/lib/share20/managertest.php
@@ -1429,9 +1429,11 @@ class ManagerTest extends \Test\TestCase {
$shareOwner = $this->getMock('\OCP\IUser');
$shareOwner->method('getUID')->willReturn('shareOwner');
+ $storage = $this->getMock('\OCP\Files\Storage');
$path = $this->getMock('\OCP\Files\File');
$path->method('getOwner')->willReturn($shareOwner);
$path->method('getName')->willReturn('target');
+ $path->method('getStorage')->willReturn($storage);
$share = $this->createShare(
null,
@@ -1480,9 +1482,11 @@ class ManagerTest extends \Test\TestCase {
$shareOwner = $this->getMock('\OCP\IUser');
$shareOwner->method('getUID')->willReturn('shareOwner');
+ $storage = $this->getMock('\OCP\Files\Storage');
$path = $this->getMock('\OCP\Files\File');
$path->method('getOwner')->willReturn($shareOwner);
$path->method('getName')->willReturn('target');
+ $path->method('getStorage')->willReturn($storage);
$share = $this->createShare(
null,
@@ -1539,10 +1543,12 @@ class ManagerTest extends \Test\TestCase {
$shareOwner = $this->getMock('\OCP\IUser');
$shareOwner->method('getUID')->willReturn('shareOwner');
+ $storage = $this->getMock('\OCP\Files\Storage');
$path = $this->getMock('\OCP\Files\File');
$path->method('getOwner')->willReturn($shareOwner);
$path->method('getName')->willReturn('target');
$path->method('getId')->willReturn(1);
+ $path->method('getStorage')->willReturn($storage);
$date = new \DateTime();
@@ -1663,9 +1669,11 @@ class ManagerTest extends \Test\TestCase {
$shareOwner = $this->getMock('\OCP\IUser');
$shareOwner->method('getUID')->willReturn('shareOwner');
+ $storage = $this->getMock('\OCP\Files\Storage');
$path = $this->getMock('\OCP\Files\File');
$path->method('getOwner')->willReturn($shareOwner);
$path->method('getName')->willReturn('target');
+ $path->method('getStorage')->willReturn($storage);
$share = $this->createShare(
null,
@@ -1697,8 +1705,86 @@ class ManagerTest extends \Test\TestCase {
->method('setTarget')
->with('/target');
- $dummy = new DummyCreate();
- \OCP\Util::connectHook('OCP\Share', 'pre_shared', $dummy, 'listner');
+ $hookListner = $this->getMockBuilder('Dummy')->setMethods(['pre'])->getMock();
+ \OCP\Util::connectHook('OCP\Share', 'pre_shared', $hookListner, 'pre');
+ $hookListner->expects($this->once())
+ ->method('pre')
+ ->will($this->returnCallback(function (array $data) {
+ $data['run'] = false;
+ $data['error'] = 'I won\'t let you share!';
+ }));
+
+ $manager->createShare($share);
+ }
+
+ public function testCreateShareOfIncommingFederatedShare() {
+ $manager = $this->createManagerMock()
+ ->setMethods(['canShare', 'generalCreateChecks', 'userCreateChecks', 'pathCreateChecks'])
+ ->getMock();
+
+ $shareOwner = $this->getMock('\OCP\IUser');
+ $shareOwner->method('getUID')->willReturn('shareOwner');
+
+ $storage = $this->getMock('\OCP\Files\Storage');
+ $storage->method('instanceOfStorage')
+ ->with('OCA\Files_Sharing\External\Storage')
+ ->willReturn(true);
+
+ $storage2 = $this->getMock('\OCP\Files\Storage');
+ $storage2->method('instanceOfStorage')
+ ->with('OCA\Files_Sharing\External\Storage')
+ ->willReturn(false);
+
+ $path = $this->getMock('\OCP\Files\File');
+ $path->expects($this->never())->method('getOwner');
+ $path->method('getName')->willReturn('target');
+ $path->method('getStorage')->willReturn($storage);
+
+ $parent = $this->getMock('\OCP\Files\Folder');
+ $parent->method('getStorage')->willReturn($storage);
+
+ $parentParent = $this->getMock('\OCP\Files\Folder');
+ $parentParent->method('getStorage')->willReturn($storage2);
+ $parentParent->method('getOwner')->willReturn($shareOwner);
+
+ $path->method('getParent')->willReturn($parent);
+ $parent->method('getParent')->willReturn($parentParent);
+
+ $share = $this->createShare(
+ null,
+ \OCP\Share::SHARE_TYPE_USER,
+ $path,
+ 'sharedWith',
+ 'sharedBy',
+ null,
+ \OCP\Constants::PERMISSION_ALL);
+
+ $manager->expects($this->once())
+ ->method('canShare')
+ ->with($share)
+ ->willReturn(true);
+ $manager->expects($this->once())
+ ->method('generalCreateChecks')
+ ->with($share);;
+ $manager->expects($this->once())
+ ->method('userCreateChecks')
+ ->with($share);;
+ $manager->expects($this->once())
+ ->method('pathCreateChecks')
+ ->with($path);
+
+ $this->defaultProvider
+ ->expects($this->once())
+ ->method('create')
+ ->with($share)
+ ->will($this->returnArgument(0));
+
+ $share->expects($this->once())
+ ->method('setShareOwner')
+ ->with('shareOwner');
+ $share->expects($this->once())
+ ->method('setTarget')
+ ->with('/target');
$manager->createShare($share);
}
@@ -2269,13 +2355,6 @@ class DummyPassword {
}
}
-class DummyCreate {
- public function listner($array) {
- $array['run'] = false;
- $array['error'] = 'I won\'t let you share!';
- }
-}
-
class DummyFactory implements IProviderFactory {
/** @var IShareProvider */