Skip to content

Commit 0c0d462

Browse files
committed
Validate extraOptions configuration
1 parent 81a7ddb commit 0c0d462

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

src/DependencyInjection/Configuration.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Symfony\Component\Config\Definition\ConfigurationInterface;
1313

1414
use function count;
15+
use function explode;
1516
use function in_array;
1617
use function is_array;
1718
use function is_string;
@@ -428,7 +429,20 @@ private function addConnectionsSection(ArrayNodeDefinition $rootNode): void
428429
->end()
429430
->end()
430431
->arrayNode('extraOptions')
431-
->prototype('variable')->end()
432+
->children()
433+
->scalarNode('mongocryptdURI')->end()
434+
->booleanNode('mongocryptdBypassSpawn')->end()
435+
->scalarNode('mongocryptdSpawnPath')->end()
436+
->arrayNode('mongocryptdSpawnArgs')
437+
->beforeNormalization()
438+
->ifString()
439+
->then(static fn ($v) => explode(' ', $v))
440+
->end()
441+
->prototype('scalar')->cannotBeEmpty()->end()
442+
->end()
443+
->scalarNode('cryptSharedLibPath')->end()
444+
->booleanNode('cryptSharedLibRequired')->end()
445+
->end()
432446
->end()
433447
->booleanNode('bypassQueryAnalysis')->end()
434448
->arrayNode('tlsOptions')

tests/DependencyInjection/ConfigurationTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public function testFullConfiguration(array $config): void
257257
'mongocryptdURI' => 'mongodb://localhost:27020',
258258
'mongocryptdBypassSpawn' => true,
259259
'mongocryptdSpawnPath' => '%kernel.project_dir%/bin/mongocryptd',
260-
'mongocryptdSpawnArgs' => '--pidfilepath=%kernel.project_dir%/var/mongocryptd.pid --idleShutdownTimeoutSecs=60',
260+
'mongocryptdSpawnArgs' => ['--pidfilepath=%kernel.project_dir%/var/mongocryptd.pid', '--idleShutdownTimeoutSecs=60'],
261261
'cryptSharedLibPath' => '%kernel.project_dir%/bin/mongo_crypt_v1.dylib',
262262
'cryptSharedLibRequired' => true,
263263
],

tests/DependencyInjection/Fixtures/config/yml/full.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,9 @@ doctrine_mongodb:
130130
mongocryptdURI: 'mongodb://localhost:27020'
131131
mongocryptdBypassSpawn: true
132132
mongocryptdSpawnPath: '%kernel.project_dir%/bin/mongocryptd'
133-
mongocryptdSpawnArgs: '--pidfilepath=%kernel.project_dir%/var/mongocryptd.pid --idleShutdownTimeoutSecs=60'
133+
mongocryptdSpawnArgs:
134+
- '--pidfilepath=%kernel.project_dir%/var/mongocryptd.pid'
135+
- '--idleShutdownTimeoutSecs=60'
134136
cryptSharedLibPath: '%kernel.project_dir%/bin/mongo_crypt_v1.dylib'
135137
cryptSharedLibRequired: true
136138

0 commit comments

Comments
 (0)