diff --git a/src/DependencyInjection/Configuration/Configuration.php b/src/DependencyInjection/Configuration/Configuration.php index 27ed16d6..b6b10114 100644 --- a/src/DependencyInjection/Configuration/Configuration.php +++ b/src/DependencyInjection/Configuration/Configuration.php @@ -119,6 +119,10 @@ private function addClientsSection(ArrayNodeDefinition $rootNode): void ->arrayNode('options') ->addDefaultsIfNotSet() ->children() + ->arrayNode('commands') + ->useAttributeAsKey('name') + ->scalarPrototype()->end() + ->end() ->booleanNode('connection_async')->defaultFalse()->end() ->booleanNode('connection_persistent')->defaultFalse()->end() ->scalarNode('connection_timeout')->cannotBeEmpty()->defaultValue(5)->end() diff --git a/src/DependencyInjection/SncRedisExtension.php b/src/DependencyInjection/SncRedisExtension.php index 0d07230d..e5e1dabd 100644 --- a/src/DependencyInjection/SncRedisExtension.php +++ b/src/DependencyInjection/SncRedisExtension.php @@ -222,6 +222,8 @@ private function loadPhpredisClient(array $options, ContainerBuilder $container) sprintf('snc_redis.%s_%sclient.class', $options['type'], ($hasClusterOption ? 'cluster' : '')), ); + unset($options['options']['commands']); + $phpredisDef = new Definition($phpredisClientClass, [ $hasSentinelOption ? RedisSentinel::class : $phpredisClientClass, array_map('strval', $options['dsns']), diff --git a/tests/DependencyInjection/Fixtures/config/yaml/env_predis_ssl_context.yaml b/tests/DependencyInjection/Fixtures/config/yaml/env_predis_ssl_context.yaml index 168de857..d8149193 100644 --- a/tests/DependencyInjection/Fixtures/config/yaml/env_predis_ssl_context.yaml +++ b/tests/DependencyInjection/Fixtures/config/yaml/env_predis_ssl_context.yaml @@ -10,3 +10,5 @@ snc_redis: options: parameters: ssl_context: {'verify_peer': false, 'allow_self_signed': true, 'verify_peer_name': false} + commands: + foo: 'Foo\Bar\Baz' diff --git a/tests/DependencyInjection/SncRedisExtensionEnvTest.php b/tests/DependencyInjection/SncRedisExtensionEnvTest.php index 86972d76..2b7f2037 100644 --- a/tests/DependencyInjection/SncRedisExtensionEnvTest.php +++ b/tests/DependencyInjection/SncRedisExtensionEnvTest.php @@ -40,6 +40,41 @@ public function testPredisDefaultParameterWithSSLContextConfigLoad(): void ); } + public function testPredisDefaultParameterConfig(): void + { + $container = $this->getConfiguredContainer('env_predis_ssl_context'); + + $clientDefinition = $container->findDefinition('snc_redis.default'); + + $this->assertSame('Predis\Client', $clientDefinition->getClass()); + $this->assertSame( + [ + 'parameters' => [ + 'database' => null, + 'username' => null, + 'password' => null, + 'logging' => false, + ], + 'commands' => ['foo' => 'Foo\Bar\Baz'], + 'read_write_timeout' => null, + 'iterable_multibulk' => false, + 'serialization' => 'default', + 'prefix' => null, + 'service' => null, + 'async_connect' => false, + 'timeout' => 5, + 'persistent' => false, + 'exceptions' => true, + 'ssl' => [ + 'verify_peer' => false, + 'allow_self_signed' => true, + 'verify_peer_name' => false, + ], + ], + $container->findDefinition((string) $clientDefinition->getArgument(1))->getArgument(0), + ); + } + /** * @testWith ["env_phpredis_minimal", "Redis"] * ["env_relay_minimal", "Relay\\Relay"]