summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2016-04-13 00:49:09 +0200
committerLukas Reschke <lukas@owncloud.com>2016-04-13 00:49:09 +0200
commitc0a6619f479588bc76d7f269681c9a136894e4b0 (patch)
tree20b2b7c521c0df02fbc6323c6d7437e638cf3bc0
parente9a9af3493caa7e839e18cda0c8ea2d8dd7bfd22 (diff)
parentef93ec8bc2a0a18d6fa26a2990913463b0861bc7 (diff)
downloadnextcloud-server-c0a6619f479588bc76d7f269681c9a136894e4b0.tar.gz
nextcloud-server-c0a6619f479588bc76d7f269681c9a136894e4b0.zip
Merge pull request #23953 from owncloud/small_share_manager_fix
set $share to null if getShareByToken() failed
-rw-r--r--lib/private/Share20/Manager.php2
-rw-r--r--tests/lib/share20/managertest.php40
2 files changed, 41 insertions, 1 deletions
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index af846b9283c..6f2efe167d4 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -979,7 +979,7 @@ class Manager implements IManager {
try {
$share = $provider->getShareByToken($token);
} catch (ShareNotFound $e) {
- //Ignore
+ $share = null;
}
// If it is not a link share try to fetch a federated share by token
diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php
index d173f86f091..197fa874388 100644
--- a/tests/lib/share20/managertest.php
+++ b/tests/lib/share20/managertest.php
@@ -2042,6 +2042,46 @@ class ManagerTest extends \Test\TestCase {
$this->assertSame($share, $ret);
}
+ public function testGetShareByTokenWithException() {
+ $factory = $this->getMock('\OCP\Share\IProviderFactory');
+
+ $manager = new Manager(
+ $this->logger,
+ $this->config,
+ $this->secureRandom,
+ $this->hasher,
+ $this->mountManager,
+ $this->groupManager,
+ $this->l,
+ $factory,
+ $this->userManager,
+ $this->rootFolder
+ );
+
+ $share = $this->getMock('\OCP\Share\IShare');
+
+ $factory->expects($this->at(0))
+ ->method('getProviderForType')
+ ->with(\OCP\Share::SHARE_TYPE_LINK)
+ ->willReturn($this->defaultProvider);
+ $factory->expects($this->at(1))
+ ->method('getProviderForType')
+ ->with(\OCP\Share::SHARE_TYPE_REMOTE)
+ ->willReturn($this->defaultProvider);
+
+ $this->defaultProvider->expects($this->at(0))
+ ->method('getShareByToken')
+ ->with('token')
+ ->will($this->throwException(new ShareNotFound()));
+ $this->defaultProvider->expects($this->at(1))
+ ->method('getShareByToken')
+ ->with('token')
+ ->willReturn($share);
+
+ $ret = $manager->getShareByToken('token');
+ $this->assertSame($share, $ret);
+ }
+
/**
* @expectedException \OCP\Share\Exceptions\ShareNotFound
*/