Fix exception handling when profile data is too long

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/32799/head
Joas Schilling 2 years ago
parent 0523626b98
commit 3235785c24
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
  1. 6
      apps/provisioning_api/lib/Controller/UsersController.php
  2. 54
      apps/provisioning_api/tests/Controller/UsersControllerTest.php
  3. 2
      lib/private/Accounts/AccountManager.php

@ -958,7 +958,11 @@ class UsersController extends AUserData {
} catch (PropertyDoesNotExistException $e) {
$userAccount->setProperty($key, $value, IAccountManager::SCOPE_PRIVATE, IAccountManager::NOT_VERIFIED);
}
$this->accountManager->updateAccount($userAccount);
try {
$this->accountManager->updateAccount($userAccount);
} catch (InvalidArgumentException $e) {
throw new OCSException('Invalid ' . $e->getMessage(), 102);
}
break;
case IAccountManager::PROPERTY_PROFILE_ENABLED:
$userAccount = $this->accountManager->getAccount($targetUser);

@ -939,9 +939,10 @@ class UsersControllerTest extends TestCase {
}
public function testGetUserDataAsAdmin() {
$group = $this->getMockBuilder(IGroup::class)
->disableOriginalConstructor()
->getMock();
$group0 = $this->createMock(IGroup::class);
$group1 = $this->createMock(IGroup::class);
$group2 = $this->createMock(IGroup::class);
$group3 = $this->createMock(IGroup::class);
$loggedInUser = $this->getMockBuilder(IUser::class)
->disableOriginalConstructor()
->getMock();
@ -975,7 +976,7 @@ class UsersControllerTest extends TestCase {
$this->groupManager
->expects($this->any())
->method('getUserGroups')
->willReturn([$group, $group, $group]);
->willReturn([$group0, $group1, $group2]);
$this->groupManager
->expects($this->once())
->method('getSubAdmin')
@ -983,17 +984,17 @@ class UsersControllerTest extends TestCase {
$subAdminManager
->expects($this->once())
->method('getSubAdminsGroups')
->willReturn([$group]);
$group->expects($this->at(0))
->willReturn([$group3]);
$group0->expects($this->once())
->method('getGID')
->willReturn('group0');
$group->expects($this->at(1))
$group1->expects($this->once())
->method('getGID')
->willReturn('group1');
$group->expects($this->at(2))
$group2->expects($this->once())
->method('getGID')
->willReturn('group2');
$group->expects($this->at(3))
$group3->expects($this->once())
->method('getGID')
->willReturn('group3');
@ -1009,10 +1010,10 @@ class UsersControllerTest extends TestCase {
IAccountManager::PROPERTY_PROFILE_ENABLED => ['value' => '1'],
]);
$this->config
->expects($this->at(0))
->method('getUserValue')
->with('UID', 'core', 'enabled', 'true')
->willReturn('true');
->willReturnMap([
['UID', 'core', 'enabled', 'true', 'true'],
]);
$this->api
->expects($this->once())
->method('fillStorageInfo')
@ -1136,10 +1137,10 @@ class UsersControllerTest extends TestCase {
->method('getSubAdmin')
->willReturn($subAdminManager);
$this->config
->expects($this->at(0))
->method('getUserValue')
->with('UID', 'core', 'enabled', 'true')
->willReturn('true');
->willReturnMap([
['UID', 'core', 'enabled', 'true', 'true'],
]);
$this->api
->expects($this->once())
->method('fillStorageInfo')
@ -3622,11 +3623,12 @@ class UsersControllerTest extends TestCase {
'profile_enabled' => '1'
];
$api->expects($this->at(0))->method('getUserData')
->with('uid', false)
->willReturn($expected);
$api->expects($this->at(1))->method('getUserData')
->with('currentuser', true)
$api->expects($this->exactly(2))
->method('getUserData')
->withConsecutive(
['uid', false],
['currentuser', true],
)
->willReturn($expected);
$this->assertSame($expected, $api->getUser('uid')->getData());
@ -3812,11 +3814,11 @@ class UsersControllerTest extends TestCase {
->willReturn('abc@example.org');
$emailTemplate = $this->createMock(IEMailTemplate::class);
$this->newUserMailHelper
->expects($this->at(0))
->expects($this->once())
->method('generateTemplate')
->willReturn($emailTemplate);
$this->newUserMailHelper
->expects($this->at(1))
->expects($this->once())
->method('sendMail')
->with($targetUser, $emailTemplate);
@ -3863,11 +3865,11 @@ class UsersControllerTest extends TestCase {
->getMock();
$emailTemplate = $this->createMock(IEMailTemplate::class);
$this->newUserMailHelper
->expects($this->at(0))
->expects($this->once())
->method('generateTemplate')
->willReturn($emailTemplate);
$this->newUserMailHelper
->expects($this->at(1))
->expects($this->once())
->method('sendMail')
->with($targetUser, $emailTemplate);
@ -3916,11 +3918,11 @@ class UsersControllerTest extends TestCase {
->willReturn('abc@example.org');
$emailTemplate = $this->createMock(IEMailTemplate::class);
$this->newUserMailHelper
->expects($this->at(0))
->expects($this->once())
->method('generateTemplate')
->willReturn($emailTemplate);
$this->newUserMailHelper
->expects($this->at(1))
->expects($this->once())
->method('sendMail')
->with($targetUser, $emailTemplate)
->willThrowException(new \Exception());

@ -220,7 +220,7 @@ class AccountManager implements IAccountManager {
foreach ($properties as $property) {
if (strlen($property->getValue()) > 2048) {
if ($throwOnData) {
throw new InvalidArgumentException();
throw new InvalidArgumentException($property->getName());
} else {
$property->setValue('');
}

Loading…
Cancel
Save