mirror of
https://github.com/nextcloud/server.git
synced 2026-04-21 14:23:17 -04:00
Merge pull request #47409 from nextcloud/followup/46991/allow-setting-new-configs
fix(provisioning): Support setting new app configs as well
This commit is contained in:
commit
0df3a46db2
2 changed files with 32 additions and 16 deletions
|
|
@ -15,6 +15,7 @@ use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
|||
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\AppFramework\OCSController;
|
||||
use OCP\Exceptions\AppConfigUnknownKeyException;
|
||||
use OCP\IAppConfig;
|
||||
use OCP\IGroupManager;
|
||||
use OCP\IL10N;
|
||||
|
|
@ -126,9 +127,15 @@ class AppConfigController extends OCSController {
|
|||
return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_FORBIDDEN);
|
||||
}
|
||||
|
||||
$configDetails = $this->appConfig->getDetails($app, $key);
|
||||
$type = null;
|
||||
try {
|
||||
$configDetails = $this->appConfig->getDetails($app, $key);
|
||||
$type = $configDetails['type'];
|
||||
} catch (AppConfigUnknownKeyException) {
|
||||
}
|
||||
|
||||
/** @psalm-suppress InternalMethod */
|
||||
match ($configDetails['type']) {
|
||||
match ($type) {
|
||||
IAppConfig::VALUE_BOOL => $this->appConfig->setValueBool($app, $key, (bool)$value),
|
||||
IAppConfig::VALUE_FLOAT => $this->appConfig->setValueFloat($app, $key, (float)$value),
|
||||
IAppConfig::VALUE_INT => $this->appConfig->setValueInt($app, $key, (int)$value),
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ use OC\AppConfig;
|
|||
use OCA\Provisioning_API\Controller\AppConfigController;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\Exceptions\AppConfigUnknownKeyException;
|
||||
use OCP\IAppConfig;
|
||||
use OCP\IGroupManager;
|
||||
use OCP\IL10N;
|
||||
|
|
@ -192,6 +193,7 @@ class AppConfigControllerTest extends TestCase {
|
|||
['app2', 'key', '42', null, null, Http::STATUS_OK, IAppConfig::VALUE_STRING],
|
||||
['app2', 'key', 'secret', null, null, Http::STATUS_OK, IAppConfig::VALUE_STRING | IAppConfig::VALUE_SENSITIVE],
|
||||
['app2', 'key', json_encode([4, 2]), null, null, Http::STATUS_OK, IAppConfig::VALUE_ARRAY],
|
||||
['app2', 'key', json_encode([4, 2]), null, null, Http::STATUS_OK, new AppConfigUnknownKeyException()],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -202,9 +204,9 @@ class AppConfigControllerTest extends TestCase {
|
|||
* @param string|null $value
|
||||
* @param \Exception|null $appThrows
|
||||
* @param \Exception|null $keyThrows
|
||||
* @param int $status
|
||||
* @param int|\Throwable $status
|
||||
*/
|
||||
public function testSetValue($app, $key, $value, $appThrows, $keyThrows, $status, int $type = IAppConfig::VALUE_MIXED) {
|
||||
public function testSetValue($app, $key, $value, $appThrows, $keyThrows, $status, int|\Throwable $type = IAppConfig::VALUE_MIXED) {
|
||||
$adminUser = $this->createMock(IUser::class);
|
||||
$adminUser->expects($this->once())
|
||||
->method('getUid')
|
||||
|
|
@ -247,18 +249,25 @@ class AppConfigControllerTest extends TestCase {
|
|||
->method('verifyConfigKey')
|
||||
->with($app, $key);
|
||||
|
||||
$this->appConfig->expects($this->once())
|
||||
->method('getDetails')
|
||||
->with($app, $key)
|
||||
->willReturn([
|
||||
'app' => $app,
|
||||
'key' => $key,
|
||||
'value' => '', // 🤷
|
||||
'type' => $type,
|
||||
'lazy' => false,
|
||||
'typeString' => (string)$type, // this is not accurate, but acceptable
|
||||
'sensitive' => ($type & IAppConfig::VALUE_SENSITIVE) !== 0,
|
||||
]);
|
||||
if ($type instanceof \Throwable) {
|
||||
$this->appConfig->expects($this->once())
|
||||
->method('getDetails')
|
||||
->with($app, $key)
|
||||
->willThrowException($type);
|
||||
} else {
|
||||
$this->appConfig->expects($this->once())
|
||||
->method('getDetails')
|
||||
->with($app, $key)
|
||||
->willReturn([
|
||||
'app' => $app,
|
||||
'key' => $key,
|
||||
'value' => '', // 🤷
|
||||
'type' => $type,
|
||||
'lazy' => false,
|
||||
'typeString' => (string)$type, // this is not accurate, but acceptable
|
||||
'sensitive' => ($type & IAppConfig::VALUE_SENSITIVE) !== 0,
|
||||
]);
|
||||
}
|
||||
|
||||
$configValueSetter = match ($type) {
|
||||
IAppConfig::VALUE_BOOL => 'setValueBool',
|
||||
|
|
|
|||
Loading…
Reference in a new issue