diff options
author | Lukas Reschke <lukas@owncloud.com> | 2016-04-13 00:49:09 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2016-04-13 00:49:09 +0200 |
commit | c0a6619f479588bc76d7f269681c9a136894e4b0 (patch) | |
tree | 20b2b7c521c0df02fbc6323c6d7437e638cf3bc0 | |
parent | e9a9af3493caa7e839e18cda0c8ea2d8dd7bfd22 (diff) | |
parent | ef93ec8bc2a0a18d6fa26a2990913463b0861bc7 (diff) | |
download | nextcloud-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.php | 2 | ||||
-rw-r--r-- | tests/lib/share20/managertest.php | 40 |
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 */ |