Skip to content

Commit c089776

Browse files
committed
Add test to ensure aliasing services with class name is backwards compatible
1 parent 4553786 commit c089776

File tree

8 files changed

+59
-15
lines changed

8 files changed

+59
-15
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
language: php
2+
dist: trusty
23

34
php:
45
- 5.5
56
- 5.6
67
- 7.0
8+
- 7.1
79
- hhvm
810

911
env:

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"symfony/http-kernel": "~2.3|~3.0"
1919
},
2020
"require-dev": {
21-
"phpunit/phpunit": "~4.7",
21+
"phpunit/phpunit": "^4.8.35|^5.4.0|^6.0.0",
2222
"symfony/framework-bundle": "~2.3|~3.0",
2323
"symfony/yaml": "~2.3|~3.0"
2424
},

src/DependencyInjection/AwsExtension.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,11 @@ public function load(array $configs, ContainerBuilder $container)
3535
]]);
3636

3737
foreach (array_column(Aws\manifest(), 'namespace') as $awsService) {
38-
$container->setDefinition(
39-
'aws.' . strtolower($awsService),
40-
$this->createServiceDefinition($awsService)
41-
);
42-
43-
// Handle Symfony >= 3.3
44-
$container->setAlias("Aws\\{$awsService}\\{$awsService}Client", 'aws.' . strtolower($awsService));
38+
$serviceName = 'aws.' . strtolower($awsService);
39+
$serviceDefinition = $this->createServiceDefinition($awsService);
40+
$container->setDefinition($serviceName, $serviceDefinition);
41+
42+
$container->setAlias($serviceDefinition->getClass(), $serviceName);
4543
}
4644
}
4745

tests/DependencyInjection/AwsExtensionTest.php

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
use AppKernel;
66
use Aws\AwsClient;
7-
use Aws\Sdk;
8-
use ReflectionClass;
7+
use PHPUnit\Framework\TestCase;
98
use Symfony\Component\DependencyInjection\ContainerBuilder;
109
use Symfony\Component\DependencyInjection\ContainerInterface;
1110
use Symfony\Component\DependencyInjection\Reference;
1211

13-
class AwsExtensionTest extends \PHPUnit_Framework_TestCase
12+
class AwsExtensionTest extends TestCase
1413
{
1514
/**
1615
* @var ContainerInterface
@@ -81,7 +80,9 @@ public function extension_should_escape_strings_that_begin_with_at_sign()
8180
'key' => '@@key',
8281
'secret' => '@@secret'
8382
]];
84-
$container = $this->getMock(ContainerBuilder::class, ['getDefinition', 'replaceArgument']);
83+
$container = $this->getMockBuilder(ContainerBuilder::class)
84+
->setMethods(['getDefinition', 'replaceArgument'])
85+
->getMock();
8586
$container->expects($this->once())
8687
->method('getDefinition')
8788
->with('aws_sdk')
@@ -107,7 +108,9 @@ public function extension_should_expand_service_references()
107108
{
108109
$extension = new AwsExtension;
109110
$config = ['credentials' => '@aws_sdk'];
110-
$container = $this->getMock(ContainerBuilder::class, ['getDefinition', 'replaceArgument']);
111+
$container = $this->getMockBuilder(ContainerBuilder::class)
112+
->setMethods(['getDefinition', 'replaceArgument'])
113+
->getMock();
111114
$container->expects($this->once())
112115
->method('getDefinition')
113116
->with('aws_sdk')
@@ -157,4 +160,20 @@ function (array $service) use ($config) {
157160
$this->serviceProvider()
158161
);
159162
}
163+
164+
/**
165+
* @test
166+
*
167+
* @dataProvider serviceProvider
168+
*/
169+
public function extension_should_load_services_by_class_name(
170+
$webServiceName,
171+
$containerServiceName,
172+
$clientClassName
173+
) {
174+
$this->assertInstanceOf(
175+
$clientClassName,
176+
$this->container->get($clientClassName)
177+
);
178+
}
160179
}

tests/DependencyInjection/ConfigurationTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php
22
namespace Aws\Symfony\DependencyInjection;
33

4-
54
use AppKernel;
5+
use PHPUnit\Framework\TestCase;
66
use Symfony\Component\Filesystem\Filesystem;
77

8-
class ConfigurationTest extends \PHPUnit_Framework_TestCase
8+
class ConfigurationTest extends TestCase
99
{
1010
public function setUp()
1111
{

tests/fixtures/config.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22

3+
use Aws\DynamoDb\DynamoDbClient;
34
use Symfony\Component\DependencyInjection\Reference;
45

56
$container->loadFromExtension('framework', [
@@ -31,3 +32,10 @@
3132
->register('a_service', 'Aws\\Credentials\\Credentials')
3233
->addArgument('a-different-fake-key')
3334
->addArgument('a-different-fake-secret');
35+
36+
$container
37+
->register(DynamoDbClient::class, DynamoDbClient::class)
38+
->addArgument([
39+
'region' => 'eu-central-1',
40+
'version' => '2012-08-10',
41+
]);

tests/fixtures/config.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,21 @@
1818
<aws:Sqs credentials="@a_service"/>
1919
</aws:config>
2020

21+
<parameters>
22+
<parameter key="dynamodb_client_config" type="collection">
23+
<parameter key="region">eu-central-1</parameter>
24+
<parameter key="version">2012-08-10</parameter>
25+
</parameter>
26+
</parameters>
27+
2128
<services>
2229
<service id="a_service" class="Aws\Credentials\Credentials">
2330
<argument>a-different-fake-key</argument>
2431
<argument>a-different-fake-secret</argument>
2532
</service>
33+
34+
<service id="Aws\DynamoDb\DynamoDbClient" class="Aws\DynamoDb\DynamoDbClient">
35+
<argument>%dynamodb_client_config%</argument>
36+
</service>
2637
</services>
2738
</container>

tests/fixtures/config.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ aws:
1717
endpoint: https://search-with-some-subdomain.us-east-1.cloudsearch.amazonaws.com
1818

1919
services:
20+
'Aws\DynamoDb\DynamoDbClient':
21+
class: Aws\DynamoDb\DynamoDbClient
22+
arguments:
23+
-
24+
region: eu-central-1
25+
version: '2012-08-10'
2026
a_service:
2127
class: Aws\Credentials\Credentials
2228
arguments:

0 commit comments

Comments
 (0)