From f17ad1886527b7dc4d493a1012c2bb7945bbe80f Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Tue, 12 Apr 2016 17:26:09 +0200 Subject: set $share to null if getShareByToken() failed --- lib/private/Share20/Manager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 -- cgit v1.2.3 From ef93ec8bc2a0a18d6fa26a2990913463b0861bc7 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Tue, 12 Apr 2016 21:32:40 +0200 Subject: Add test --- tests/lib/share20/managertest.php | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) 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 */ -- cgit v1.2.3