Skip to content

Commit 31662ba

Browse files
committed
Test services definition
1 parent be5a543 commit 31662ba

File tree

2 files changed

+108
-3
lines changed

2 files changed

+108
-3
lines changed

src/DependencyInjection/AjgarlagPsrHttpMessageExtension.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ class AjgarlagPsrHttpMessageExtension extends Extension implements CompilerPassI
3030
{
3131
public function prepend(ContainerBuilder $container)
3232
{
33-
$container->setParameter('ajgarlag_psr_http_message_sensio_psr7_enabled', false);
34-
3533
if (!class_exists(Psr7ServerRequestResolver::class)) {
3634
return;
3735
}
@@ -51,7 +49,7 @@ public function load(array $configs, ContainerBuilder $container)
5149

5250
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
5351

54-
if ($container->getParameter('ajgarlag_psr_http_message_sensio_psr7_enabled')) {
52+
if ($this->isSensioFrameworkExtraPsr7SupportEnabled($container)) {
5553
$loader->load('alias_ajgarlag_psr_http_message.xml');
5654

5755
return;
@@ -64,6 +62,15 @@ public function load(array $configs, ContainerBuilder $container)
6462
}
6563
}
6664

65+
private function isSensioFrameworkExtraPsr7SupportEnabled(ContainerBuilder $container): bool
66+
{
67+
if (!$container->hasParameter('ajgarlag_psr_http_message_sensio_psr7_enabled')) {
68+
return false;
69+
}
70+
71+
return (bool) $container->getParameter('ajgarlag_psr_http_message_sensio_psr7_enabled');
72+
}
73+
6774
public function process(ContainerBuilder $container)
6875
{
6976
$requiredInterfaces = [
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
3+
/*
4+
* PsrHttpMessageBundle by @ajgarlag
5+
*
6+
* Copyright (c) 2010-2021 Fabien Potencier
7+
* Copyright (c) 2021 Antonio J. García Lagar
8+
*
9+
* For the full copyright and license information, please view the LICENSE
10+
* file that was distributed with this source code.
11+
*/
12+
13+
namespace Ajgarlag\Bundle\PsrHttpMessageBundle\Tests\DependencyInjection;
14+
15+
use Ajgarlag\Bundle\PsrHttpMessageBundle\DependencyInjection\AjgarlagPsrHttpMessageExtension;
16+
use Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface;
17+
use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface;
18+
use Symfony\Component\DependencyInjection\ContainerBuilder;
19+
20+
class AjgarlagPsrHttpMessageExtensionTest extends \PHPUnit\Framework\TestCase
21+
{
22+
public function testDefaultConfiguration()
23+
{
24+
$container = new ContainerBuilder();
25+
$extension = new AjgarlagPsrHttpMessageExtension();
26+
$config = [];
27+
28+
$extension->load([$config], $container);
29+
30+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_message_factory'));
31+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_foundation_factory'));
32+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request'));
33+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.listener.response'));
34+
35+
$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.http_message_factory'));
36+
$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.http_foundation_factory'));
37+
$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.argument_value_resolver.server_request'));
38+
$this->assertFalse($container->hasAlias('sensio_framework_extra.psr7.listener.response'));
39+
40+
$this->assertAlias($container, HttpMessageFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_message_factory');
41+
$this->assertAlias($container, HttpFoundationFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_foundation_factory');
42+
}
43+
44+
public function testSensioFrameworkExtraAliasConfiguration()
45+
{
46+
$container = new ContainerBuilder();
47+
$extension = new AjgarlagPsrHttpMessageExtension();
48+
$config = [
49+
'alias_sensio_framework_extra_services' => [
50+
'enabled' => true,
51+
],
52+
];
53+
54+
$extension->load([$config], $container);
55+
56+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_message_factory'));
57+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_foundation_factory'));
58+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request'));
59+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.listener.response'));
60+
61+
$this->assertAlias($container, 'sensio_framework_extra.psr7.http_message_factory', 'ajgarlag_psr_http_message.psr7.http_message_factory');
62+
$this->assertAlias($container, 'sensio_framework_extra.psr7.http_foundation_factory', 'ajgarlag_psr_http_message.psr7.http_foundation_factory');
63+
$this->assertAlias($container, 'sensio_framework_extra.psr7.argument_value_resolver.server_request', 'ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request');
64+
$this->assertAlias($container, 'sensio_framework_extra.psr7.listener.response', 'ajgarlag_psr_http_message.psr7.listener.response');
65+
66+
$this->assertAlias($container, HttpMessageFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_message_factory');
67+
$this->assertAlias($container, HttpFoundationFactoryInterface::class, 'ajgarlag_psr_http_message.psr7.http_foundation_factory');
68+
}
69+
70+
public function testAjgarlagPsrHttpMessageAliasConfiguration()
71+
{
72+
$container = new ContainerBuilder();
73+
$extension = new AjgarlagPsrHttpMessageExtension();
74+
$config = [
75+
'alias_sensio_framework_extra_services' => [
76+
'enabled' => (bool) random_int(0, 1),
77+
],
78+
];
79+
80+
$container->setParameter('ajgarlag_psr_http_message_sensio_psr7_enabled', true);
81+
$extension->load([$config], $container);
82+
83+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_message_factory'));
84+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.http_foundation_factory'));
85+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request'));
86+
$this->assertTrue($container->has('ajgarlag_psr_http_message.psr7.listener.response'));
87+
88+
$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.http_message_factory', 'sensio_framework_extra.psr7.http_message_factory');
89+
$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.http_foundation_factory', 'sensio_framework_extra.psr7.http_foundation_factory');
90+
$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.argument_value_resolver.server_request', 'sensio_framework_extra.psr7.argument_value_resolver.server_request');
91+
$this->assertAlias($container, 'ajgarlag_psr_http_message.psr7.listener.response', 'sensio_framework_extra.psr7.listener.response');
92+
}
93+
94+
private function assertAlias(ContainerBuilder $container, $key, $value): void
95+
{
96+
$this->assertEquals($value, (string) $container->getAlias($key));
97+
}
98+
}

0 commit comments

Comments
 (0)