|
|
|
|
@ -20,6 +20,7 @@
|
|
|
|
|
*/
|
|
|
|
|
namespace Test\Share20;
|
|
|
|
|
|
|
|
|
|
use OCP\Files\IRootFolder;
|
|
|
|
|
use OCP\IUserManager;
|
|
|
|
|
use OCP\Share\IProviderFactory;
|
|
|
|
|
use OCP\Share\IShare;
|
|
|
|
|
@ -35,7 +36,6 @@ use OCP\Security\ISecureRandom;
|
|
|
|
|
use OCP\Security\IHasher;
|
|
|
|
|
use OCP\Files\Mount\IMountManager;
|
|
|
|
|
use OCP\IGroupManager;
|
|
|
|
|
use Sabre\VObject\Property\VCard\DateTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Class ManagerTest
|
|
|
|
|
@ -47,36 +47,28 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
|
|
|
|
|
/** @var Manager */
|
|
|
|
|
protected $manager;
|
|
|
|
|
|
|
|
|
|
/** @var ILogger */
|
|
|
|
|
protected $logger;
|
|
|
|
|
|
|
|
|
|
/** @var IConfig */
|
|
|
|
|
protected $config;
|
|
|
|
|
|
|
|
|
|
/** @var ISecureRandom */
|
|
|
|
|
protected $secureRandom;
|
|
|
|
|
|
|
|
|
|
/** @var IHasher */
|
|
|
|
|
protected $hasher;
|
|
|
|
|
|
|
|
|
|
/** @var IShareProvider | \PHPUnit_Framework_MockObject_MockObject */
|
|
|
|
|
protected $defaultProvider;
|
|
|
|
|
|
|
|
|
|
/** @var IMountManager */
|
|
|
|
|
protected $mountManager;
|
|
|
|
|
|
|
|
|
|
/** @var IGroupManager */
|
|
|
|
|
protected $groupManager;
|
|
|
|
|
|
|
|
|
|
/** @var IL10N */
|
|
|
|
|
protected $l;
|
|
|
|
|
|
|
|
|
|
/** @var DummyFactory */
|
|
|
|
|
protected $factory;
|
|
|
|
|
|
|
|
|
|
/** @var IUserManager */
|
|
|
|
|
protected $userManager;
|
|
|
|
|
/** @var IRootFolder | \PHPUnit_Framework_MockObject_MockObject */
|
|
|
|
|
protected $rootFolder;
|
|
|
|
|
|
|
|
|
|
public function setUp() {
|
|
|
|
|
|
|
|
|
|
@ -87,6 +79,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
$this->mountManager = $this->getMock('\OCP\Files\Mount\IMountManager');
|
|
|
|
|
$this->groupManager = $this->getMock('\OCP\IGroupManager');
|
|
|
|
|
$this->userManager = $this->getMock('\OCP\IUserManager');
|
|
|
|
|
$this->rootFolder = $this->getMock('\OCP\Files\IRootFolder');
|
|
|
|
|
|
|
|
|
|
$this->l = $this->getMock('\OCP\IL10N');
|
|
|
|
|
$this->l->method('t')
|
|
|
|
|
@ -105,7 +98,8 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
$this->groupManager,
|
|
|
|
|
$this->l,
|
|
|
|
|
$this->factory,
|
|
|
|
|
$this->userManager
|
|
|
|
|
$this->userManager,
|
|
|
|
|
$this->rootFolder
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$this->defaultProvider = $this->getMockBuilder('\OC\Share20\DefaultShareProvider')
|
|
|
|
|
@ -131,7 +125,8 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
$this->groupManager,
|
|
|
|
|
$this->l,
|
|
|
|
|
$this->factory,
|
|
|
|
|
$this->userManager
|
|
|
|
|
$this->userManager,
|
|
|
|
|
$this->rootFolder
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -792,7 +787,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
* @expectedExceptionMessage Only sharing with group members is allowed
|
|
|
|
|
*/
|
|
|
|
|
public function testUserCreateChecksShareWithGroupMembersOnlyDifferentGroups() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$sharedBy = $this->getMock('\OCP\IUser');
|
|
|
|
|
$sharedWith = $this->getMock('\OCP\IUser');
|
|
|
|
|
@ -822,7 +817,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testUserCreateChecksShareWithGroupMembersOnlySharedGroup() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$sharedBy = $this->getMock('\OCP\IUser');
|
|
|
|
|
$sharedWith = $this->getMock('\OCP\IUser');
|
|
|
|
|
@ -904,8 +899,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
->setProviderId('foo')
|
|
|
|
|
->setId('bar');
|
|
|
|
|
|
|
|
|
|
$share2 = new \OC\Share20\Share();
|
|
|
|
|
$owner2 = $this->getMock('\OCP\IUser');
|
|
|
|
|
$share2 = $this->manager->newShare();
|
|
|
|
|
$share2->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
|
|
|
|
->setShareOwner('shareOwner2')
|
|
|
|
|
->setProviderId('foo')
|
|
|
|
|
@ -928,7 +922,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testUserCreateChecksIdenticalPathNotSharedWithUser() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$sharedWith = $this->getMock('\OCP\IUser');
|
|
|
|
|
$path = $this->getMock('\OCP\Files\Node');
|
|
|
|
|
$share->setSharedWith('sharedWith')
|
|
|
|
|
@ -939,7 +933,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
|
|
|
|
|
$this->userManager->method('get')->with('sharedWith')->willReturn($sharedWith);
|
|
|
|
|
|
|
|
|
|
$share2 = new \OC\Share20\Share();
|
|
|
|
|
$share2 = $this->manager->newShare();
|
|
|
|
|
$share2->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
|
|
|
|
->setShareOwner('shareOwner2')
|
|
|
|
|
->setProviderId('foo')
|
|
|
|
|
@ -967,7 +961,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
* @expectedExceptionMessage Only sharing within your own groups is allowed
|
|
|
|
|
*/
|
|
|
|
|
public function testGroupCreateChecksShareWithGroupMembersOnlyNotInGroup() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$user = $this->getMock('\OCP\IUser');
|
|
|
|
|
$group = $this->getMock('\OCP\IGroup');
|
|
|
|
|
@ -988,7 +982,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGroupCreateChecksShareWithGroupMembersOnlyInGroup() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$user = $this->getMock('\OCP\IUser');
|
|
|
|
|
$group = $this->getMock('\OCP\IGroup');
|
|
|
|
|
@ -1028,7 +1022,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
->setProviderId('foo')
|
|
|
|
|
->setId('bar');
|
|
|
|
|
|
|
|
|
|
$share2 = new \OC\Share20\Share();
|
|
|
|
|
$share2 = $this->manager->newShare();
|
|
|
|
|
$share2->setSharedWith('sharedWith')
|
|
|
|
|
->setProviderId('foo')
|
|
|
|
|
->setId('baz');
|
|
|
|
|
@ -1041,14 +1035,14 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGroupCreateChecksPathAlreadySharedWithDifferentGroup() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$share->setSharedWith('sharedWith');
|
|
|
|
|
|
|
|
|
|
$path = $this->getMock('\OCP\Files\Node');
|
|
|
|
|
$share->setNode($path);
|
|
|
|
|
|
|
|
|
|
$share2 = new \OC\Share20\Share();
|
|
|
|
|
$share2 = $this->manager->newShare();
|
|
|
|
|
$share2->setSharedWith('sharedWith2');
|
|
|
|
|
|
|
|
|
|
$this->defaultProvider->method('getSharesByPath')
|
|
|
|
|
@ -1063,7 +1057,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
* @expectedExceptionMessage Link sharing not allowed
|
|
|
|
|
*/
|
|
|
|
|
public function testLinkCreateChecksNoLinkSharesAllowed() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$this->config
|
|
|
|
|
->method('getAppValue')
|
|
|
|
|
@ -1079,7 +1073,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
* @expectedExceptionMessage Link shares can't have reshare permissions
|
|
|
|
|
*/
|
|
|
|
|
public function testLinkCreateChecksSharePermissions() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$share->setPermissions(\OCP\Constants::PERMISSION_SHARE);
|
|
|
|
|
|
|
|
|
|
@ -1097,7 +1091,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
* @expectedExceptionMessage Link shares can't have delete permissions
|
|
|
|
|
*/
|
|
|
|
|
public function testLinkCreateChecksDeletePermissions() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$share->setPermissions(\OCP\Constants::PERMISSION_DELETE);
|
|
|
|
|
|
|
|
|
|
@ -1115,7 +1109,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
* @expectedExceptionMessage Public upload not allowed
|
|
|
|
|
*/
|
|
|
|
|
public function testLinkCreateChecksNoPublicUpload() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
|
|
|
|
|
|
|
|
|
|
@ -1130,7 +1124,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testLinkCreateChecksPublicUpload() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
|
|
|
|
|
|
|
|
|
|
@ -1145,7 +1139,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testLinkCreateChecksReadOnly() {
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
|
|
|
|
|
$share->setPermissions(\OCP\Constants::PERMISSION_READ);
|
|
|
|
|
|
|
|
|
|
@ -1316,7 +1310,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$manager->expects($this->once())->method('canShare')->willReturn(false);
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$manager->createShare($share);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -1610,7 +1604,8 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
$this->groupManager,
|
|
|
|
|
$this->l,
|
|
|
|
|
$factory,
|
|
|
|
|
$this->userManager
|
|
|
|
|
$this->userManager,
|
|
|
|
|
$this->rootFolder
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$share = $this->getMock('\OCP\Share\IShare');
|
|
|
|
|
@ -1695,7 +1690,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$manager->expects($this->once())->method('canShare')->willReturn(false);
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$manager->updateShare($share);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -1711,13 +1706,13 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
])
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$originalShare = new \OC\Share20\Share();
|
|
|
|
|
$originalShare = $this->manager->newShare();
|
|
|
|
|
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_GROUP);
|
|
|
|
|
|
|
|
|
|
$manager->expects($this->once())->method('canShare')->willReturn(true);
|
|
|
|
|
$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
|
|
|
|
|
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$share->setProviderId('foo')
|
|
|
|
|
->setId('42')
|
|
|
|
|
->setShareType(\OCP\Share::SHARE_TYPE_USER);
|
|
|
|
|
@ -1737,14 +1732,14 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
])
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$originalShare = new \OC\Share20\Share();
|
|
|
|
|
$originalShare = $this->manager->newShare();
|
|
|
|
|
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
|
|
|
|
->setSharedWith('origGroup');
|
|
|
|
|
|
|
|
|
|
$manager->expects($this->once())->method('canShare')->willReturn(true);
|
|
|
|
|
$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
|
|
|
|
|
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$share->setProviderId('foo')
|
|
|
|
|
->setId('42')
|
|
|
|
|
->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
|
|
|
|
@ -1765,14 +1760,14 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
])
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$originalShare = new \OC\Share20\Share();
|
|
|
|
|
$originalShare = $this->manager->newShare();
|
|
|
|
|
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_USER)
|
|
|
|
|
->setSharedWith('sharedWith');
|
|
|
|
|
|
|
|
|
|
$manager->expects($this->once())->method('canShare')->willReturn(true);
|
|
|
|
|
$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
|
|
|
|
|
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$share->setProviderId('foo')
|
|
|
|
|
->setId('42')
|
|
|
|
|
->setShareType(\OCP\Share::SHARE_TYPE_USER)
|
|
|
|
|
@ -1793,19 +1788,22 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
])
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$originalShare = new \OC\Share20\Share();
|
|
|
|
|
$originalShare = $this->manager->newShare();
|
|
|
|
|
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_USER)
|
|
|
|
|
->setSharedWith('origUser');
|
|
|
|
|
|
|
|
|
|
$manager->expects($this->once())->method('canShare')->willReturn(true);
|
|
|
|
|
$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
|
|
|
|
|
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$node = $this->getMock('\OCP\Files\File');
|
|
|
|
|
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$share->setProviderId('foo')
|
|
|
|
|
->setId('42')
|
|
|
|
|
->setShareType(\OCP\Share::SHARE_TYPE_USER)
|
|
|
|
|
->setSharedWith('origUser')
|
|
|
|
|
->setShareOwner('newUser');
|
|
|
|
|
->setShareOwner('newUser')
|
|
|
|
|
->setNode($node);
|
|
|
|
|
|
|
|
|
|
$this->defaultProvider->expects($this->once())
|
|
|
|
|
->method('update')
|
|
|
|
|
@ -1831,19 +1829,22 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
])
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$originalShare = new \OC\Share20\Share();
|
|
|
|
|
$originalShare = $this->manager->newShare();
|
|
|
|
|
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
|
|
|
|
->setSharedWith('origUser');
|
|
|
|
|
|
|
|
|
|
$manager->expects($this->once())->method('canShare')->willReturn(true);
|
|
|
|
|
$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
|
|
|
|
|
|
|
|
|
|
$share = new \OC\Share20\Share();
|
|
|
|
|
$node = $this->getMock('\OCP\Files\File');
|
|
|
|
|
|
|
|
|
|
$share = $this->manager->newShare();
|
|
|
|
|
$share->setProviderId('foo')
|
|
|
|
|
->setId('42')
|
|
|
|
|
->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
|
|
|
|
->setSharedWith('origUser')
|
|
|
|
|
->setShareOwner('owner');
|
|
|
|
|
->setShareOwner('owner')
|
|
|
|
|
->setNode($node);
|
|
|
|
|
|
|
|
|
|
$this->defaultProvider->expects($this->once())
|
|
|
|
|
->method('update')
|
|
|
|
|
@ -1871,7 +1872,7 @@ class ManagerTest extends \Test\TestCase {
|
|
|
|
|
])
|
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
|
|
$originalShare = new \OC\Share20\Share();
|
|
|
|
|
$originalShare = $this->manager->newShare();
|
|
|
|
|
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_LINK);
|
|
|
|
|
|
|
|
|
|
$tomorrow = new \DateTime();
|
|
|
|
|
|