Return proper error string if sharing for this user is disabled

Fixes #22402
This commit is contained in:
Roeland Jago Douma 2016-02-16 10:22:49 +01:00
parent 3837cb95fd
commit ed6843e87b
2 changed files with 15 additions and 42 deletions

View File

@ -455,18 +455,16 @@ class Manager implements IManager {
* Check if the user that is sharing can actually share
*
* @param \OCP\Share\IShare $share
* @return bool
* @throws \Exception
*/
protected function canShare(\OCP\Share\IShare $share) {
if (!$this->shareApiEnabled()) {
return false;
throw new \Exception('The share API is disabled');
}
if ($this->sharingDisabledForUser($share->getSharedBy())) {
return false;
throw new \Exception('You are not allowed to share');
}
return true;
}
/**
@ -479,9 +477,7 @@ class Manager implements IManager {
* TODO: handle link share permissions or check them
*/
public function createShare(\OCP\Share\IShare $share) {
if (!$this->canShare($share)) {
throw new \Exception('The Share API is disabled');
}
$this->canShare($share);
$this->generalCreateChecks($share);
@ -592,9 +588,7 @@ class Manager implements IManager {
public function updateShare(\OCP\Share\IShare $share) {
$expirationDateUpdated = false;
if (!$this->canShare($share)) {
throw new \Exception('The Share API is disabled');
}
$this->canShare($share);
try {
$originalShare = $this->getShareById($share->getFullId());

View File

@ -1404,28 +1404,21 @@ class ManagerTest extends \Test\TestCase {
->setMethods(['sharingDisabledForUser'])
->getMock();
$manager->method('sharingDisabledForUser')->willReturn($disabledForUser);
$manager->method('sharingDisabledForUser')
->with('user')
->willReturn($disabledForUser);
$user = $this->getMock('\OCP\IUser');
$share = $this->manager->newShare();
$share->setSharedBy('user');
$exception = false;
try {
$res = $this->invokePrivate($manager, 'canShare', [$share]);
$this->assertEquals($expected, $res);
} catch (\Exception $e) {
$exception = true;
}
/**
* @expectedException Exception
* @expectedExceptionMessage The Share API is disabled
*/
public function testCreateShareCantShare() {
$manager = $this->createManagerMock()
->setMethods(['canShare'])
->getMock();
$manager->expects($this->once())->method('canShare')->willReturn(false);
$share = $this->manager->newShare();
$manager->createShare($share);
$this->assertEquals($expected, !$exception);
}
public function testCreateShareUser() {
@ -1943,20 +1936,6 @@ 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 = $this->manager->newShare();
$manager->updateShare($share);
}
/**
* @expectedException Exception
* @expectedExceptionMessage Can't change share type