LoaderTest.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace Dotenv\Tests;
  3. use Dotenv\Loader\Loader;
  4. use Dotenv\Repository\Adapter\ArrayAdapter;
  5. use Dotenv\Repository\Adapter\EnvConstAdapter;
  6. use Dotenv\Repository\Adapter\ServerConstAdapter;
  7. use Dotenv\Repository\RepositoryBuilder;
  8. use PHPUnit\Framework\TestCase;
  9. class LoaderTest extends TestCase
  10. {
  11. public function testLoaderWithNoReaders()
  12. {
  13. $repository = RepositoryBuilder::create()->withReaders([])->make();
  14. $loader = new Loader();
  15. $content = "NVAR1=\"Hello\"\nNVAR2=\"World!\"\nNVAR3=\"{\$NVAR1} {\$NVAR2}\"\nNVAR4=\"\${NVAR1} \${NVAR2}\"";
  16. $expected = ['NVAR1' => 'Hello', 'NVAR2' => 'World!', 'NVAR3' => '{$NVAR1} {$NVAR2}', 'NVAR4' => '${NVAR1} ${NVAR2}'];
  17. self::assertSame($expected, $loader->load($repository, $content));
  18. }
  19. public function testLoaderWithWhitelist()
  20. {
  21. $adapter = new ArrayAdapter();
  22. $repository = RepositoryBuilder::create()->withReaders([$adapter])->withWriters([$adapter])->make();
  23. $loader = new Loader(['FOO']);
  24. self::assertSame(['FOO' => 'Hello'], $loader->load($repository, "FOO=\"Hello\"\nBAR=\"World!\"\n"));
  25. self::assertTrue($adapter->get('FOO')->isDefined());
  26. self::assertSame('Hello', $adapter->get('FOO')->get());
  27. self::assertFalse($adapter->get('BAR')->isDefined());
  28. }
  29. public function providesAdapters()
  30. {
  31. return [
  32. [null],
  33. [[new ArrayAdapter()]],
  34. [[new EnvConstAdapter()]],
  35. [[new ServerConstAdapter()]],
  36. ];
  37. }
  38. /**
  39. * @dataProvider providesAdapters
  40. */
  41. public function testLoaderWithSpecificAdapter($adapters)
  42. {
  43. $repository = RepositoryBuilder::create()->withReaders($adapters)->withWriters($adapters)->make();
  44. $loader = new Loader();
  45. $content = "NVAR1=\"Hello\"\nNVAR2=\"World!\"\nNVAR3=\"{\$NVAR1} {\$NVAR2}\"\nNVAR4=\"\${NVAR1} \${NVAR2}\"";
  46. $expected = ['NVAR1' => 'Hello', 'NVAR2' => 'World!', 'NVAR3' => '{$NVAR1} {$NVAR2}', 'NVAR4' => 'Hello World!'];
  47. self::assertSame($expected, $loader->load($repository, $content));
  48. }
  49. }