Updated SimplifiedConfigParser so that it properly converts the redis_servers keys and aliases the store as a side effect

This commit is contained in:
Alejandro Celaya 2019-08-07 18:45:28 +02:00
parent 73fd348490
commit 6b8ca3e611
3 changed files with 33 additions and 12 deletions

View file

@ -26,5 +26,5 @@ return (new ConfigAggregator\ConfigAggregator([
? new ConfigAggregator\PhpFileProvider('config/test/*.global.php') ? new ConfigAggregator\PhpFileProvider('config/test/*.global.php')
: new ConfigAggregator\ZendConfigProvider('config/params/{generated_config.php,*.config.{php,json}}'), : new ConfigAggregator\ZendConfigProvider('config/params/{generated_config.php,*.config.{php,json}}'),
], 'data/cache/app_config.php', [ ], 'data/cache/app_config.php', [
Core\ConfigPostProcessor::class, Core\SimplifiedConfigParser::class,
]))->getMergedConfig(); ]))->getMergedConfig();

View file

@ -11,7 +11,7 @@ use function array_key_exists;
use function Functional\contains; use function Functional\contains;
use function Functional\reduce_left; use function Functional\reduce_left;
class ConfigPostProcessor class SimplifiedConfigParser
{ {
private const SIMPLIFIED_CONFIG_MAPPING = [ private const SIMPLIFIED_CONFIG_MAPPING = [
'disable_track_param' => ['app_options', 'disable_track_param'], 'disable_track_param' => ['app_options', 'disable_track_param'],
@ -22,11 +22,21 @@ class ConfigPostProcessor
'db_config' => ['entity_manager', 'connection'], 'db_config' => ['entity_manager', 'connection'],
'delete_short_url_threshold' => ['delete_short_urls', 'visits_threshold'], 'delete_short_url_threshold' => ['delete_short_urls', 'visits_threshold'],
'locale' => ['translator', 'locale'], 'locale' => ['translator', 'locale'],
'lock_store' => ['dependencies', 'aliases', 'lock_store'], 'redis_servers' => ['redis', 'servers'],
]; ];
private const SIMPLIFIED_CONFIG_TOGGLES = [ private const SIMPLIFIED_CONFIG_SIDE_EFFECTS = [
'not_found_redirect_to' => ['url_shortener', 'not_found_short_url', 'enable_redirection'], 'not_found_redirect_to' => [
'delete_short_url_threshold' => ['delete_short_urls', 'check_visits_threshold'], 'path' => ['url_shortener', 'not_found_short_url', 'enable_redirection'],
'value' => true,
],
'delete_short_url_threshold' => [
'path' => ['delete_short_urls', 'check_visits_threshold'],
'value' => true,
],
'redis_servers' => [
'path' => ['dependencies', 'aliases', 'lock_store'],
'value' => 'redis_lock_store',
],
]; ];
private const SIMPLIFIED_MERGEABLE_CONFIG = ['db_config']; private const SIMPLIFIED_MERGEABLE_CONFIG = ['db_config'];
@ -41,8 +51,9 @@ class ConfigPostProcessor
} }
$collection->setValueInPath($value, $path); $collection->setValueInPath($value, $path);
if (array_key_exists($key, self::SIMPLIFIED_CONFIG_TOGGLES)) { if (array_key_exists($key, self::SIMPLIFIED_CONFIG_SIDE_EFFECTS)) {
$collection->setValueInPath(true, self::SIMPLIFIED_CONFIG_TOGGLES[$key]); ['path' => $sideEffectPath, 'value' => $sideEffectValue] = self::SIMPLIFIED_CONFIG_SIDE_EFFECTS[$key];
$collection->setValueInPath($sideEffectValue, $sideEffectPath);
} }
return $collection; return $collection;

View file

@ -4,17 +4,17 @@ declare(strict_types=1);
namespace ShlinkioTest\Shlink\Core; namespace ShlinkioTest\Shlink\Core;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Core\ConfigPostProcessor; use Shlinkio\Shlink\Core\SimplifiedConfigParser;
use function array_merge; use function array_merge;
class ConfigPostProcessorTest extends TestCase class SimplifiedConfigParserTest extends TestCase
{ {
private $postProcessor; private $postProcessor;
public function setUp(): void public function setUp(): void
{ {
$this->postProcessor = new ConfigPostProcessor(); $this->postProcessor = new SimplifiedConfigParser();
} }
/** @test */ /** @test */
@ -41,7 +41,10 @@ class ConfigPostProcessorTest extends TestCase
'delete_short_url_threshold' => 50, 'delete_short_url_threshold' => 50,
'locale' => 'es', 'locale' => 'es',
'not_found_redirect_to' => 'foobar.com', 'not_found_redirect_to' => 'foobar.com',
'lock_store' => 'redis_lock_store', 'redis_servers' => [
'tcp://1.1.1.1:1111',
'tcp://1.2.2.2:2222',
],
'db_config' => [ 'db_config' => [
'dbname' => 'shlink', 'dbname' => 'shlink',
'user' => 'foo', 'user' => 'foo',
@ -91,6 +94,13 @@ class ConfigPostProcessorTest extends TestCase
'lock_store' => 'redis_lock_store', 'lock_store' => 'redis_lock_store',
], ],
], ],
'redis' => [
'servers' => [
'tcp://1.1.1.1:1111',
'tcp://1.2.2.2:2222',
],
],
]; ];
$result = ($this->postProcessor)(array_merge($config, $simplified)); $result = ($this->postProcessor)(array_merge($config, $simplified));