Fix enabling send password by Talk with empty password in link shares
When "send password by Talk" is enabled in a link share now a non empty password is enforced. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
9a5b51d43c
commit
9df3ea94b8
|
@ -968,8 +968,14 @@ class Manager implements IManager {
|
||||||
} elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
|
} elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
|
||||||
$this->linkCreateChecks($share);
|
$this->linkCreateChecks($share);
|
||||||
|
|
||||||
|
$plainTextPassword = $share->getPassword();
|
||||||
|
|
||||||
$this->updateSharePasswordIfNeeded($share, $originalShare);
|
$this->updateSharePasswordIfNeeded($share, $originalShare);
|
||||||
|
|
||||||
|
if (empty($plainTextPassword) && $share->getSendPasswordByTalk()) {
|
||||||
|
throw new \InvalidArgumentException('Can’t enable sending the password by Talk with an empty password');
|
||||||
|
}
|
||||||
|
|
||||||
if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
|
if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
|
||||||
//Verify the expiration date
|
//Verify the expiration date
|
||||||
$this->validateExpirationDate($share);
|
$this->validateExpirationDate($share);
|
||||||
|
|
|
@ -2741,6 +2741,75 @@ class ManagerTest extends \Test\TestCase {
|
||||||
$manager->updateShare($share);
|
$manager->updateShare($share);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testUpdateShareLinkEnableSendPasswordByTalkWithNoPassword() {
|
||||||
|
$this->expectException(\InvalidArgumentException::class);
|
||||||
|
$this->expectExceptionMessage('Can’t enable sending the password by Talk with an empty password');
|
||||||
|
|
||||||
|
$manager = $this->createManagerMock()
|
||||||
|
->setMethods([
|
||||||
|
'canShare',
|
||||||
|
'getShareById',
|
||||||
|
'generalCreateChecks',
|
||||||
|
'linkCreateChecks',
|
||||||
|
'pathCreateChecks',
|
||||||
|
'verifyPassword',
|
||||||
|
'validateExpirationDate',
|
||||||
|
])
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$originalShare = $this->manager->newShare();
|
||||||
|
$originalShare->setShareType(\OCP\Share::SHARE_TYPE_LINK)
|
||||||
|
->setPermissions(15);
|
||||||
|
|
||||||
|
$tomorrow = new \DateTime();
|
||||||
|
$tomorrow->setTime(0,0,0);
|
||||||
|
$tomorrow->add(new \DateInterval('P1D'));
|
||||||
|
|
||||||
|
$file = $this->createMock(File::class);
|
||||||
|
$file->method('getId')->willReturn(100);
|
||||||
|
|
||||||
|
$share = $this->manager->newShare();
|
||||||
|
$share->setProviderId('foo')
|
||||||
|
->setId('42')
|
||||||
|
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
|
||||||
|
->setToken('token')
|
||||||
|
->setSharedBy('owner')
|
||||||
|
->setShareOwner('owner')
|
||||||
|
->setPassword(null)
|
||||||
|
->setSendPasswordByTalk(true)
|
||||||
|
->setExpirationDate($tomorrow)
|
||||||
|
->setNode($file)
|
||||||
|
->setPermissions(15);
|
||||||
|
|
||||||
|
$manager->expects($this->once())->method('canShare')->willReturn(true);
|
||||||
|
$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
|
||||||
|
$manager->expects($this->once())->method('generalCreateChecks')->with($share);
|
||||||
|
$manager->expects($this->once())->method('linkCreateChecks')->with($share);
|
||||||
|
$manager->expects($this->never())->method('verifyPassword');
|
||||||
|
$manager->expects($this->never())->method('pathCreateChecks');
|
||||||
|
$manager->expects($this->never())->method('validateExpirationDate');
|
||||||
|
|
||||||
|
$this->hasher->expects($this->never())
|
||||||
|
->method('hash');
|
||||||
|
|
||||||
|
$this->defaultProvider->expects($this->never())
|
||||||
|
->method('update');
|
||||||
|
|
||||||
|
$hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
|
||||||
|
\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post');
|
||||||
|
$hookListner->expects($this->never())->method('post');
|
||||||
|
|
||||||
|
$hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
|
||||||
|
\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post');
|
||||||
|
$hookListner2->expects($this->never())->method('post');
|
||||||
|
|
||||||
|
$hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
|
||||||
|
\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post');
|
||||||
|
$hookListner3->expects($this->never())->method('post');
|
||||||
|
|
||||||
|
$manager->updateShare($share);
|
||||||
|
}
|
||||||
|
|
||||||
public function testUpdateShareMail() {
|
public function testUpdateShareMail() {
|
||||||
$manager = $this->createManagerMock()
|
$manager = $this->createManagerMock()
|
||||||
->setMethods([
|
->setMethods([
|
||||||
|
|
Loading…
Reference in New Issue