Converted EnvVars to enum

This commit is contained in:
Alejandro Celaya
2022-04-23 12:44:17 +02:00
parent e8ebe77923
commit 54a23cc7fa
20 changed files with 123 additions and 283 deletions

View File

@@ -6,7 +6,6 @@ namespace ShlinkioTest\Shlink\Core\Config;
use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Core\Config\EnvVars;
use Shlinkio\Shlink\Core\Exception\InvalidArgumentException;
use function putenv;
@@ -14,92 +13,14 @@ class EnvVarsTest extends TestCase
{
protected function setUp(): void
{
putenv(EnvVars::BASE_PATH . '=the_base_path');
putenv(EnvVars::DB_NAME . '=shlink');
putenv(EnvVars::BASE_PATH->value . '=the_base_path');
putenv(EnvVars::DB_NAME->value . '=shlink');
}
protected function tearDown(): void
{
putenv(EnvVars::BASE_PATH . '=');
putenv(EnvVars::DB_NAME . '=');
}
/** @test */
public function casesReturnsTheSameListEveryTime(): void
{
$list = EnvVars::cases();
self::assertSame($list, EnvVars::cases());
self::assertSame([
EnvVars::DELETE_SHORT_URL_THRESHOLD,
EnvVars::DB_DRIVER,
EnvVars::DB_NAME,
EnvVars::DB_USER,
EnvVars::DB_PASSWORD,
EnvVars::DB_HOST,
EnvVars::DB_UNIX_SOCKET,
EnvVars::DB_PORT,
EnvVars::GEOLITE_LICENSE_KEY,
EnvVars::REDIS_SERVERS,
EnvVars::REDIS_SENTINEL_SERVICE,
EnvVars::MERCURE_PUBLIC_HUB_URL,
EnvVars::MERCURE_INTERNAL_HUB_URL,
EnvVars::MERCURE_JWT_SECRET,
EnvVars::DEFAULT_QR_CODE_SIZE,
EnvVars::DEFAULT_QR_CODE_MARGIN,
EnvVars::DEFAULT_QR_CODE_FORMAT,
EnvVars::DEFAULT_QR_CODE_ERROR_CORRECTION,
EnvVars::DEFAULT_QR_CODE_ROUND_BLOCK_SIZE,
EnvVars::RABBITMQ_ENABLED,
EnvVars::RABBITMQ_HOST,
EnvVars::RABBITMQ_PORT,
EnvVars::RABBITMQ_USER,
EnvVars::RABBITMQ_PASSWORD,
EnvVars::RABBITMQ_VHOST,
EnvVars::DEFAULT_INVALID_SHORT_URL_REDIRECT,
EnvVars::DEFAULT_REGULAR_404_REDIRECT,
EnvVars::DEFAULT_BASE_URL_REDIRECT,
EnvVars::REDIRECT_STATUS_CODE,
EnvVars::REDIRECT_CACHE_LIFETIME,
EnvVars::BASE_PATH,
EnvVars::PORT,
EnvVars::TASK_WORKER_NUM,
EnvVars::WEB_WORKER_NUM,
EnvVars::ANONYMIZE_REMOTE_ADDR,
EnvVars::TRACK_ORPHAN_VISITS,
EnvVars::DISABLE_TRACK_PARAM,
EnvVars::DISABLE_TRACKING,
EnvVars::DISABLE_IP_TRACKING,
EnvVars::DISABLE_REFERRER_TRACKING,
EnvVars::DISABLE_UA_TRACKING,
EnvVars::DISABLE_TRACKING_FROM,
EnvVars::DEFAULT_SHORT_CODES_LENGTH,
EnvVars::IS_HTTPS_ENABLED,
EnvVars::DEFAULT_DOMAIN,
EnvVars::AUTO_RESOLVE_TITLES,
EnvVars::REDIRECT_APPEND_EXTRA_PATH,
EnvVars::TIMEZONE,
EnvVars::VISITS_WEBHOOKS,
EnvVars::NOTIFY_ORPHAN_VISITS_TO_WEBHOOKS,
], $list);
}
/**
* @test
* @dataProvider provideInvalidEnvVars
*/
public function exceptionIsThrownWhenTryingToLoadInvalidEnvVar(string $envVar): void
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Invalid env var: "' . $envVar . '"');
EnvVars::{$envVar}();
}
public function provideInvalidEnvVars(): iterable
{
yield 'foo' => ['foo'];
yield 'bar' => ['bar'];
yield 'invalid' => ['invalid'];
putenv(EnvVars::BASE_PATH->value . '=');
putenv(EnvVars::DB_NAME->value . '=');
}
/**
@@ -113,10 +34,10 @@ class EnvVarsTest extends TestCase
public function provideExistingEnvVars(): iterable
{
yield 'DB_NAME' => [EnvVars::DB_NAME(), true];
yield 'BASE_PATH' => [EnvVars::BASE_PATH(), true];
yield 'DB_DRIVER' => [EnvVars::DB_DRIVER(), false];
yield 'DEFAULT_REGULAR_404_REDIRECT' => [EnvVars::DEFAULT_REGULAR_404_REDIRECT(), false];
yield 'DB_NAME' => [EnvVars::DB_NAME, true];
yield 'BASE_PATH' => [EnvVars::BASE_PATH, true];
yield 'DB_DRIVER' => [EnvVars::DB_DRIVER, false];
yield 'DEFAULT_REGULAR_404_REDIRECT' => [EnvVars::DEFAULT_REGULAR_404_REDIRECT, false];
}
/**
@@ -130,11 +51,11 @@ class EnvVarsTest extends TestCase
public function provideEnvVarsValues(): iterable
{
yield 'DB_NAME without default' => [EnvVars::DB_NAME(), 'shlink', null];
yield 'DB_NAME with default' => [EnvVars::DB_NAME(), 'shlink', 'foobar'];
yield 'BASE_PATH without default' => [EnvVars::BASE_PATH(), 'the_base_path', null];
yield 'BASE_PATH with default' => [EnvVars::BASE_PATH(), 'the_base_path', 'foobar'];
yield 'DB_DRIVER without default' => [EnvVars::DB_DRIVER(), null, null];
yield 'DB_DRIVER with default' => [EnvVars::DB_DRIVER(), 'foobar', 'foobar'];
yield 'DB_NAME without default' => [EnvVars::DB_NAME, 'shlink', null];
yield 'DB_NAME with default' => [EnvVars::DB_NAME, 'shlink', 'foobar'];
yield 'BASE_PATH without default' => [EnvVars::BASE_PATH, 'the_base_path', null];
yield 'BASE_PATH with default' => [EnvVars::BASE_PATH, 'the_base_path', 'foobar'];
yield 'DB_DRIVER without default' => [EnvVars::DB_DRIVER, null, null];
yield 'DB_DRIVER with default' => [EnvVars::DB_DRIVER, 'foobar', 'foobar'];
}
}