[share 2.0] manager unit tests
This commit is contained in:
parent
e508bcb7a7
commit
44c073b1e6
|
@ -34,6 +34,7 @@ use OCP\Security\ISecureRandom;
|
|||
use OCP\Security\IHasher;
|
||||
use OCP\Files\Mount\IMountManager;
|
||||
use OCP\IGroupManager;
|
||||
use Sabre\VObject\Property\VCard\DateTime;
|
||||
|
||||
/**
|
||||
* Class ManagerTest
|
||||
|
@ -58,7 +59,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
/** @var IHasher */
|
||||
protected $hasher;
|
||||
|
||||
/** @var IShareProvider */
|
||||
/** @var IShareProvider | \PHPUnit_Framework_MockObject_MockObject */
|
||||
protected $defaultProvider;
|
||||
|
||||
/** @var IMountManager */
|
||||
|
@ -1549,6 +1550,249 @@ class ManagerTest extends \Test\TestCase {
|
|||
|
||||
$this->assertTrue($this->manager->checkPassword($share, 'password'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Exception
|
||||
* @expectedExceptionMessage The Share API is disabled
|
||||
*/
|
||||
public function testUpdateShareCantShare() {
|
||||
$manager = $this->createManagerMock()
|
||||
->setMethods(['canShare'])
|
||||
->getMock();
|
||||
|
||||
$manager->expects($this->once())->method('canShare')->willReturn(false);
|
||||
$share = new \OC\Share20\Share();
|
||||
$manager->updateShare($share);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Exception
|
||||
* @expectedExceptionMessage Can't change share type
|
||||
*/
|
||||
public function testUpdateShareCantChangeShareType() {
|
||||
$manager = $this->createManagerMock()
|
||||
->setMethods([
|
||||
'canShare',
|
||||
'getShareById'
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$originalShare = new \OC\Share20\Share();
|
||||
$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->setProviderId('foo')
|
||||
->setId('42')
|
||||
->setShareType(\OCP\Share::SHARE_TYPE_USER);
|
||||
|
||||
$manager->updateShare($share);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Exception
|
||||
* @expectedExceptionMessage Can only update recipient on user shares
|
||||
*/
|
||||
public function testUpdateShareCantChangeRecipientForGroupShare() {
|
||||
$manager = $this->createManagerMock()
|
||||
->setMethods([
|
||||
'canShare',
|
||||
'getShareById'
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$origGroup = $this->getMock('\OCP\IGroup');
|
||||
$newGroup = $this->getMock('\OCP\IGroup');
|
||||
|
||||
$originalShare = new \OC\Share20\Share();
|
||||
$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->setProviderId('foo')
|
||||
->setId('42')
|
||||
->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
||||
->setSharedWith($newGroup);
|
||||
|
||||
$manager->updateShare($share);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Exception
|
||||
* @expectedExceptionMessage Can't share with the share owner
|
||||
*/
|
||||
public function testUpdateShareCantShareWithOwner() {
|
||||
$manager = $this->createManagerMock()
|
||||
->setMethods([
|
||||
'canShare',
|
||||
'getShareById'
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$origUser = $this->getMock('\OCP\IUser');
|
||||
$newUser = $this->getMock('\OCP\IUser');
|
||||
|
||||
$originalShare = new \OC\Share20\Share();
|
||||
$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();
|
||||
$share->setProviderId('foo')
|
||||
->setId('42')
|
||||
->setShareType(\OCP\Share::SHARE_TYPE_USER)
|
||||
->setSharedWith($newUser)
|
||||
->setShareOwner($newUser);
|
||||
|
||||
$manager->updateShare($share);
|
||||
}
|
||||
|
||||
public function testUpdateShareUser() {
|
||||
$manager = $this->createManagerMock()
|
||||
->setMethods([
|
||||
'canShare',
|
||||
'getShareById',
|
||||
'generalCreateChecks',
|
||||
'userCreateChecks',
|
||||
'pathCreateChecks',
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$origUser = $this->getMock('\OCP\IUser');
|
||||
$newUser = $this->getMock('\OCP\IUser');
|
||||
|
||||
$originalShare = new \OC\Share20\Share();
|
||||
$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();
|
||||
$share->setProviderId('foo')
|
||||
->setId('42')
|
||||
->setShareType(\OCP\Share::SHARE_TYPE_USER)
|
||||
->setSharedWith($origUser)
|
||||
->setShareOwner($newUser);
|
||||
|
||||
$this->defaultProvider->expects($this->once())
|
||||
->method('update')
|
||||
->with($share)
|
||||
->willReturn($share);
|
||||
|
||||
$hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
|
||||
\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post');
|
||||
$hookListner->expects($this->never())->method('post');
|
||||
|
||||
|
||||
$manager->updateShare($share);
|
||||
}
|
||||
|
||||
public function testUpdateShareGroup() {
|
||||
$manager = $this->createManagerMock()
|
||||
->setMethods([
|
||||
'canShare',
|
||||
'getShareById',
|
||||
'generalCreateChecks',
|
||||
'groupCreateChecks',
|
||||
'pathCreateChecks',
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$origGroup = $this->getMock('\OCP\IGroup');
|
||||
$user = $this->getMock('\OCP\IUser');
|
||||
|
||||
$originalShare = new \OC\Share20\Share();
|
||||
$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->setProviderId('foo')
|
||||
->setId('42')
|
||||
->setShareType(\OCP\Share::SHARE_TYPE_GROUP)
|
||||
->setSharedWith($origGroup)
|
||||
->setShareOwner($user);
|
||||
|
||||
$this->defaultProvider->expects($this->once())
|
||||
->method('update')
|
||||
->with($share)
|
||||
->willReturn($share);
|
||||
|
||||
$hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
|
||||
\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post');
|
||||
$hookListner->expects($this->never())->method('post');
|
||||
|
||||
|
||||
$manager->updateShare($share);
|
||||
}
|
||||
|
||||
public function testUpdateShareLink() {
|
||||
$manager = $this->createManagerMock()
|
||||
->setMethods([
|
||||
'canShare',
|
||||
'getShareById',
|
||||
'generalCreateChecks',
|
||||
'linkCreateChecks',
|
||||
'pathCreateChecks',
|
||||
'verifyPassword',
|
||||
'validateExpiredate',
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$user = $this->getMock('\OCP\IUser');
|
||||
$user->method('getUID')->willReturn('owner');
|
||||
|
||||
$originalShare = new \OC\Share20\Share();
|
||||
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_LINK);
|
||||
|
||||
$tomorrow = new \DateTime();
|
||||
$tomorrow->setTime(0,0,0);
|
||||
$tomorrow->add(new \DateInterval('P1D'));
|
||||
|
||||
$manager->expects($this->once())->method('canShare')->willReturn(true);
|
||||
$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
|
||||
$manager->expects($this->once())->method('validateExpireDate')->with($tomorrow)->willReturn($tomorrow);
|
||||
|
||||
$file = $this->getMock('OCP\Files\File', [], [], 'File');
|
||||
$file->method('getId')->willReturn(100);
|
||||
|
||||
$share = new \OC\Share20\Share();
|
||||
$share->setProviderId('foo')
|
||||
->setId('42')
|
||||
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
|
||||
->setSharedBy($user)
|
||||
->setShareOwner($user)
|
||||
->setPassword('password')
|
||||
->setExpirationDate($tomorrow)
|
||||
->setPath($file);
|
||||
|
||||
$this->defaultProvider->expects($this->once())
|
||||
->method('update')
|
||||
->with($share)
|
||||
->willReturn($share);
|
||||
|
||||
$hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
|
||||
\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post');
|
||||
$hookListner->expects($this->once())->method('post')->with([
|
||||
'itemType' => 'file',
|
||||
'itemSource' => 100,
|
||||
'date' => $tomorrow,
|
||||
'uidOwner' => 'owner',
|
||||
]);
|
||||
|
||||
|
||||
$manager->updateShare($share);
|
||||
}
|
||||
}
|
||||
|
||||
class DummyPassword {
|
||||
|
|
Loading…
Reference in New Issue