Skip to content

Commit e4b3155

Browse files
authored
[SF] Make sure we override config in a predictable way (#503)
* Make sure we override config in a predictable way * cs
1 parent 2ed3400 commit e4b3155

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

src/DependencyInjection/AsyncAwsExtension.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ private function registerConfiguredServices(ContainerBuilder $container, array $
3030
$availableServices = AwsPackagesProvider::getAllServices();
3131
$usedServices = [];
3232
$defaultConfig = $config;
33-
unset($defaultConfig['clients']);
33+
unset($defaultConfig['clients'], $defaultConfig['secrets']);
3434

3535
foreach ($config['clients'] as $name => $data) {
3636
$client = $availableServices[$data['type']]['class'];
@@ -39,6 +39,7 @@ private function registerConfiguredServices(ContainerBuilder $container, array $
3939
}
4040

4141
$serviceConfig = array_merge($defaultConfig, $data);
42+
$serviceConfig['config'] = array_merge($defaultConfig['config'], $data['config']);
4243
if ($serviceConfig['register_service']) {
4344
$usedServices[$name] = $client;
4445
$this->addServiceDefinition($container, $name, $serviceConfig, $client);

tests/Functional/BundleInitializationTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,34 @@ public function testNotRegisterSqs()
105105
self::assertFalse($container->has(SqsClient::class));
106106
}
107107

108+
public function testConfigOverride()
109+
{
110+
$kernel = $this->createKernel();
111+
$kernel->addConfigFile(__DIR__ . '/Resources/config/override.yaml');
112+
$this->bootKernel();
113+
114+
$container = $this->getContainer();
115+
self::assertTrue($container->has('async_aws.client.s3'));
116+
self::assertTrue($container->has('async_aws.client.ses'));
117+
self::assertTrue($container->has('async_aws.client.sqs'));
118+
119+
/** @var SesClient $ses */
120+
$ses = $container->get('async_aws.client.ses');
121+
self::assertEquals('eu-central-1', $ses->getConfiguration()->get('region'));
122+
123+
/** @var S3Client $s3 */
124+
$s3 = $container->get('async_aws.client.s3');
125+
self::assertEquals('us-west-1', $s3->getConfiguration()->get('region'));
126+
self::assertEquals('key', $s3->getConfiguration()->get('accessKeyId'));
127+
self::assertEquals('secret', $s3->getConfiguration()->get('accessKeySecret'));
128+
129+
/** @var SqsClient $sqs */
130+
$sqs = $container->get('async_aws.client.sqs');
131+
self::assertEquals('eu-central-1', $sqs->getConfiguration()->get('region'));
132+
self::assertFalse($sqs->getConfiguration()->has('accessKeyId'));
133+
self::assertFalse($sqs->getConfiguration()->has('accessKeySecret'));
134+
}
135+
108136
public function testExceptionWhenConfigureServiceNotInstalled()
109137
{
110138
if (class_exists(SnsClient::class)) {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
async_aws:
2+
config:
3+
region: eu-central-1
4+
accessKeyId: key
5+
accessKeySecret: secret
6+
clients:
7+
ses: ~
8+
s3:
9+
config:
10+
region: us-west-1
11+
12+
sqs:
13+
config:
14+
accessKeyId: ~
15+
accessKeySecret: ~

0 commit comments

Comments
 (0)