Updating Media dependent modules to versions compatible with core Media.
[yaffs-website] / vendor / symfony / dependency-injection / Tests / Compiler / RegisterEnvVarProcessorsPassTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\DependencyInjection\Tests\Compiler;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\DependencyInjection\Compiler\RegisterEnvVarProcessorsPass;
16 use Symfony\Component\DependencyInjection\ContainerBuilder;
17 use Symfony\Component\DependencyInjection\EnvVarProcessorInterface;
18
19 class RegisterEnvVarProcessorsPassTest extends TestCase
20 {
21     public function testSimpleProcessor()
22     {
23         $container = new ContainerBuilder();
24         $container->register('foo', SimpleProcessor::class)->addTag('container.env_var_processor');
25
26         (new RegisterEnvVarProcessorsPass())->process($container);
27
28         $this->assertTrue($container->has('container.env_var_processors_locator'));
29         $this->assertInstanceOf(SimpleProcessor::class, $container->get('container.env_var_processors_locator')->get('foo'));
30
31         $expected = array(
32             'foo' => array('string'),
33             'base64' => array('string'),
34             'bool' => array('bool'),
35             'const' => array('bool', 'int', 'float', 'string', 'array'),
36             'file' => array('string'),
37             'float' => array('float'),
38             'int' => array('int'),
39             'json' => array('array'),
40             'resolve' => array('string'),
41             'string' => array('string'),
42         );
43
44         $this->assertSame($expected, $container->getParameterBag()->getProvidedTypes());
45     }
46
47     public function testNoProcessor()
48     {
49         $container = new ContainerBuilder();
50
51         (new RegisterEnvVarProcessorsPass())->process($container);
52
53         $this->assertFalse($container->has('container.env_var_processors_locator'));
54     }
55
56     /**
57      * @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException
58      * @expectedExceptionMessage Invalid type "foo" returned by "Symfony\Component\DependencyInjection\Tests\Compiler\BadProcessor::getProvidedTypes()", expected one of "array", "bool", "float", "int", "string".
59      */
60     public function testBadProcessor()
61     {
62         $container = new ContainerBuilder();
63         $container->register('foo', BadProcessor::class)->addTag('container.env_var_processor');
64
65         (new RegisterEnvVarProcessorsPass())->process($container);
66     }
67 }
68
69 class SimpleProcessor implements EnvVarProcessorInterface
70 {
71     public function getEnv($prefix, $name, \Closure $getEnv)
72     {
73         return $getEnv($name);
74     }
75
76     public static function getProvidedTypes()
77     {
78         return array('foo' => 'string');
79     }
80 }
81
82 class BadProcessor extends SimpleProcessor
83 {
84     public static function getProvidedTypes()
85     {
86         return array('foo' => 'string|foo');
87     }
88 }