Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / dependency-injection / Tests / EnvVarProcessorTest.php
diff --git a/vendor/symfony/dependency-injection/Tests/EnvVarProcessorTest.php b/vendor/symfony/dependency-injection/Tests/EnvVarProcessorTest.php
new file mode 100644 (file)
index 0000000..b1ee044
--- /dev/null
@@ -0,0 +1,304 @@
+<?php
+
+namespace Symfony\Component\DependencyInjection\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\Container;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\EnvVarProcessor;
+
+class EnvVarProcessorTest extends TestCase
+{
+    const TEST_CONST = 'test';
+
+    /**
+     * @dataProvider validStrings
+     */
+    public function testGetEnvString($value, $processed)
+    {
+        $container = new ContainerBuilder();
+        $container->setParameter('env(foo)', $value);
+        $container->compile();
+
+        $processor = new EnvVarProcessor($container);
+
+        $result = $processor->getEnv('string', 'foo', function () {
+            $this->fail('Should not be called');
+        });
+
+        $this->assertSame($processed, $result);
+    }
+
+    public function validStrings()
+    {
+        return array(
+            array('hello', 'hello'),
+            array('true', 'true'),
+            array('false', 'false'),
+            array('null', 'null'),
+            array('1', '1'),
+            array('0', '0'),
+            array('1.1', '1.1'),
+            array('1e1', '1e1'),
+        );
+    }
+
+    /**
+     * @dataProvider validBools
+     */
+    public function testGetEnvBool($value, $processed)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $result = $processor->getEnv('bool', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return $value;
+        });
+
+        $this->assertSame($processed, $result);
+    }
+
+    public function validBools()
+    {
+        return array(
+            array('true', true),
+            array('false', false),
+            array('null', false),
+            array('1', true),
+            array('0', false),
+            array('1.1', true),
+            array('1e1', true),
+        );
+    }
+
+    /**
+     * @dataProvider validInts
+     */
+    public function testGetEnvInt($value, $processed)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $result = $processor->getEnv('int', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return $value;
+        });
+
+        $this->assertSame($processed, $result);
+    }
+
+    public function validInts()
+    {
+        return array(
+            array('1', 1),
+            array('1.1', 1),
+            array('1e1', 10),
+        );
+    }
+
+    /**
+     * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
+     * @expectedExceptionMessage Non-numeric env var
+     * @dataProvider invalidInts
+     */
+    public function testGetEnvIntInvalid($value)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $processor->getEnv('int', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return $value;
+        });
+    }
+
+    public function invalidInts()
+    {
+        return array(
+            array('foo'),
+            array('true'),
+            array('null'),
+        );
+    }
+
+    /**
+     * @dataProvider validFloats
+     */
+    public function testGetEnvFloat($value, $processed)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $result = $processor->getEnv('float', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return $value;
+        });
+
+        $this->assertSame($processed, $result);
+    }
+
+    public function validFloats()
+    {
+        return array(
+            array('1', 1.0),
+            array('1.1', 1.1),
+            array('1e1', 10.0),
+        );
+    }
+
+    /**
+     * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
+     * @expectedExceptionMessage Non-numeric env var
+     * @dataProvider invalidFloats
+     */
+    public function testGetEnvFloatInvalid($value)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $processor->getEnv('float', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return $value;
+        });
+    }
+
+    public function invalidFloats()
+    {
+        return array(
+            array('foo'),
+            array('true'),
+            array('null'),
+        );
+    }
+
+    /**
+     * @dataProvider validConsts
+     */
+    public function testGetEnvConst($value, $processed)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $result = $processor->getEnv('const', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return $value;
+        });
+
+        $this->assertSame($processed, $result);
+    }
+
+    public function validConsts()
+    {
+        return array(
+            array('Symfony\Component\DependencyInjection\Tests\EnvVarProcessorTest::TEST_CONST', self::TEST_CONST),
+            array('E_ERROR', E_ERROR),
+        );
+    }
+
+    /**
+     * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
+     * @expectedExceptionMessage undefined constant
+     * @dataProvider invalidConsts
+     */
+    public function testGetEnvConstInvalid($value)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $processor->getEnv('const', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return $value;
+        });
+    }
+
+    public function invalidConsts()
+    {
+        return array(
+            array('Symfony\Component\DependencyInjection\Tests\EnvVarProcessorTest::UNDEFINED_CONST'),
+            array('UNDEFINED_CONST'),
+        );
+    }
+
+    public function testGetEnvBase64()
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $result = $processor->getEnv('base64', 'foo', function ($name) {
+            $this->assertSame('foo', $name);
+
+            return base64_encode('hello');
+        });
+
+        $this->assertSame('hello', $result);
+    }
+
+    public function testGetEnvJson()
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $result = $processor->getEnv('json', 'foo', function ($name) {
+            $this->assertSame('foo', $name);
+
+            return json_encode(array(1));
+        });
+
+        $this->assertSame(array(1), $result);
+    }
+
+    /**
+     * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
+     * @expectedExceptionMessage Syntax error
+     */
+    public function testGetEnvInvalidJson()
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $processor->getEnv('json', 'foo', function ($name) {
+            $this->assertSame('foo', $name);
+
+            return 'invalid_json';
+        });
+    }
+
+    /**
+     * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
+     * @expectedExceptionMessage Invalid JSON env var
+     * @dataProvider otherJsonValues
+     */
+    public function testGetEnvJsonOther($value)
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $processor->getEnv('json', 'foo', function ($name) use ($value) {
+            $this->assertSame('foo', $name);
+
+            return json_encode($value);
+        });
+    }
+
+    public function otherJsonValues()
+    {
+        return array(
+            array(1),
+            array(1.1),
+            array(true),
+            array(false),
+        );
+    }
+
+    /**
+     * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
+     * @expectedExceptionMessage Unsupported env var prefix
+     */
+    public function testGetEnvUnknown()
+    {
+        $processor = new EnvVarProcessor(new Container());
+
+        $processor->getEnv('unknown', 'foo', function ($name) {
+            $this->assertSame('foo', $name);
+
+            return 'foo';
+        });
+    }
+}