test_config.global.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. declare(strict_types=1);
  3. namespace Shlinkio\Shlink;
  4. use GuzzleHttp\Client;
  5. use PDO;
  6. use Zend\ConfigAggregator\ConfigAggregator;
  7. use Zend\ServiceManager\Factory\InvokableFactory;
  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 = function (string $driver) {
  17. return sprintf('shlink_db%s', $driver === 'mysql' ? '' : '_maria');
  18. };
  19. $driverConfigMap = [
  20. 'sqlite' => [
  21. 'driver' => 'pdo_sqlite',
  22. 'path' => sys_get_temp_dir() . '/shlink-tests.db',
  23. ],
  24. 'mysql' => [
  25. 'driver' => 'pdo_mysql',
  26. 'host' => $isCi ? '127.0.0.1' : $getMysqlHost($driver),
  27. 'user' => 'root',
  28. 'password' => $isCi ? '' : 'root',
  29. 'dbname' => 'shlink_test',
  30. 'charset' => 'utf8',
  31. 'driverOptions' => [
  32. PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
  33. ],
  34. ],
  35. 'postgres' => [
  36. 'driver' => 'pdo_pgsql',
  37. 'host' => $isCi ? '127.0.0.1' : 'shlink_db_postgres',
  38. 'user' => 'postgres',
  39. 'password' => $isCi ? '' : 'root',
  40. 'dbname' => 'shlink_test',
  41. 'charset' => 'utf8',
  42. ],
  43. ];
  44. $driverConfigMap['maria'] = $driverConfigMap['mysql'];
  45. return $driverConfigMap[$driver] ?? [];
  46. };
  47. return [
  48. 'debug' => true,
  49. ConfigAggregator::ENABLE_CACHE => false,
  50. 'url_shortener' => [
  51. 'domain' => [
  52. 'schema' => 'http',
  53. 'hostname' => 'doma.in',
  54. ],
  55. ],
  56. 'zend-expressive-swoole' => [
  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. ],
  66. ],
  67. ],
  68. 'dependencies' => [
  69. 'services' => [
  70. 'shlink_test_api_client' => new Client([
  71. 'base_uri' => sprintf('http://%s:%s/', $swooleTestingHost, $swooleTestingPort),
  72. 'http_errors' => false,
  73. ]),
  74. ],
  75. 'factories' => [
  76. TestUtils\Helper\TestHelper::class => InvokableFactory::class,
  77. ],
  78. ],
  79. 'entity_manager' => [
  80. 'connection' => $buildDbConnection(),
  81. ],
  82. 'data_fixtures' => [
  83. 'paths' => [
  84. __DIR__ . '/../../module/Rest/test-api/Fixtures',
  85. ],
  86. ],
  87. ];