ConfigTest.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Services;
  4. use PHPUnit\Framework\TestCase;
  5. use App\Services\Config;
  6. class ConfigTest extends TestCase
  7. {
  8. /**
  9. * @covers App\Services\Config::getViewConfig
  10. */
  11. public function testGetPublicConfig(): void
  12. {
  13. $_ENV = [
  14. 'appName' => 'My App',
  15. 'baseUrl' => 'https://example.com',
  16. 'enable_checkin' => true,
  17. 'checkinMin' => 10,
  18. 'checkinMax' => 20,
  19. 'jump_delay' => 5,
  20. 'enable_kill' => true,
  21. 'enable_change_email' => false,
  22. 'enable_r2_client_download' => true,
  23. 'jsdelivr_url' => 'cdn.jsdelivr.net',
  24. ];
  25. $mockEnv = [
  26. 'appName' => 'My App',
  27. 'baseUrl' => 'https://example.com',
  28. 'enable_checkin' => true,
  29. 'checkinMin' => 10,
  30. 'checkinMax' => 20,
  31. 'jump_delay' => 5,
  32. 'enable_kill' => true,
  33. 'enable_change_email' => false,
  34. 'enable_r2_client_download' => true,
  35. 'jsdelivr_url' => 'cdn.jsdelivr.net',
  36. ];
  37. $config = Config::getViewConfig();
  38. $this->assertSame($mockEnv['appName'], $config['appName']);
  39. $this->assertSame($mockEnv['baseUrl'], $config['baseUrl']);
  40. $this->assertSame($mockEnv['enable_checkin'], $config['enable_checkin']);
  41. $this->assertSame($mockEnv['checkinMin'], $config['checkinMin']);
  42. $this->assertSame($mockEnv['checkinMax'], $config['checkinMax']);
  43. $this->assertSame($mockEnv['jump_delay'], $config['jump_delay']);
  44. $this->assertSame($mockEnv['enable_kill'], $config['enable_kill']);
  45. $this->assertSame($mockEnv['enable_change_email'], $config['enable_change_email']);
  46. $this->assertSame($mockEnv['enable_r2_client_download'], $config['enable_r2_client_download']);
  47. $this->assertSame($mockEnv['jsdelivr_url'], $config['jsdelivr_url']);
  48. }
  49. /**
  50. * @covers App\Services\Config::getRedisConfig
  51. */
  52. public function testGetRedisConfig(): void
  53. {
  54. $_ENV = [
  55. 'redis_host' => 'localhost',
  56. 'redis_port' => 6379,
  57. 'redis_timeout' => 10,
  58. 'redis_username' => 'myuser',
  59. 'redis_password' => 'mypassword',
  60. 'redis_ssl' => false,
  61. ];
  62. $mockEnv = [
  63. 'redis_host' => 'localhost',
  64. 'redis_port' => 6379,
  65. 'redis_timeout' => 10,
  66. 'redis_username' => 'myuser',
  67. 'redis_password' => 'mypassword',
  68. 'redis_ssl' => false,
  69. ];
  70. $config = Config::getRedisConfig();
  71. $this->assertSame($mockEnv['redis_host'], $config['host']);
  72. $this->assertSame($mockEnv['redis_port'], $config['port']);
  73. $this->assertSame($mockEnv['redis_timeout'], $config['connectTimeout']);
  74. $this->assertSame([$mockEnv['redis_username'], $mockEnv['redis_password']], $config['auth']);
  75. $this->assertSame(['verify_peer' => $mockEnv['redis_ssl']], $config['ssl']);
  76. }
  77. /**
  78. * @covers App\Services\Config::getDbConfig
  79. */
  80. public function testGetDbConfig(): void
  81. {
  82. $_ENV = [
  83. 'db_driver' => 'mysql',
  84. 'db_host' => 'localhost',
  85. 'db_socket' => '/var/run/mysqld/mysqld.sock',
  86. 'db_database' => 'mydb',
  87. 'db_username' => 'myuser',
  88. 'db_password' => 'mypassword',
  89. 'db_charset' => 'utf8mb4',
  90. 'db_collation' => 'utf8mb4_unicode_ci',
  91. 'db_prefix' => '',
  92. 'db_port' => 3306,
  93. ];
  94. $mockEnv = [
  95. 'db_driver' => 'mysql',
  96. 'db_host' => 'localhost',
  97. 'db_socket' => '/var/run/mysqld/mysqld.sock',
  98. 'db_database' => 'mydb',
  99. 'db_username' => 'myuser',
  100. 'db_password' => 'mypassword',
  101. 'db_charset' => 'utf8mb4',
  102. 'db_collation' => 'utf8mb4_unicode_ci',
  103. 'db_prefix' => '',
  104. 'db_port' => 3306,
  105. ];
  106. $config = Config::getDbConfig();
  107. $this->assertSame($mockEnv['db_driver'], $config['driver']);
  108. $this->assertSame($mockEnv['db_host'], $config['host']);
  109. $this->assertSame($mockEnv['db_socket'], $config['unix_socket']);
  110. $this->assertSame($mockEnv['db_database'], $config['database']);
  111. $this->assertSame($mockEnv['db_username'], $config['username']);
  112. $this->assertSame($mockEnv['db_password'], $config['password']);
  113. $this->assertSame($mockEnv['db_charset'], $config['charset']);
  114. $this->assertSame($mockEnv['db_collation'], $config['collation']);
  115. $this->assertSame($mockEnv['db_prefix'], $config['prefix']);
  116. $this->assertSame($mockEnv['db_port'], $config['port']);
  117. }
  118. /**
  119. * @covers App\Services\Config::getSsMethod
  120. */
  121. public function testGetSsMethod(): void
  122. {
  123. $params = Config::getSsMethod('ss_aead_method');
  124. $this->assertIsArray($params);
  125. $this->assertContains('aes-128-gcm', $params);
  126. $this->assertContains('aes-192-gcm', $params);
  127. $this->assertContains('aes-256-gcm', $params);
  128. $this->assertContains('chacha20-ietf-poly1305', $params);
  129. $this->assertContains('xchacha20-ietf-poly1305', $params);
  130. }
  131. }