Return groups displayname in provisioning api

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
John Molakvoæ (skjnldsv) 2018-03-17 14:47:47 +01:00
parent 3cac7911d5
commit 5f38cfbc80
No known key found for this signature in database
GPG Key ID: 60C25B8C072916CF
3 changed files with 59 additions and 0 deletions

View File

@ -34,6 +34,7 @@ return [
// Groups
['root' => '/cloud', 'name' => 'Groups#getGroups', 'url' => '/groups', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Groups#getGroupsDetails', 'url' => '/groups/details', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Groups#getGroup', 'url' => '/groups/{groupId}', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Groups#addGroup', 'url' => '/groups', 'verb' => 'POST'],
['root' => '/cloud', 'name' => 'Groups#deleteGroup', 'url' => '/groups/{groupId}', 'verb' => 'DELETE'],

View File

@ -96,6 +96,33 @@ class GroupsController extends OCSController {
return new DataResponse(['groups' => $groups]);
}
/**
* returns a list of groups details with ids and displaynames
*
* @NoAdminRequired
*
* @param string $search
* @param int $limit
* @param int $offset
* @return DataResponse
*/
public function getGroupsDetails(string $search = '', $limit = null, $offset = null): DataResponse {
if ($limit !== null) {
$limit = (int)$limit;
}
if ($offset !== null) {
$offset = (int)$offset;
}
$groups = $this->groupManager->search($search, $limit, $offset);
$groups = array_map(function($group) {
/** @var IGroup $group */
return ['id' => $group->getGID(), 'displayname' => $group->getDisplayName()];
}, $groups);
return new DataResponse(['groups' => $groups]);
}
/**
* returns an array of users in the group specified
*

View File

@ -85,6 +85,10 @@ class GroupsControllerTest extends \Test\TestCase {
$group
->method('getGID')
->willReturn($gid);
$group
->method('getDisplayName')
->willReturn($gid.'-name');
return $group;
}
@ -165,6 +169,33 @@ class GroupsControllerTest extends \Test\TestCase {
$result = $this->api->getGroups($search, $limit, $offset);
$this->assertEquals(['groups' => ['group1', 'group2']], $result->getData());
}
/**
* @dataProvider dataGetGroups
*
* @param string|null $search
* @param int|null $limit
* @param int|null $offset
*/
public function testGetGroupsDetails($search, $limit, $offset) {
$groups = [$this->createGroup('group1'), $this->createGroup('group2')];
$search = $search === null ? '' : $search;
$this->groupManager
->expects($this->once())
->method('search')
->with($search, $limit, $offset)
->willReturn($groups);
$result = $this->api->getGroupsDetails($search, $limit, $offset);
$this->assertEquals(['groups' => [
Array('id' => 'group1', 'displayname' => 'group1-name'),
Array('id' => 'group2', 'displayname' => 'group2-name')
]], $result->getData());
}
public function testGetGroupAsSubadmin() {