Files

81 lines
2.5 KiB
PHP
Raw Permalink Normal View History

2022-01-20 20:40:34 +01:00
<?php
declare(strict_types=1);
namespace ShlinkioTest\Shlink\Core\Config;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Test;
2024-10-13 12:24:59 +02:00
use PHPUnit\Framework\Attributes\TestWith;
2022-01-20 20:40:34 +01:00
use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Core\Config\EnvVars;
use function putenv;
class EnvVarsTest extends TestCase
{
protected function setUp(): void
{
2022-04-23 12:44:17 +02:00
putenv(EnvVars::BASE_PATH->value . '=the_base_path');
putenv(EnvVars::DB_NAME->value . '=shlink');
2024-02-10 09:54:59 +01:00
$envFilePath = __DIR__ . '/../DB_PASSWORD.env';
putenv(EnvVars::DB_PASSWORD->value . '_FILE=' . $envFilePath);
2022-01-20 20:40:34 +01:00
}
protected function tearDown(): void
{
2024-10-13 12:32:59 +02:00
putenv(EnvVars::BASE_PATH->value);
putenv(EnvVars::DB_NAME->value);
putenv(EnvVars::DB_PASSWORD->value . '_FILE');
2022-01-20 20:40:34 +01:00
}
#[Test, DataProvider('provideExistingEnvVars')]
2022-01-20 20:40:34 +01:00
public function existsInEnvReturnsExpectedValue(EnvVars $envVar, bool $exists): void
{
self::assertEquals($exists, $envVar->existsInEnv());
}
2023-02-09 09:32:38 +01:00
public static function provideExistingEnvVars(): iterable
2022-01-20 20:40:34 +01:00
{
2024-10-13 12:32:59 +02:00
yield 'DB_NAME (is set)' => [EnvVars::DB_NAME, true];
yield 'BASE_PATH (is set)' => [EnvVars::BASE_PATH, true];
yield 'DB_DRIVER (has default)' => [EnvVars::DB_DRIVER, true];
2022-04-23 12:44:17 +02:00
yield 'DEFAULT_REGULAR_404_REDIRECT' => [EnvVars::DEFAULT_REGULAR_404_REDIRECT, false];
2022-01-20 20:40:34 +01:00
}
#[Test, DataProvider('provideEnvVarsValues')]
2024-10-13 12:24:59 +02:00
public function expectedValueIsLoadedFromEnv(EnvVars $envVar, mixed $expected): void
2022-01-20 20:40:34 +01:00
{
2024-10-13 12:24:59 +02:00
self::assertEquals($expected, $envVar->loadFromEnv());
2022-01-20 20:40:34 +01:00
}
2023-02-09 09:32:38 +01:00
public static function provideEnvVarsValues(): iterable
2022-01-20 20:40:34 +01:00
{
2024-10-13 12:24:59 +02:00
yield 'DB_NAME (is set)' => [EnvVars::DB_NAME, 'shlink'];
yield 'BASE_PATH (is set)' => [EnvVars::BASE_PATH, 'the_base_path'];
yield 'DB_DRIVER (has default)' => [EnvVars::DB_DRIVER, 'sqlite'];
2022-01-20 20:40:34 +01:00
}
2024-02-10 09:54:59 +01:00
#[Test]
public function fallsBackToReadEnvVarsFromFile(): void
{
self::assertEquals('this_is_the_password', EnvVars::DB_PASSWORD->loadFromEnv());
}
2024-10-13 12:24:59 +02:00
#[Test]
#[TestWith(['mysql', '3306'])]
#[TestWith(['maria', '3306'])]
#[TestWith(['postgres', '5432'])]
#[TestWith(['mssql', '1433'])]
public function defaultPortIsResolvedBasedOnDbDriver(string $dbDriver, string $expectedPort): void
{
putenv(EnvVars::DB_DRIVER->value . '=' . $dbDriver);
try {
self::assertEquals($expectedPort, EnvVars::DB_PORT->loadFromEnv());
} finally {
2024-10-13 12:32:59 +02:00
putenv(EnvVars::DB_DRIVER->value);
2024-10-13 12:24:59 +02:00
}
}
2022-01-20 20:40:34 +01:00
}