Merge pull request #43370 from nextcloud/test-iappconfig

[IAppConfig] new tests
This commit is contained in:
Maxence Lange 2024-02-12 18:09:13 -01:00 committed by GitHub
commit 592012034e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 1300 additions and 303 deletions

View File

@ -204,18 +204,23 @@ class AppConfig implements IAppConfig {
* @inheritDoc
*
* @param string $app id of the app
* @param string $key config keys prefix to search
* @param string $prefix config keys prefix to search
* @param bool $filtered TRUE to hide sensitive config values. Value are replaced by {@see IConfig::SENSITIVE_VALUE}
*
* @return array<string, string> [configKey => configValue]
* @since 29.0.0
*/
public function getAllValues(string $app, string $key = '', bool $filtered = false): array {
$this->assertParams($app, $key);
public function getAllValues(string $app, string $prefix = '', bool $filtered = false): array {
$this->assertParams($app, $prefix);
// if we want to filter values, we need to get sensitivity
$this->loadConfigAll();
// array_merge() will remove numeric keys (here config keys), so addition arrays instead
$values = ($this->fastCache[$app] ?? []) + ($this->lazyCache[$app] ?? []);
$values = array_filter(
(($this->fastCache[$app] ?? []) + ($this->lazyCache[$app] ?? [])),
function (string $key) use ($prefix): bool {
return str_starts_with($key, $prefix); // filter values based on $prefix
}, ARRAY_FILTER_USE_KEY
);
if (!$filtered) {
return $values;
@ -839,10 +844,6 @@ class AppConfig implements IAppConfig {
$this->loadConfigAll();
$lazy = $this->isLazy($app, $key);
if (!$this->hasKey($app, $key, $lazy)) {
throw new AppConfigUnknownKeyException('Unknown config key');
}
// type can only be one type
if (!in_array($type, [self::VALUE_MIXED, self::VALUE_STRING, self::VALUE_INT, self::VALUE_FLOAT, self::VALUE_BOOL, self::VALUE_ARRAY])) {
throw new AppConfigIncorrectTypeException('Unknown value type');
@ -1305,7 +1306,7 @@ class AppConfig implements IAppConfig {
* @param string|false $key
*
* @return array|false
* @deprecated 29.0.0 use getAllValues()
* @deprecated 29.0.0 use {@see getAllValues()}
*/
public function getValues($app, $key) {
if (($app !== false) === ($key !== false)) {
@ -1326,7 +1327,7 @@ class AppConfig implements IAppConfig {
* @param string $app
*
* @return array
* @deprecated 29.0.0 use getAllValues()
* @deprecated 29.0.0 use {@see getAllValues()}
*/
public function getFilteredValues($app) {
return $this->getAllValues($app, filtered: true);

View File

@ -137,13 +137,13 @@ interface IAppConfig {
* **WARNING:** ignore lazy filtering, all config values are loaded from database
*
* @param string $app id of the app
* @param string $key config keys prefix to search, can be empty.
* @param string $prefix config keys prefix to search, can be empty.
* @param bool $filtered filter sensitive config values
*
* @return array<string, string> [configKey => configValue]
* @since 29.0.0
*/
public function getAllValues(string $app, string $key = '', bool $filtered = false): array;
public function getAllValues(string $app, string $prefix = '', bool $filtered = false): array;
/**
* List all apps storing a specific config key and its stored value.
@ -152,7 +152,7 @@ interface IAppConfig {
* @param string $key config key
* @param bool $lazy search within lazy loaded config
*
* @return array<string, string> [appId => configValue]
* @return array<string, string|int|float|bool|array> [appId => configValue]
* @since 29.0.0
*/
public function searchValues(string $key, bool $lazy = false): array;

File diff suppressed because it is too large Load Diff