3 namespace Symfony\Component\DependencyInjection\Tests;
5 use PHPUnit\Framework\TestCase;
6 use Symfony\Component\DependencyInjection\Container;
7 use Symfony\Component\DependencyInjection\ContainerBuilder;
8 use Symfony\Component\DependencyInjection\EnvVarProcessor;
10 class EnvVarProcessorTest extends TestCase
12 const TEST_CONST = 'test';
15 * @dataProvider validStrings
17 public function testGetEnvString($value, $processed)
19 $container = new ContainerBuilder();
20 $container->setParameter('env(foo)', $value);
21 $container->compile();
23 $processor = new EnvVarProcessor($container);
25 $result = $processor->getEnv('string', 'foo', function () {
26 $this->fail('Should not be called');
29 $this->assertSame($processed, $result);
32 public function validStrings()
35 array('hello', 'hello'),
36 array('true', 'true'),
37 array('false', 'false'),
38 array('null', 'null'),
47 * @dataProvider validBools
49 public function testGetEnvBool($value, $processed)
51 $processor = new EnvVarProcessor(new Container());
53 $result = $processor->getEnv('bool', 'foo', function ($name) use ($value) {
54 $this->assertSame('foo', $name);
59 $this->assertSame($processed, $result);
62 public function validBools()
66 array('false', false),
76 * @dataProvider validInts
78 public function testGetEnvInt($value, $processed)
80 $processor = new EnvVarProcessor(new Container());
82 $result = $processor->getEnv('int', 'foo', function ($name) use ($value) {
83 $this->assertSame('foo', $name);
88 $this->assertSame($processed, $result);
91 public function validInts()
101 * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
102 * @expectedExceptionMessage Non-numeric env var
103 * @dataProvider invalidInts
105 public function testGetEnvIntInvalid($value)
107 $processor = new EnvVarProcessor(new Container());
109 $processor->getEnv('int', 'foo', function ($name) use ($value) {
110 $this->assertSame('foo', $name);
116 public function invalidInts()
126 * @dataProvider validFloats
128 public function testGetEnvFloat($value, $processed)
130 $processor = new EnvVarProcessor(new Container());
132 $result = $processor->getEnv('float', 'foo', function ($name) use ($value) {
133 $this->assertSame('foo', $name);
138 $this->assertSame($processed, $result);
141 public function validFloats()
151 * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
152 * @expectedExceptionMessage Non-numeric env var
153 * @dataProvider invalidFloats
155 public function testGetEnvFloatInvalid($value)
157 $processor = new EnvVarProcessor(new Container());
159 $processor->getEnv('float', 'foo', function ($name) use ($value) {
160 $this->assertSame('foo', $name);
166 public function invalidFloats()
176 * @dataProvider validConsts
178 public function testGetEnvConst($value, $processed)
180 $processor = new EnvVarProcessor(new Container());
182 $result = $processor->getEnv('const', 'foo', function ($name) use ($value) {
183 $this->assertSame('foo', $name);
188 $this->assertSame($processed, $result);
191 public function validConsts()
194 array('Symfony\Component\DependencyInjection\Tests\EnvVarProcessorTest::TEST_CONST', self::TEST_CONST),
195 array('E_ERROR', E_ERROR),
200 * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
201 * @expectedExceptionMessage undefined constant
202 * @dataProvider invalidConsts
204 public function testGetEnvConstInvalid($value)
206 $processor = new EnvVarProcessor(new Container());
208 $processor->getEnv('const', 'foo', function ($name) use ($value) {
209 $this->assertSame('foo', $name);
215 public function invalidConsts()
218 array('Symfony\Component\DependencyInjection\Tests\EnvVarProcessorTest::UNDEFINED_CONST'),
219 array('UNDEFINED_CONST'),
223 public function testGetEnvBase64()
225 $processor = new EnvVarProcessor(new Container());
227 $result = $processor->getEnv('base64', 'foo', function ($name) {
228 $this->assertSame('foo', $name);
230 return base64_encode('hello');
233 $this->assertSame('hello', $result);
236 public function testGetEnvJson()
238 $processor = new EnvVarProcessor(new Container());
240 $result = $processor->getEnv('json', 'foo', function ($name) {
241 $this->assertSame('foo', $name);
243 return json_encode(array(1));
246 $this->assertSame(array(1), $result);
250 * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
251 * @expectedExceptionMessage Syntax error
253 public function testGetEnvInvalidJson()
255 $processor = new EnvVarProcessor(new Container());
257 $processor->getEnv('json', 'foo', function ($name) {
258 $this->assertSame('foo', $name);
260 return 'invalid_json';
265 * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
266 * @expectedExceptionMessage Invalid JSON env var
267 * @dataProvider otherJsonValues
269 public function testGetEnvJsonOther($value)
271 $processor = new EnvVarProcessor(new Container());
273 $processor->getEnv('json', 'foo', function ($name) use ($value) {
274 $this->assertSame('foo', $name);
276 return json_encode($value);
280 public function otherJsonValues()
291 * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
292 * @expectedExceptionMessage Unsupported env var prefix
294 public function testGetEnvUnknown()
296 $processor = new EnvVarProcessor(new Container());
298 $processor->getEnv('unknown', 'foo', function ($name) {
299 $this->assertSame('foo', $name);