Skip to content

Commit 4f4ce51

Browse files
committed
add a hack to allow testing against private services without rewriting a large part of tests
1 parent 14cb428 commit 4f4ce51

File tree

3 files changed

+37
-11
lines changed

3 files changed

+37
-11
lines changed

Resources/config/services.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,44 @@
44
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
55

66
<services>
7-
<service id="httplug.strategy" class="Http\HttplugBundle\Discovery\ConfiguredClientsStrategy" public="true">
7+
<service id="httplug.strategy" class="Http\HttplugBundle\Discovery\ConfiguredClientsStrategy">
88
<argument type="service" id="httplug.auto_discovery.auto_discovered_client" on-invalid="null"/>
99
<argument type="service" id="httplug.auto_discovery.auto_discovered_async" on-invalid="null"/>
1010
<tag name="kernel.event_subscriber"/>
1111
</service>
1212

13-
<service id="httplug.auto_discovery.auto_discovered_client" class="Http\Client\HttpClient" public="true">
13+
<service id="httplug.auto_discovery.auto_discovered_client" class="Http\Client\HttpClient">
1414
<factory class="Http\Discovery\HttpClientDiscovery" method="find" />
1515
</service>
1616

17-
<service id="httplug.auto_discovery.auto_discovered_async" class="Http\Client\HttpAsyncClient" public="true">
17+
<service id="httplug.auto_discovery.auto_discovered_async" class="Http\Client\HttpAsyncClient">
1818
<factory class="Http\Discovery\HttpAsyncClientDiscovery" method="find" />
1919
</service>
2020

2121
<!-- Discovery with autowiring support for Symfony 3.3+ -->
22-
<service id="httplug.message_factory.default" class="Http\Message\MessageFactory" public="true">
22+
<service id="httplug.message_factory.default" class="Http\Message\MessageFactory">
2323
<factory class="Http\Discovery\MessageFactoryDiscovery" method="find" />
2424
</service>
2525
<service id="Http\Message\MessageFactory" alias="httplug.message_factory" public="false" />
2626
<service id="Http\Message\RequestFactory" alias="httplug.message_factory" public="false" />
2727
<service id="Http\Message\ResponseFactory" alias="httplug.message_factory" public="false" />
2828

29-
<service id="httplug.stream_factory.default" class="Http\Message\StreamFactory" public="true">
29+
<service id="httplug.stream_factory.default" class="Http\Message\StreamFactory">
3030
<factory class="Http\Discovery\StreamFactoryDiscovery" method="find" />
3131
</service>
3232
<service id="Http\Message\StreamFactory" alias="httplug.stream_factory" public="false" />
3333

34-
<service id="httplug.uri_factory.default" class="Http\Message\UriFactory" public="true">
34+
<service id="httplug.uri_factory.default" class="Http\Message\UriFactory">
3535
<factory class="Http\Discovery\UriFactoryDiscovery" method="find" />
3636
</service>
3737
<service id="Http\Message\UriFactory" alias="httplug.uri_factory" public="false" />
3838

39-
<service id="httplug.async_client.default" class="Http\Client\HttpAsyncClient" public="true">
39+
<service id="httplug.async_client.default" class="Http\Client\HttpAsyncClient">
4040
<factory class="Http\Discovery\HttpAsyncClientDiscovery" method="find" />
4141
</service>
4242
<service id="Http\Client\HttpAsyncClient" alias="httplug.async_client.default" public="false" />
4343

44-
<service id="httplug.client.default" class="Http\Client\HttpClient" public="true">
44+
<service id="httplug.client.default" class="Http\Client\HttpClient">
4545
<factory class="Http\Discovery\HttpClientDiscovery" method="find" />
4646
</service>
4747
<service id="Http\Client\HttpClient" alias="httplug.client" public="false" />

Tests/Resources/app/AppKernel.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
44
use Symfony\Component\Config\Loader\LoaderInterface;
5+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
56
use Symfony\Component\DependencyInjection\ContainerBuilder;
67
use Symfony\Component\HttpFoundation\Response;
78
use Symfony\Component\HttpKernel\Kernel;
@@ -86,4 +87,32 @@ public function indexAction()
8687
{
8788
return new Response();
8889
}
90+
91+
protected function build(ContainerBuilder $container)
92+
{
93+
$container->addCompilerPass(new PublicServicesForFunctionalTestsPass());
94+
}
95+
}
96+
97+
class PublicServicesForFunctionalTestsPass implements CompilerPassInterface
98+
{
99+
public function process(ContainerBuilder $container)
100+
{
101+
$services = [
102+
'httplug.strategy',
103+
'httplug.auto_discovery.auto_discovered_client',
104+
'httplug.auto_discovery.auto_discovered_async',
105+
'httplug.message_factory.default',
106+
'httplug.stream_factory.default',
107+
'httplug.uri_factory.default',
108+
'httplug.async_client.default',
109+
'httplug.client.default',
110+
'app.http.plugin.custom',
111+
];
112+
foreach ($services as $service) {
113+
if ($container->hasDefinition($service)) {
114+
$container->getDefinition($service)->setPublic(true);
115+
}
116+
}
117+
}
89118
}

Tests/Resources/app/config/config_test.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,3 @@ httplug:
2626
services:
2727
app.http.plugin.custom:
2828
class: Http\Client\Common\Plugin\RedirectPlugin
29-
public: true
30-
# plugin services usually do not need to be public.
31-
# this one is made public so that we can do functional tests on the service

0 commit comments

Comments
 (0)