From 6b8ca3e611d195966b5cedc60c8374754bf6957e Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Wed, 7 Aug 2019 18:45:28 +0200 Subject: [PATCH] Updated SimplifiedConfigParser so that it properly converts the redis_servers keys and aliases the store as a side effect --- config/config.php | 2 +- ...ocessor.php => SimplifiedConfigParser.php} | 25 +++++++++++++------ ...est.php => SimplifiedConfigParserTest.php} | 18 ++++++++++--- 3 files changed, 33 insertions(+), 12 deletions(-) rename module/Core/src/{ConfigPostProcessor.php => SimplifiedConfigParser.php} (64%) rename module/Core/test/{ConfigPostProcessorTest.php => SimplifiedConfigParserTest.php} (84%) diff --git a/config/config.php b/config/config.php index 03b949a9..2c29fe67 100644 --- a/config/config.php +++ b/config/config.php @@ -26,5 +26,5 @@ return (new ConfigAggregator\ConfigAggregator([ ? new ConfigAggregator\PhpFileProvider('config/test/*.global.php') : new ConfigAggregator\ZendConfigProvider('config/params/{generated_config.php,*.config.{php,json}}'), ], 'data/cache/app_config.php', [ - Core\ConfigPostProcessor::class, + Core\SimplifiedConfigParser::class, ]))->getMergedConfig(); diff --git a/module/Core/src/ConfigPostProcessor.php b/module/Core/src/SimplifiedConfigParser.php similarity index 64% rename from module/Core/src/ConfigPostProcessor.php rename to module/Core/src/SimplifiedConfigParser.php index 4a7dc53c..7cbb1b0a 100644 --- a/module/Core/src/ConfigPostProcessor.php +++ b/module/Core/src/SimplifiedConfigParser.php @@ -11,7 +11,7 @@ use function array_key_exists; use function Functional\contains; use function Functional\reduce_left; -class ConfigPostProcessor +class SimplifiedConfigParser { private const SIMPLIFIED_CONFIG_MAPPING = [ 'disable_track_param' => ['app_options', 'disable_track_param'], @@ -22,11 +22,21 @@ class ConfigPostProcessor 'db_config' => ['entity_manager', 'connection'], 'delete_short_url_threshold' => ['delete_short_urls', 'visits_threshold'], 'locale' => ['translator', 'locale'], - 'lock_store' => ['dependencies', 'aliases', 'lock_store'], + 'redis_servers' => ['redis', 'servers'], ]; - private const SIMPLIFIED_CONFIG_TOGGLES = [ - 'not_found_redirect_to' => ['url_shortener', 'not_found_short_url', 'enable_redirection'], - 'delete_short_url_threshold' => ['delete_short_urls', 'check_visits_threshold'], + private const SIMPLIFIED_CONFIG_SIDE_EFFECTS = [ + 'not_found_redirect_to' => [ + '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']; @@ -41,8 +51,9 @@ class ConfigPostProcessor } $collection->setValueInPath($value, $path); - if (array_key_exists($key, self::SIMPLIFIED_CONFIG_TOGGLES)) { - $collection->setValueInPath(true, self::SIMPLIFIED_CONFIG_TOGGLES[$key]); + if (array_key_exists($key, self::SIMPLIFIED_CONFIG_SIDE_EFFECTS)) { + ['path' => $sideEffectPath, 'value' => $sideEffectValue] = self::SIMPLIFIED_CONFIG_SIDE_EFFECTS[$key]; + $collection->setValueInPath($sideEffectValue, $sideEffectPath); } return $collection; diff --git a/module/Core/test/ConfigPostProcessorTest.php b/module/Core/test/SimplifiedConfigParserTest.php similarity index 84% rename from module/Core/test/ConfigPostProcessorTest.php rename to module/Core/test/SimplifiedConfigParserTest.php index 642ccdfc..fbef2567 100644 --- a/module/Core/test/ConfigPostProcessorTest.php +++ b/module/Core/test/SimplifiedConfigParserTest.php @@ -4,17 +4,17 @@ declare(strict_types=1); namespace ShlinkioTest\Shlink\Core; use PHPUnit\Framework\TestCase; -use Shlinkio\Shlink\Core\ConfigPostProcessor; +use Shlinkio\Shlink\Core\SimplifiedConfigParser; use function array_merge; -class ConfigPostProcessorTest extends TestCase +class SimplifiedConfigParserTest extends TestCase { private $postProcessor; public function setUp(): void { - $this->postProcessor = new ConfigPostProcessor(); + $this->postProcessor = new SimplifiedConfigParser(); } /** @test */ @@ -41,7 +41,10 @@ class ConfigPostProcessorTest extends TestCase 'delete_short_url_threshold' => 50, 'locale' => 'es', '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' => [ 'dbname' => 'shlink', 'user' => 'foo', @@ -91,6 +94,13 @@ class ConfigPostProcessorTest extends TestCase '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));