Merge pull request #3272 from nextcloud/fix_user_controller

make sure that 'getCurrentUser' gets an array in order to manipulate the data to match the old API
This commit is contained in:
Lukas Reschke 2017-01-26 18:37:36 +01:00 committed by GitHub
commit dd0d469833
2 changed files with 83 additions and 36 deletions

View File

@ -194,6 +194,42 @@ class UsersController extends OCSController {
* @throws OCSException
*/
public function getUser($userId) {
$data = $this->getUserData($userId);
return new DataResponse($data);
}
/**
* @NoAdminRequired
* @NoSubAdminRequired
*
* gets user info from the currently logged in user
*
* @return DataResponse
* @throws OCSException
*/
public function getCurrentUser() {
$user = $this->userSession->getUser();
if ($user) {
$data = $this->getUserData($user->getUID());
// rename "displayname" to "display-name" only for this call to keep
// the API stable.
$data['display-name'] = $data['displayname'];
unset($data['displayname']);
return new DataResponse($data);
}
throw new OCSException('', \OCP\API::RESPOND_UNAUTHORISED);
}
/**
* creates a array with all user data
*
* @param $userId
* @return array
* @throws OCSException
*/
protected function getUserData($userId) {
$currentLoggedInUser = $this->userSession->getUser();
$data = [];
@ -227,31 +263,7 @@ class UsersController extends OCSController {
$data['webpage'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_WEBSITE]['value'];
$data['twitter'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_TWITTER]['value'];
return new DataResponse($data);
}
/**
* @NoAdminRequired
* @NoSubAdminRequired
*
* gets user info from the currently logged in user
*
* @return DataResponse
* @throws OCSException
*/
public function getCurrentUser() {
$user = $this->userSession->getUser();
if ($user) {
$result = $this->getUser($user->getUID());
// rename "displayname" to "display-name" only for this call to keep
// the API stable.
$result['display-name'] = $result['displayname'];
unset($result['displayname']);
return $result;
}
throw new OCSException('', \OCP\API::RESPOND_UNAUTHORISED);
return $data;
}
/**

View File

@ -634,7 +634,7 @@ class UsersControllerTest extends OriginalTest {
$this->api->getUser('UserToGet');
}
public function testGetUserAsAdmin() {
public function testGetUserDataAsAdmin() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@ -702,10 +702,10 @@ class UsersControllerTest extends OriginalTest {
'webpage' => 'website',
'twitter' => 'twitter'
];
$this->assertEquals($expected, $this->api->getUser('UserToGet')->getData());
$this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet']));
}
public function testGetUserAsSubAdminAndUserIsAccessible() {
public function testGetUserDataAsSubAdminAndUserIsAccessible() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@ -786,7 +786,7 @@ class UsersControllerTest extends OriginalTest {
'webpage' => 'website',
'twitter' => 'twitter'
];
$this->assertEquals($expected, $this->api->getUser('UserToGet')->getData());
$this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet']));
}
@ -794,7 +794,7 @@ class UsersControllerTest extends OriginalTest {
* @expectedException \OCP\AppFramework\OCS\OCSException
* @expectedExceptionCode 997
*/
public function testGetUserAsSubAdminAndUserIsNotAccessible() {
public function testGetUserDataAsSubAdminAndUserIsNotAccessible() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@ -832,10 +832,10 @@ class UsersControllerTest extends OriginalTest {
->method('getSubAdmin')
->will($this->returnValue($subAdminManager));
$this->api->getUser('UserToGet');
$this->invokePrivate($this->api, 'getUserData', ['UserToGet']);
}
public function testGetUserAsSubAdminSelfLookup() {
public function testGetUserDataAsSubAdminSelfLookup() {
$loggedInUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()
->getMock();
@ -910,7 +910,7 @@ class UsersControllerTest extends OriginalTest {
'webpage' => 'website',
'twitter' => 'twitter'
];
$this->assertEquals($expected, $this->api->getUser('subadmin')->getData());
$this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['subadmin']));
}
public function testEditUserRegularUserSelfEditChangeDisplayName() {
@ -2573,10 +2573,10 @@ class UsersControllerTest extends OriginalTest {
$this->accountManager,
$this->logger,
])
->setMethods(['getUser'])
->setMethods(['getUserData'])
->getMock();
$api->expects($this->once())->method('getUser')->with('UID')
$api->expects($this->once())->method('getUserData')->with('UID')
->willReturn(
[
'id' => 'UID',
@ -2603,7 +2603,7 @@ class UsersControllerTest extends OriginalTest {
'display-name' => 'Demo User'
];
$this->assertSame($expected, $api->getCurrentUser());
$this->assertSame($expected, $api->getCurrentUser()->getData());
}
/**
@ -2618,4 +2618,39 @@ class UsersControllerTest extends OriginalTest {
}
public function testGetUser() {
/** @var UsersController | PHPUnit_Framework_MockObject_MockObject $api */
$api = $this->getMockBuilder('OCA\Provisioning_API\Controller\UsersController')
->setConstructorArgs([
'provisioning_api',
$this->request,
$this->userManager,
$this->config,
$this->groupManager,
$this->userSession,
$this->accountManager,
$this->logger,
])
->setMethods(['getUserData'])
->getMock();
$expected = [
'id' => 'UID',
'enabled' => 'true',
'quota' => ['DummyValue'],
'email' => 'demo@owncloud.org',
'phone' => 'phone',
'address' => 'address',
'webpage' => 'website',
'twitter' => 'twitter',
'displayname' => 'Demo User'
];
$api->expects($this->once())->method('getUserData')
->with('uid')
->willReturn($expected);
$this->assertSame($expected, $api->getUser('uid')->getData());
}
}