[share 2.0] manager unit tests

This commit is contained in:
Roeland Jago Douma 2016-01-25 13:09:50 +01:00
parent e508bcb7a7
commit 44c073b1e6
1 changed files with 245 additions and 1 deletions

View File

@ -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 {