diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2015-08-11 15:43:44 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2015-08-26 11:54:24 +0200 |
commit | be257bc9cc2330d0e67957525cb66646b346a850 (patch) | |
tree | e709fc8eaaf9d94b9ed49eb87598ebf5810497d3 /apps/files_sharing/tests | |
parent | 9b0058d2b0c2137329491adbbf239b72f26f1637 (diff) | |
download | nextcloud-server-be257bc9cc2330d0e67957525cb66646b346a850.tar.gz nextcloud-server-be257bc9cc2330d0e67957525cb66646b346a850.zip |
Add tests for "getUsers()"
Diffstat (limited to 'apps/files_sharing/tests')
-rw-r--r-- | apps/files_sharing/tests/api/sharees.php | 229 |
1 files changed, 205 insertions, 24 deletions
diff --git a/apps/files_sharing/tests/api/sharees.php b/apps/files_sharing/tests/api/sharees.php index a9e3350ceb3..30397ba8678 100644 --- a/apps/files_sharing/tests/api/sharees.php +++ b/apps/files_sharing/tests/api/sharees.php @@ -1,50 +1,231 @@ <?php +/** + * @author Joas Schilling <nickvergessen@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 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; - /** - * Properly mock all injected elements - */ - protected function setup() { + /** @var \OCP\IUserManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $userManager; - } + /** @var \OCP\IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ + protected $groupManager; - public function testArguments() { + /** @var \OCP\IUserSession|\PHPUnit_Framework_MockObject_MockObject */ + protected $session; - } + protected function setUp() { + parent::setUp(); - public function testsOnlyUsers() { + $this->userManager = $this->getMockBuilder('OCP\IUserManager') + ->disableOriginalConstructor() + ->getMock(); - } + $this->groupManager = $this->getMockBuilder('OCP\IGroupManager') + ->disableOriginalConstructor() + ->getMock(); - public function testOnlyGroups() { + $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() + ); } - public function testRemoteAddress() { + protected function getUserMock($uid, $displayName) { + $user = $this->getMockBuilder('OCP\IUser') + ->disableOriginalConstructor() + ->getMock(); - } + $user->expects($this->any()) + ->method('getUID') + ->willReturn($uid); - public function testRemoteFromContacts() { + $user->expects($this->any()) + ->method('getDisplayName') + ->willReturn($displayName); + return $user; } - public function testAll() { - + 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']], + ] + ], + ]; } - public function testSorting() { - - } - - public function testPagination() { - + /** + * @dataProvider dataGetUsers + * + * @param string $searchTerm + * @param bool $shareWithGroupOnly + * @param array $groupResponse + * @param array $userResponse + * @param array $expected + */ + 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 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() { +// +// } } |