Browse Source

Merge pull request #43370 from nextcloud/test-iappconfig

[IAppConfig] new tests
tags/v29.0.0beta1
Maxence Lange 4 months ago
parent
commit
592012034e
No account linked to committer's email address
3 changed files with 1255 additions and 258 deletions
  1. 11
    10
      lib/private/AppConfig.php
  2. 3
    3
      lib/public/IAppConfig.php
  3. 1241
    245
      tests/lib/AppConfigTest.php

+ 11
- 10
lib/private/AppConfig.php 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);

+ 3
- 3
lib/public/IAppConfig.php 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;

+ 1241
- 245
tests/lib/AppConfigTest.php
File diff suppressed because it is too large
View File


Loading…
Cancel
Save