From 2ca8339d012773e3906244f7b039e5bd72920c5f Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Thu, 9 Feb 2017 16:12:57 +0100 Subject: [PATCH] add groups to user info output Signed-off-by: Bjoern Schiessle --- .../lib/Controller/UsersController.php | 6 ++++ .../tests/Controller/UsersControllerTest.php | 33 +++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 1e8a767b33..766775dfdb 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -252,6 +252,11 @@ class UsersController extends OCSController { } $userAccount = $this->accountManager->getUser($targetUserObject); + $groups = $this->groupManager->getUserGroups($targetUserObject); + $gids = []; + foreach ($groups as $group) { + $gids[] = $group->getDisplayName(); + } // Find the data $data['id'] = $targetUserObject->getUID(); @@ -262,6 +267,7 @@ class UsersController extends OCSController { $data['address'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_ADDRESS]['value']; $data['webpage'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_WEBSITE]['value']; $data['twitter'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_TWITTER]['value']; + $data['groups'] = $gids; return $data; } diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index a3e5bf6fde..a049b15bf0 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -635,6 +635,9 @@ class UsersControllerTest extends OriginalTest { } public function testGetUserDataAsAdmin() { + $group = $this->getMockBuilder(IGroup::class) + ->disableOriginalConstructor() + ->getMock(); $loggedInUser = $this->getMockBuilder('OCP\IUser') ->disableOriginalConstructor() ->getMock(); @@ -662,6 +665,19 @@ class UsersControllerTest extends OriginalTest { ->method('isAdmin') ->with('admin') ->will($this->returnValue(true)); + $this->groupManager + ->expects($this->any()) + ->method('getUserGroups') + ->willReturn([$group, $group, $group]); + $group->expects($this->at(0)) + ->method('getDisplayName') + ->willReturn('group0'); + $group->expects($this->at(1)) + ->method('getDisplayName') + ->willReturn('group1'); + $group->expects($this->at(2)) + ->method('getDisplayName') + ->willReturn('group2'); $this->accountManager->expects($this->any())->method('getUser') ->with($targetUser) ->willReturn( @@ -700,7 +716,8 @@ class UsersControllerTest extends OriginalTest { 'phone' => 'phone', 'address' => 'address', 'webpage' => 'website', - 'twitter' => 'twitter' + 'twitter' => 'twitter', + 'groups' => ['group0', 'group1', 'group2'] ]; $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet'])); } @@ -734,6 +751,10 @@ class UsersControllerTest extends OriginalTest { ->method('isAdmin') ->with('subadmin') ->will($this->returnValue(false)); + $this->groupManager + ->expects($this->any()) + ->method('getUserGroups') + ->willReturn([]); $subAdminManager = $this->getMockBuilder('OC\SubAdmin') ->disableOriginalConstructor() ->getMock(); @@ -784,7 +805,8 @@ class UsersControllerTest extends OriginalTest { 'phone' => 'phone', 'address' => 'address', 'webpage' => 'website', - 'twitter' => 'twitter' + 'twitter' => 'twitter', + 'groups' => [] ]; $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet'])); } @@ -872,6 +894,10 @@ class UsersControllerTest extends OriginalTest { ->expects($this->once()) ->method('getSubAdmin') ->will($this->returnValue($subAdminManager)); + $this->groupManager + ->expects($this->any()) + ->method('getUserGroups') + ->willReturn([]); $this->api ->expects($this->once()) ->method('fillStorageInfo') @@ -908,7 +934,8 @@ class UsersControllerTest extends OriginalTest { 'phone' => 'phone', 'address' => 'address', 'webpage' => 'website', - 'twitter' => 'twitter' + 'twitter' => 'twitter', + 'groups' => [] ]; $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['subadmin'])); }