diff options
author | Julius Härtl <jus@bitgrid.net> | 2020-04-02 19:37:40 +0200 |
---|---|---|
committer | npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com> | 2020-04-11 06:36:20 +0000 |
commit | c20321e7e0e4c3d304ae7a56c609567b4a80ec55 (patch) | |
tree | 4df4ec04e59182e84d159473035b65b6c77a011b /apps/provisioning_api/tests | |
parent | 5252836f44c79d4aad86f4de46be028e68f728cf (diff) | |
download | nextcloud-server-c20321e7e0e4c3d304ae7a56c609567b4a80ec55.tar.gz nextcloud-server-c20321e7e0e4c3d304ae7a56c609567b4a80ec55.zip |
Add tests for encoded group id
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Signed-off-by: npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com>
Diffstat (limited to 'apps/provisioning_api/tests')
-rw-r--r-- | apps/provisioning_api/tests/Controller/GroupsControllerTest.php | 84 |
1 files changed, 74 insertions, 10 deletions
diff --git a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php index 0ed6d58e217..34bcdd4e645 100644 --- a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php +++ b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php @@ -75,13 +75,13 @@ class GroupsControllerTest extends \Test\TestCase { $this->userSession = $this->createMock(IUserSession::class); $this->accountManager = $this->createMock(AccountManager::class); $this->logger = $this->createMock(ILogger::class); - + $this->subAdminManager = $this->createMock(SubAdmin::class); $this->groupManager ->method('getSubAdmin') ->willReturn($this->subAdminManager); - + $this->api = $this->getMockBuilder(GroupsController::class) ->setConstructorArgs([ 'provisioning_api', @@ -256,7 +256,6 @@ class GroupsControllerTest extends \Test\TestCase { 'disabled' => 11, 'canAdd' => true, 'canRemove' => true - ] ]], $result->getData()); } @@ -285,7 +284,7 @@ class GroupsControllerTest extends \Test\TestCase { $this->assertEquals(['users' => ['user1', 'user2']], $result->getData()); } - + public function testGetGroupAsIrrelevantSubadmin() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionCode(403); @@ -330,7 +329,7 @@ class GroupsControllerTest extends \Test\TestCase { $this->assertEquals(['users' => ['user1', 'user2']], $result->getData()); } - + public function testGetGroupNonExisting() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionMessage('The requested group could not be found'); @@ -341,7 +340,7 @@ class GroupsControllerTest extends \Test\TestCase { $this->api->getGroup($this->getUniqueID()); } - + public function testGetSubAdminsOfGroupsNotExists() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionMessage('Group does not exist'); @@ -388,7 +387,7 @@ class GroupsControllerTest extends \Test\TestCase { $this->assertEquals([], $result->getData()); } - + public function testAddGroupEmptyGroup() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionMessage('Invalid group name'); @@ -397,7 +396,7 @@ class GroupsControllerTest extends \Test\TestCase { $this->api->addGroup(''); } - + public function testAddGroupExistingGroup() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionCode(102); @@ -438,7 +437,7 @@ class GroupsControllerTest extends \Test\TestCase { $this->api->addGroup('Iñtërnâtiônàlizætiøn'); } - + public function testDeleteGroupNonExisting() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionCode(101); @@ -446,7 +445,7 @@ class GroupsControllerTest extends \Test\TestCase { $this->api->deleteGroup('NonExistingGroup'); } - + public function testDeleteAdminGroup() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class); $this->expectExceptionCode(102); @@ -478,6 +477,25 @@ class GroupsControllerTest extends \Test\TestCase { $this->api->deleteGroup('ExistingGroup'); } + public function testDeleteGroupEncoding() { + $this->groupManager + ->method('groupExists') + ->with('ExistingGroup A/B') + ->willReturn('true'); + + $group = $this->createGroup('ExistingGroup'); + $this->groupManager + ->method('get') + ->with('ExistingGroup A/B') + ->willReturn($group); + $group + ->expects($this->once()) + ->method('delete') + ->willReturn(true); + + $this->api->deleteGroup(urlencode('ExistingGroup A/B')); + } + public function testGetGroupUsersDetails() { $gid = 'ncg1'; @@ -523,4 +541,50 @@ class GroupsControllerTest extends \Test\TestCase { $this->api->getGroupUsersDetails($gid); } + + public function testGetGroupUsersDetailsEncoded() { + $gid = 'Department A/B C/D'; + + $this->asAdmin(); + $this->useAccountManager(); + + $users = [ + 'ncu1' => $this->createUser('ncu1'), # regular + 'ncu2' => $this->createUser('ncu2'), # the zombie + ]; + $users['ncu2']->expects($this->atLeastOnce()) + ->method('getHome') + ->willThrowException(new NoUserException()); + + $this->userManager->expects($this->any()) + ->method('get') + ->willReturnCallback(function(string $uid) use ($users) { + return isset($users[$uid]) ? $users[$uid] : null; + }); + + $group = $this->createGroup($gid); + $group->expects($this->once()) + ->method('searchUsers') + ->with('', null, 0) + ->willReturn(array_values($users)); + + $this->groupManager + ->method('get') + ->with($gid) + ->willReturn($group); + $this->groupManager->expects($this->any()) + ->method('getUserGroups') + ->willReturn([$group]); + + /** @var \PHPUnit_Framework_MockObject_MockObject */ + $this->subAdminManager->expects($this->any()) + ->method('isSubAdminOfGroup') + ->willReturn(false); + $this->subAdminManager->expects($this->any()) + ->method('getSubAdminsGroups') + ->willReturn([]); + + + $this->api->getGroupUsersDetails(urlencode($gid)); + } } |