summaryrefslogtreecommitdiffstats
path: root/tests/lib/share20
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@owncloud.com>2015-10-30 13:10:08 +0100
committerRoeland Jago Douma <rullzer@owncloud.com>2015-11-05 15:59:09 +0100
commit6624fa212a4627217c9c95771f7bb933baaddbc1 (patch)
treead1b76abd52b609dc41f40cdc05cc0b316d34038 /tests/lib/share20
parent8b5179459afe1a7355e48f60545bcb76f1cf4699 (diff)
downloadnextcloud-server-6624fa212a4627217c9c95771f7bb933baaddbc1.tar.gz
nextcloud-server-6624fa212a4627217c9c95771f7bb933baaddbc1.zip
The new sharing code now handles deletion
OCS -> ShareManager -> DefaultShareProvider
Diffstat (limited to 'tests/lib/share20')
-rw-r--r--tests/lib/share20/defaultshareprovidertest.php543
-rw-r--r--tests/lib/share20/managertest.php198
2 files changed, 741 insertions, 0 deletions
diff --git a/tests/lib/share20/defaultshareprovidertest.php b/tests/lib/share20/defaultshareprovidertest.php
new file mode 100644
index 00000000000..bf8306bf26c
--- /dev/null
+++ b/tests/lib/share20/defaultshareprovidertest.php
@@ -0,0 +1,543 @@
+<?php
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+namespace Test\Share20;
+
+use OCP\IDBConnection;
+use OCP\IUserManager;
+use OCP\IGroupManager;
+use OCP\Files\Folder;
+use OC\Share20\DefaultShareProvider;
+
+class DefaultShareProviderTest extends \Test\TestCase {
+
+ /** @var IDBConnection */
+ protected $dbConn;
+
+ /** @var IUserManager */
+ protected $userManager;
+
+ /** @var IGroupManager */
+ protected $groupManager;
+
+ /** @var Folder */
+ protected $userFolder;
+
+ /** @var DefaultShareProvider */
+ protected $provider;
+
+ public function setUp() {
+ $this->dbConn = \OC::$server->getDatabaseConnection();
+ $this->userManager = $this->getMock('OCP\IUserManager');
+ $this->groupManager = $this->getMock('OCP\IGroupManager');
+ $this->userFolder = $this->getMock('OCP\Files\Folder');
+
+ //Empty share table
+ $this->dbConn->getQueryBuilder()->delete('share')->execute();
+
+ $this->provider = new DefaultShareProvider(
+ $this->dbConn,
+ $this->userManager,
+ $this->groupManager,
+ $this->userFolder
+ );
+ }
+
+ public function tearDown() {
+ $this->dbConn->getQueryBuilder()->delete('share')->execute();
+ }
+
+ /**
+ * @expectedException OC\Share20\Exception\ShareNotFound
+ */
+ public function testGetShareByIdNotExist() {
+ $this->provider->getShareById(1);
+ }
+
+ public function testGetShareByIdUserShare() {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(1),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ ]);
+ $qb->execute();
+
+ $storage = $this->getMock('OC\Files\Storage\Storage');
+ $storage
+ ->expects($this->once())
+ ->method('getOwner')
+ ->willReturn('shareOwner');
+ $path = $this->getMock('OCP\Files\Node');
+ $path
+ ->expects($this->once())
+ ->method('getStorage')
+ ->wilLReturn($storage);
+ $this->userFolder
+ ->expects($this->once())
+ ->method('getById')
+ ->with(42)
+ ->willReturn([$path]);
+
+ $sharedWith = $this->getMock('OCP\IUser');
+ $sharedBy = $this->getMock('OCP\IUser');
+ $shareOwner = $this->getMock('OCP\IUser');
+ $this->userManager
+ ->method('get')
+ ->will($this->returnValueMap([
+ ['sharedWith', $sharedWith],
+ ['sharedBy', $sharedBy],
+ ['shareOwner', $shareOwner],
+ ]));
+
+ $share = $this->provider->getShareById(1);
+
+ $this->assertEquals(1, $share->getId());
+ $this->assertEquals(\OCP\Share::SHARE_TYPE_USER, $share->getShareType());
+ $this->assertEquals($sharedWith, $share->getSharedWith());
+ $this->assertEquals($sharedBy, $share->getSharedBy());
+ $this->assertEquals($shareOwner, $share->getShareOwner());
+ $this->assertEquals($path, $share->getPath());
+ $this->assertEquals(13, $share->getPermissions());
+ $this->assertEquals(null, $share->getToken());
+ $this->assertEquals(null, $share->getExpirationDate());
+ }
+
+ public function testGetShareByIdGroupShare() {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(1),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_GROUP),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ ]);
+ $qb->execute();
+
+ $storage = $this->getMock('OC\Files\Storage\Storage');
+ $storage
+ ->expects($this->once())
+ ->method('getOwner')
+ ->willReturn('shareOwner');
+ $path = $this->getMock('OCP\Files\Node');
+ $path
+ ->expects($this->once())
+ ->method('getStorage')
+ ->wilLReturn($storage);
+ $this->userFolder
+ ->expects($this->once())
+ ->method('getById')
+ ->with(42)
+ ->willReturn([$path]);
+
+ $sharedWith = $this->getMock('OCP\IGroup');
+ $sharedBy = $this->getMock('OCP\IUser');
+ $shareOwner = $this->getMock('OCP\IUser');
+ $this->userManager
+ ->method('get')
+ ->will($this->returnValueMap([
+ ['sharedBy', $sharedBy],
+ ['shareOwner', $shareOwner],
+ ]));
+ $this->groupManager
+ ->expects($this->once())
+ ->method('get')
+ ->with('sharedWith')
+ ->willReturn($sharedWith);
+
+ $share = $this->provider->getShareById(1);
+
+ $this->assertEquals(1, $share->getId());
+ $this->assertEquals(\OCP\Share::SHARE_TYPE_GROUP, $share->getShareType());
+ $this->assertEquals($sharedWith, $share->getSharedWith());
+ $this->assertEquals($sharedBy, $share->getSharedBy());
+ $this->assertEquals($shareOwner, $share->getShareOwner());
+ $this->assertEquals($path, $share->getPath());
+ $this->assertEquals(13, $share->getPermissions());
+ $this->assertEquals(null, $share->getToken());
+ $this->assertEquals(null, $share->getExpirationDate());
+ }
+
+ public function testGetShareByIdLinkShare() {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(1),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ 'token' => $qb->expr()->literal('token'),
+ 'expiration' => $qb->expr()->literal('2000-01-02 00:00:00'),
+ ]);
+ $qb->execute();
+
+ $storage = $this->getMock('OC\Files\Storage\Storage');
+ $storage
+ ->expects($this->once())
+ ->method('getOwner')
+ ->willReturn('shareOwner');
+ $path = $this->getMock('OCP\Files\Node');
+ $path
+ ->expects($this->once())
+ ->method('getStorage')
+ ->wilLReturn($storage);
+ $this->userFolder
+ ->expects($this->once())
+ ->method('getById')
+ ->with(42)
+ ->willReturn([$path]);
+
+ $sharedBy = $this->getMock('OCP\IUser');
+ $shareOwner = $this->getMock('OCP\IUser');
+ $this->userManager
+ ->method('get')
+ ->will($this->returnValueMap([
+ ['sharedBy', $sharedBy],
+ ['shareOwner', $shareOwner],
+ ]));
+
+ $share = $this->provider->getShareById(1);
+
+ $this->assertEquals(1, $share->getId());
+ $this->assertEquals(\OCP\Share::SHARE_TYPE_LINK, $share->getShareType());
+ $this->assertEquals('sharedWith', $share->getSharedWith());
+ $this->assertEquals($sharedBy, $share->getSharedBy());
+ $this->assertEquals($shareOwner, $share->getShareOwner());
+ $this->assertEquals($path, $share->getPath());
+ $this->assertEquals(13, $share->getPermissions());
+ $this->assertEquals('token', $share->getToken());
+ $this->assertEquals(\DateTime::createFromFormat('Y-m-d H:i:s', '2000-01-02 00:00:00'), $share->getExpirationDate());
+ }
+
+ public function testGetShareByIdRemoteShare() {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(1),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_REMOTE),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ ]);
+ $qb->execute();
+
+ $storage = $this->getMock('OC\Files\Storage\Storage');
+ $storage
+ ->expects($this->once())
+ ->method('getOwner')
+ ->willReturn('shareOwner');
+ $path = $this->getMock('OCP\Files\Node');
+ $path
+ ->expects($this->once())
+ ->method('getStorage')
+ ->wilLReturn($storage);
+ $this->userFolder
+ ->expects($this->once())
+ ->method('getById')
+ ->with(42)
+ ->willReturn([$path]);
+
+ $sharedBy = $this->getMock('OCP\IUser');
+ $shareOwner = $this->getMock('OCP\IUser');
+ $this->userManager
+ ->method('get')
+ ->will($this->returnValueMap([
+ ['sharedBy', $sharedBy],
+ ['shareOwner', $shareOwner],
+ ]));
+
+ $share = $this->provider->getShareById(1);
+
+ $this->assertEquals(1, $share->getId());
+ $this->assertEquals(\OCP\Share::SHARE_TYPE_REMOTE, $share->getShareType());
+ $this->assertEquals('sharedWith', $share->getSharedWith());
+ $this->assertEquals($sharedBy, $share->getSharedBy());
+ $this->assertEquals($shareOwner, $share->getShareOwner());
+ $this->assertEquals($path, $share->getPath());
+ $this->assertEquals(13, $share->getPermissions());
+ $this->assertEquals(null, $share->getToken());
+ $this->assertEquals(null, $share->getExpirationDate());
+ }
+
+ public function testDeleteSingleShare() {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(1),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ ]);
+ $qb->execute();
+
+ $storage = $this->getMock('OC\Files\Storage\Storage');
+ $storage
+ ->expects($this->once())
+ ->method('getOwner')
+ ->willReturn('shareOwner');
+ $path = $this->getMock('OCP\Files\Node');
+ $path
+ ->expects($this->once())
+ ->method('getStorage')
+ ->wilLReturn($storage);
+ $this->userFolder
+ ->expects($this->once())
+ ->method('getById')
+ ->with(42)
+ ->willReturn([$path]);
+
+ $sharedWith = $this->getMock('OCP\IUser');
+ $sharedBy = $this->getMock('OCP\IUser');
+ $shareOwner = $this->getMock('OCP\IUser');
+ $this->userManager
+ ->method('get')
+ ->will($this->returnValueMap([
+ ['sharedWith', $sharedWith],
+ ['sharedBy', $sharedBy],
+ ['shareOwner', $shareOwner],
+ ]));
+
+ $share = $this->provider->getShareById(1);
+ $this->provider->delete($share);
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->select('*')
+ ->from('share');
+
+ $cursor = $qb->execute();
+ $result = $cursor->fetchAll();
+ $cursor->closeCursor();
+
+ $this->assertEmpty($result);
+ }
+
+ public function testDeleteSingleShareKeepOther() {
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(1),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ ]);
+ $qb->execute();
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(2),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ ]);
+ $qb->execute();
+
+
+ $storage = $this->getMock('OC\Files\Storage\Storage');
+ $storage
+ ->expects($this->once())
+ ->method('getOwner')
+ ->willReturn('shareOwner');
+ $path = $this->getMock('OCP\Files\Node');
+ $path
+ ->expects($this->once())
+ ->method('getStorage')
+ ->wilLReturn($storage);
+ $this->userFolder
+ ->expects($this->once())
+ ->method('getById')
+ ->with(42)
+ ->willReturn([$path]);
+
+ $sharedWith = $this->getMock('OCP\IUser');
+ $sharedBy = $this->getMock('OCP\IUser');
+ $shareOwner = $this->getMock('OCP\IUser');
+ $this->userManager
+ ->method('get')
+ ->will($this->returnValueMap([
+ ['sharedWith', $sharedWith],
+ ['sharedBy', $sharedBy],
+ ['shareOwner', $shareOwner],
+ ]));
+
+ $share = $this->provider->getShareById(1);
+ $this->provider->delete($share);
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->select('*')
+ ->from('share');
+
+ $cursor = $qb->execute();
+ $result = $cursor->fetchAll();
+ $cursor->closeCursor();
+
+ $this->assertCount(1, $result);
+ }
+
+ public function testDeleteNestedShares() {
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(1),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ 'share_with' => $qb->expr()->literal('sharedWith'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ ]);
+ $qb->execute();
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(2),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ 'share_with' => $qb->expr()->literal('sharedWith2'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy2'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ 'parent' => $qb->expr()->literal(1),
+ ]);
+ $qb->execute();
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->insert('share')
+ ->values([
+ 'id' => $qb->expr()->literal(3),
+ 'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER),
+ 'share_with' => $qb->expr()->literal('sharedWith2'),
+ 'uid_owner' => $qb->expr()->literal('sharedBy2'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'permissions' => $qb->expr()->literal(13),
+ 'parent' => $qb->expr()->literal(2),
+ ]);
+ $qb->execute();
+
+
+ $storage = $this->getMock('OC\Files\Storage\Storage');
+ $storage
+ ->expects($this->exactly(3))
+ ->method('getOwner')
+ ->willReturn('shareOwner');
+ $path = $this->getMock('OCP\Files\Node');
+ $path
+ ->expects($this->exactly(3))
+ ->method('getStorage')
+ ->wilLReturn($storage);
+ $this->userFolder
+ ->expects($this->exactly(3))
+ ->method('getById')
+ ->with(42)
+ ->willReturn([$path]);
+
+ $sharedWith = $this->getMock('OCP\IUser');
+ $sharedBy = $this->getMock('OCP\IUser');
+ $shareOwner = $this->getMock('OCP\IUser');
+ $this->userManager
+ ->method('get')
+ ->will($this->returnValueMap([
+ ['sharedWith', $sharedWith],
+ ['sharedBy', $sharedBy],
+ ['shareOwner', $shareOwner],
+ ]));
+
+ $share = $this->provider->getShareById(1);
+ $this->provider->delete($share);
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->select('*')
+ ->from('share');
+
+ $cursor = $qb->execute();
+ $result = $cursor->fetchAll();
+ $cursor->closeCursor();
+
+ $this->assertEmpty($result);
+ }
+
+ /**
+ * @expectedException \OC\Share20\Exception\BackendError
+ */
+ public function testDeleteFails() {
+ $share = $this->getMock('OC\Share20\IShare');
+ $expr = $this->getMock('OCP\DB\QueryBuilder\IExpressionBuilder');
+ $qb = $this->getMock('OCP\DB\QueryBuilder\IQueryBuilder');
+ $qb->expects($this->once())
+ ->method('delete')
+ ->will($this->returnSelf());
+ $qb->expects($this->once())
+ ->method('expr')
+ ->willReturn($expr);
+ $qb->expects($this->once())
+ ->method('where')
+ ->will($this->returnSelf());
+ $qb->expects($this->once())
+ ->method('setParameter')
+ ->will($this->returnSelf());
+ $qb->expects($this->once())
+ ->method('execute')
+ ->will($this->throwException(new \Exception));
+
+ $db = $this->getMock('OCP\IDBConnection');
+ $db->expects($this->once())
+ ->method('getQueryBuilder')
+ ->with()
+ ->willReturn($qb);
+
+ $provider = $this->getMockBuilder('OC\Share20\DefaultShareProvider')
+ ->setConstructorArgs([
+ $db,
+ $this->userManager,
+ $this->groupManager,
+ $this->userFolder,
+ ]
+ )
+ ->setMethods(['deleteChildren'])
+ ->getMock();
+ $provider
+ ->expects($this->once())
+ ->method('deleteChildren')
+ ->with($share);
+
+
+ $provider->delete($share);
+ }
+
+}
diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php
new file mode 100644
index 00000000000..fc6c30692f5
--- /dev/null
+++ b/tests/lib/share20/managertest.php
@@ -0,0 +1,198 @@
+<?php
+/**
+ * @author Roeland Jago Douma <rullzer@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+namespace Test\Share20;
+
+use OC\Share20\Manager;
+use OC\Share20\Exception;
+
+
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\IGroupManager;
+use OCP\ILogger;
+use OCP\IAppConfig;
+use OCP\Files\Folder;
+use OCP\Share20\IShareProvider;
+
+class ManagerTest extends \Test\TestCase {
+
+ /** @var Manager */
+ protected $manager;
+
+ /** @var IUser */
+ protected $user;
+
+ /** @var IUserManager */
+ protected $userManager;
+
+ /** @var IGroupManager */
+ protected $groupManager;
+
+ /** @var ILogger */
+ protected $logger;
+
+ /** @var IAppConfig */
+ protected $appConfig;
+
+ /** @var Folder */
+ protected $userFolder;
+
+ /** @var IShareProvider */
+ protected $defaultProvider;
+
+ public function setUp() {
+
+ $this->user = $this->getMock('\OCP\IUser');
+ $this->userManager = $this->getMock('\OCP\IUserManager');
+ $this->groupManager = $this->getMock('\OCP\IGroupManager');
+ $this->logger = $this->getMock('\OCP\ILogger');
+ $this->appConfig = $this->getMock('\OCP\IAppConfig');
+ $this->userFolder = $this->getMock('\OCP\Files\Folder');
+ $this->defaultProvider = $this->getMock('\OC\Share20\IShareProvider');
+
+ $this->manager = new Manager(
+ $this->user,
+ $this->userManager,
+ $this->groupManager,
+ $this->logger,
+ $this->appConfig,
+ $this->userFolder,
+ $this->defaultProvider
+ );
+ }
+
+ /**
+ * @expectedException OC\Share20\Exception\ShareNotFound
+ */
+ public function testDeleteNoShareId() {
+ $share = $this->getMock('\OC\Share20\IShare');
+
+ $share
+ ->expects($this->once())
+ ->method('getId')
+ ->with()
+ ->willReturn(null);
+
+ $this->manager->deleteShare($share);
+ }
+
+ public function testDelete() {
+ $share = $this->getMock('\OC\Share20\IShare');
+
+ $share
+ ->expects($this->once())
+ ->method('getId')
+ ->with()
+ ->willReturn(42);
+ $this->defaultProvider
+ ->expects($this->once())
+ ->method('delete')
+ ->with($share);
+
+ $this->manager->deleteShare($share);
+ }
+
+ /**
+ * @expectedException OC\Share20\Exception\ShareNotFound
+ */
+ public function testGetShareByIdNotFoundInBackend() {
+ $this->defaultProvider
+ ->expects($this->once())
+ ->method('getShareById')
+ ->with(42)
+ ->will($this->throwException(new \OC\Share20\Exception\ShareNotFound()));
+
+ $this->manager->getShareById(42);
+ }
+
+ /**
+ * @expectedException OC\Share20\Exception\ShareNotFound
+ */
+ public function testGetShareByIdNotAuthorized() {
+ $otherUser1 = $this->getMock('\OCP\IUser');
+ $otherUser2 = $this->getMock('\OCP\IUser');
+ $otherUser3 = $this->getMock('\OCP\IUser');
+
+ $share = $this->getMock('\OC\Share20\IShare');
+ $share
+ ->expects($this->once())
+ ->method('getSharedWith')
+ ->with()
+ ->willReturn($otherUser1);
+ $share
+ ->expects($this->once())
+ ->method('getSharedBy')
+ ->with()
+ ->willReturn($otherUser2);
+ $share
+ ->expects($this->once())
+ ->method('getShareOwner')
+ ->with()
+ ->willReturn($otherUser3);
+
+ $this->defaultProvider
+ ->expects($this->once())
+ ->method('getShareById')
+ ->with(42)
+ ->willReturn($share);
+
+ $this->manager->getShareById(42);
+ }
+
+ public function dataGetShareById() {
+ return [
+ ['getSharedWith'],
+ ['getSharedBy'],
+ ['getShareOwner'],
+ ];
+ }
+
+ /**
+ * @dataProvider dataGetShareById
+ */
+ public function testGetShareById($currentUserIs) {
+ $otherUser1 = $this->getMock('\OCP\IUser');
+ $otherUser2 = $this->getMock('\OCP\IUser');
+ $otherUser3 = $this->getMock('\OCP\IUser');
+
+ $share = $this->getMock('\OC\Share20\IShare');
+ $share
+ ->method('getSharedWith')
+ ->with()
+ ->willReturn($currentUserIs === 'getSharedWith' ? $this->user : $otherUser1);
+ $share
+ ->method('getSharedBy')
+ ->with()
+ ->willReturn($currentUserIs === 'getSharedBy' ? $this->user : $otherUser2);
+ $share
+ ->method('getShareOwner')
+ ->with()
+ ->willReturn($currentUserIs === 'getShareOwner' ? $this->user : $otherUser3);
+
+ $this->defaultProvider
+ ->expects($this->once())
+ ->method('getShareById')
+ ->with(42)
+ ->willReturn($share);
+
+ $this->assertEquals($share, $this->manager->getShareById(42));
+ }
+}