From be257bc9cc2330d0e67957525cb66646b346a850 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 11 Aug 2015 15:43:44 +0200 Subject: [PATCH] Add tests for "getUsers()" --- apps/files_sharing/api/sharees.php | 2 +- apps/files_sharing/tests/api/sharees.php | 255 +++++++++++++++++++---- 2 files changed, 219 insertions(+), 38 deletions(-) diff --git a/apps/files_sharing/api/sharees.php b/apps/files_sharing/api/sharees.php index 5dd0da55de..6853bd8a26 100644 --- a/apps/files_sharing/api/sharees.php +++ b/apps/files_sharing/api/sharees.php @@ -79,7 +79,7 @@ class Sharees { $users = []; if ($shareWithGroupOnly) { // Search in all the groups this user is part of - $userGroups = $this->groupManager->getUserGroupsIds($this->userSession->getUser()); + $userGroups = $this->groupManager->getUserGroupIds($this->userSession->getUser()); foreach ($userGroups as $userGroup) { $users = array_merge($users, $this->groupManager->displayNamesInGroup($userGroup, $search)); } diff --git a/apps/files_sharing/tests/api/sharees.php b/apps/files_sharing/tests/api/sharees.php index a9e3350ceb..30397ba867 100644 --- a/apps/files_sharing/tests/api/sharees.php +++ b/apps/files_sharing/tests/api/sharees.php @@ -1,50 +1,231 @@ + * + * @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 + * + */ + +namespace OCA\Files_Sharing\Tests\API; use OCA\Files_Sharing\API\Sharees; use OCA\Files_sharing\Tests\TestCase; class ShareesTest extends TestCase { + /** @var Sharees */ + protected $sharees; + + /** @var \OCP\IUserManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $userManager; + + /** @var \OCP\IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $groupManager; + + /** @var \OCP\IUserSession|\PHPUnit_Framework_MockObject_MockObject */ + protected $session; + + protected function setUp() { + parent::setUp(); + + $this->userManager = $this->getMockBuilder('OCP\IUserManager') + ->disableOriginalConstructor() + ->getMock(); + + $this->groupManager = $this->getMockBuilder('OCP\IGroupManager') + ->disableOriginalConstructor() + ->getMock(); + + $this->session = $this->getMockBuilder('OCP\IUserSession') + ->disableOriginalConstructor() + ->getMock(); + + $this->sharees = new Sharees( + $this->groupManager, + $this->userManager, + $this->getMockBuilder('OCP\Contacts\IManager')->disableOriginalConstructor()->getMock(), + $this->getMockBuilder('OCP\IAppConfig')->disableOriginalConstructor()->getMock(), + $this->session, + $this->getMockBuilder('OCP\IURLGenerator')->disableOriginalConstructor()->getMock() + ); + } + + protected function getUserMock($uid, $displayName) { + $user = $this->getMockBuilder('OCP\IUser') + ->disableOriginalConstructor() + ->getMock(); + + $user->expects($this->any()) + ->method('getUID') + ->willReturn($uid); + + $user->expects($this->any()) + ->method('getDisplayName') + ->willReturn($displayName); + + return $user; + } + + public function dataGetUsers() { + return [ + ['test', false, [], [], []], + ['test', true, [], [], []], + [ + 'test', + false, + [], + [ + $this->getUserMock('test1', 'Test One'), + ], + [ + ['label' => 'Test One', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], + ] + ], + [ + 'test', + false, + [], + [ + $this->getUserMock('test1', 'Test One'), + $this->getUserMock('test2', 'Test Two'), + ], + [ + ['label' => 'Test One', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], + ['label' => 'Test Two', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], + ] + ], + [ + 'test', + true, + ['abc', 'xyz'], + [ + ['abc', 'test', -1, 0, ['test1' => 'Test One']], + ['xyz', 'test', -1, 0, []], + ], + [ + ['label' => 'Test One', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], + ] + ], + [ + 'test', + true, + ['abc', 'xyz'], + [ + ['abc', 'test', -1, 0, [ + 'test1' => 'Test One', + 'test2' => 'Test Two', + ]], + ['xyz', 'test', -1, 0, [ + 'test1' => 'Test One', + 'test2' => 'Test Two', + ]], + ], + [ + ['label' => 'Test One', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], + ['label' => 'Test Two', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], + ] + ], + [ + 'test', + true, + ['abc', 'xyz'], + [ + ['abc', 'test', -1, 0, [ + 'test1' => 'Test One', + ]], + ['xyz', 'test', -1, 0, [ + 'test2' => 'Test Two', + ]], + ], + [ + ['label' => 'Test One', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test1']], + ['label' => 'Test Two', 'value' => ['shareType' => \OCP\Share::SHARE_TYPE_USER, 'shareWith' => 'test2']], + ] + ], + ]; + } /** - * Properly mock all injected elements + * @dataProvider dataGetUsers + * + * @param string $searchTerm + * @param bool $shareWithGroupOnly + * @param array $groupResponse + * @param array $userResponse + * @param array $expected */ - protected function setup() { + public function testGetUsers($searchTerm, $shareWithGroupOnly, $groupResponse, $userResponse, $expected) { + if (!$shareWithGroupOnly) { + $this->userManager->expects($this->once()) + ->method('searchDisplayName') + ->with($searchTerm) + ->willReturn($userResponse); + } else { + $this->session->expects($this->any()) + ->method('getUser') + ->willReturn($this->getUserMock('admin', 'Administrator')); + $this->groupManager->expects($this->once()) + ->method('getUserGroupIds') + ->with($this->anything()) + ->willReturn($groupResponse); + + $this->groupManager->expects($this->exactly(sizeof($groupResponse))) + ->method('displayNamesInGroup') + ->with($this->anything(), $searchTerm) + ->willReturnMap($userResponse); + } + + $users = $this->invokePrivate($this->sharees, 'getUsers', [$searchTerm, $shareWithGroupOnly]); + + $this->assertEquals($expected, $users); } - public function testArguments() { - - } - - public function testsOnlyUsers() { - - } - - public function testOnlyGroups() { - - } - - public function testRemoteAddress() { - - } - - public function testRemoteFromContacts() { - - } - - public function testAll() { - - } - - public function testSorting() { - - } - - public function testPagination() { - - } - - public function testShareWithinGroup() { - - } +// public function testArguments() { +// +// } +// +// public function testsOnlyUsers() { +// +// } +// +// public function testOnlyGroups() { +// +// } +// +// public function testRemoteAddress() { +// +// } +// +// public function testRemoteFromContacts() { +// +// } +// +// public function testAll() { +// +// } +// +// public function testSorting() { +// +// } +// +// public function testPagination() { +// +// } +// +// public function testShareWithinGroup() { +// +// } }