EnvironmentVariablesTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. use Dotenv\Environment\DotenvFactory;
  3. use Dotenv\Loader;
  4. use PHPUnit\Framework\TestCase;
  5. class EnvironmentVariablesTest extends TestCase
  6. {
  7. /**
  8. * @var \Dotenv\Environment\DotenvFactory
  9. */
  10. private $envFactory;
  11. protected function setUp()
  12. {
  13. $this->envFactory = new DotenvFactory();
  14. (new Loader([dirname(__DIR__).'/fixtures/env/.env'], $this->envFactory))->load();
  15. }
  16. public function testCheckingWhetherVariableExists()
  17. {
  18. $envVars = $this->envFactory->create();
  19. $this->assertTrue($envVars->has('FOO'));
  20. $this->assertFalse($envVars->has('NON_EXISTING_VARIABLE'));
  21. }
  22. public function testCheckingHasWithBadType()
  23. {
  24. $envVars = $this->envFactory->create();
  25. $this->assertFalse($envVars->has(123));
  26. $this->assertFalse($envVars->has(null));
  27. }
  28. public function testGettingVariableByName()
  29. {
  30. $envVars = $this->envFactory->create();
  31. $this->assertSame('bar', $envVars->get('FOO'));
  32. }
  33. /**
  34. * @expectedException \InvalidArgumentException
  35. * @expectedExceptionMessage Expected name to be a string.
  36. */
  37. public function testGettingBadVariable()
  38. {
  39. $envVars = $this->envFactory->create();
  40. $envVars->get(null);
  41. }
  42. public function testSettingVariable()
  43. {
  44. $envVars = $this->envFactory->create();
  45. $this->assertSame('bar', $envVars->get('FOO'));
  46. $envVars->set('FOO', 'new');
  47. $this->assertSame('new', $envVars->get('FOO'));
  48. }
  49. /**
  50. * @expectedException \InvalidArgumentException
  51. * @expectedExceptionMessage Expected name to be a string.
  52. */
  53. public function testSettingBadVariable()
  54. {
  55. $envVars = $this->envFactory->create();
  56. $envVars->set(null, 'foo');
  57. }
  58. public function testClearingVariable()
  59. {
  60. $envVars = $this->envFactory->create();
  61. $envVars->clear('FOO');
  62. $this->assertFalse($envVars->has('FOO'));
  63. }
  64. /**
  65. * @expectedException \InvalidArgumentException
  66. * @expectedExceptionMessage Expected name to be a string.
  67. */
  68. public function testClearingBadVariable()
  69. {
  70. $envVars = $this->envFactory->create();
  71. $envVars->clear(null);
  72. }
  73. public function testCannotSetVariableOnImmutableInstance()
  74. {
  75. $envVars = $this->envFactory->createImmutable();
  76. $this->assertSame('bar', $envVars->get('FOO'));
  77. $envVars->set('FOO', 'new');
  78. $this->assertSame('bar', $envVars->get('FOO'));
  79. }
  80. public function testCannotClearVariableOnImmutableInstance()
  81. {
  82. $envVars = $this->envFactory->createImmutable();
  83. $envVars->clear('FOO');
  84. $this->assertTrue($envVars->has('FOO'));
  85. }
  86. public function testCheckingWhetherVariableExistsUsingArrayNotation()
  87. {
  88. $envVars = $this->envFactory->create();
  89. $this->assertTrue(isset($envVars['FOO']));
  90. $this->assertFalse(isset($envVars['NON_EXISTING_VARIABLE']));
  91. }
  92. public function testGettingVariableByNameUsingArrayNotation()
  93. {
  94. $envVars = $this->envFactory->create();
  95. $this->assertSame('bar', $envVars['FOO']);
  96. }
  97. public function testSettingVariableUsingArrayNotation()
  98. {
  99. $envVars = $this->envFactory->create();
  100. $this->assertSame('bar', $envVars['FOO']);
  101. $envVars['FOO'] = 'new';
  102. $this->assertSame('new', $envVars['FOO']);
  103. }
  104. public function testClearingVariableUsingArrayNotation()
  105. {
  106. $envVars = $this->envFactory->create();
  107. unset($envVars['FOO']);
  108. $this->assertFalse(isset($envVars['FOO']));
  109. }
  110. }