test_config.global.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. declare(strict_types=1);
  3. namespace Shlinkio\Shlink;
  4. use GuzzleHttp\Client;
  5. use Laminas\ConfigAggregator\ConfigAggregator;
  6. use Laminas\ServiceManager\Factory\InvokableFactory;
  7. use PDO;
  8. use function Shlinkio\Shlink\Common\env;
  9. use function sprintf;
  10. use function sys_get_temp_dir;
  11. $swooleTestingHost = '127.0.0.1';
  12. $swooleTestingPort = 9999;
  13. $buildDbConnection = function (): array {
  14. $driver = env('DB_DRIVER', 'sqlite');
  15. $isCi = env('TRAVIS', false);
  16. $getMysqlHost = fn (string $driver) => sprintf('shlink_db%s', $driver === 'mysql' ? '' : '_maria');
  17. $driverConfigMap = [
  18. 'sqlite' => [
  19. 'driver' => 'pdo_sqlite',
  20. 'path' => sys_get_temp_dir() . '/shlink-tests.db',
  21. ],
  22. 'mysql' => [
  23. 'driver' => 'pdo_mysql',
  24. 'host' => $isCi ? '127.0.0.1' : $getMysqlHost($driver),
  25. 'user' => 'root',
  26. 'password' => $isCi ? '' : 'root',
  27. 'dbname' => 'shlink_test',
  28. 'charset' => 'utf8',
  29. 'driverOptions' => [
  30. PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
  31. ],
  32. ],
  33. 'postgres' => [
  34. 'driver' => 'pdo_pgsql',
  35. 'host' => $isCi ? '127.0.0.1' : 'shlink_db_postgres',
  36. 'user' => 'postgres',
  37. 'password' => $isCi ? '' : 'root',
  38. 'dbname' => 'shlink_test',
  39. 'charset' => 'utf8',
  40. ],
  41. ];
  42. $driverConfigMap['maria'] = $driverConfigMap['mysql'];
  43. return $driverConfigMap[$driver] ?? [];
  44. };
  45. return [
  46. 'debug' => true,
  47. ConfigAggregator::ENABLE_CACHE => false,
  48. 'url_shortener' => [
  49. 'domain' => [
  50. 'schema' => 'http',
  51. 'hostname' => 'doma.in',
  52. ],
  53. 'validate_url' => true,
  54. ],
  55. 'mezzio-swoole' => [
  56. 'enable_coroutine' => false,
  57. 'swoole-http-server' => [
  58. 'host' => $swooleTestingHost,
  59. 'port' => $swooleTestingPort,
  60. 'process-name' => 'shlink_test',
  61. 'options' => [
  62. 'pid_file' => sys_get_temp_dir() . '/shlink-test-swoole.pid',
  63. 'worker_num' => 1,
  64. 'task_worker_num' => 1,
  65. 'enable_coroutine' => false,
  66. ],
  67. ],
  68. ],
  69. 'dependencies' => [
  70. 'services' => [
  71. 'shlink_test_api_client' => new Client([
  72. 'base_uri' => sprintf('http://%s:%s/', $swooleTestingHost, $swooleTestingPort),
  73. 'http_errors' => false,
  74. ]),
  75. ],
  76. 'factories' => [
  77. TestUtils\Helper\TestHelper::class => InvokableFactory::class,
  78. ],
  79. ],
  80. 'entity_manager' => [
  81. 'connection' => $buildDbConnection(),
  82. ],
  83. 'data_fixtures' => [
  84. 'paths' => [
  85. __DIR__ . '/../../module/Rest/test-api/Fixtures',
  86. ],
  87. ],
  88. ];