BaseLaravelTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace Knuckles\Scribe\Tests;
  3. use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
  4. use Knuckles\Scribe\Config\AuthIn;
  5. use Knuckles\Scribe\ScribeServiceProvider;
  6. use Orchestra\Testbench\TestCase;
  7. use function Knuckles\Scribe\Config\withConfiguredStrategy;
  8. use Knuckles\Scribe\Config;
  9. use Knuckles\Scribe\Extracting\Strategies;
  10. class BaseLaravelTest extends TestCase
  11. {
  12. use TestHelpers;
  13. use ArraySubsetAsserts;
  14. protected function getEnvironmentSetUp($app)
  15. {
  16. $app['config']->set('database.default', 'test');
  17. $app['config']->set('database.connections.test', [
  18. 'driver' => 'sqlite',
  19. 'database' => ':memory:',
  20. 'prefix' => '',
  21. ]);
  22. $app['config']->set('database.default', 'sqlite');
  23. $app['config']->set('database.connections.sqlite', [
  24. 'driver' => 'sqlite',
  25. 'database' => ':memory:',
  26. 'prefix' => '',
  27. ]);
  28. ScribeServiceProvider::$customTranslationLayerLoaded = false;
  29. }
  30. /**
  31. * @param \Illuminate\Foundation\Application $app
  32. *
  33. * @return array
  34. */
  35. protected function getPackageProviders($app)
  36. {
  37. $providers = [
  38. ScribeServiceProvider::class,
  39. ];
  40. return $providers;
  41. }
  42. protected function setUp(): void
  43. {
  44. parent::setUp();
  45. $this->setConfig(Config\Factory::make(
  46. extracting: Config\Extracting::with(
  47. routes: Config\Routes::match(prefixes: ['*']),
  48. defaultGroup: 'Endpoints',
  49. databaseConnectionsToTransact: [],
  50. fakerSeedForExamples: 1234,
  51. auth: Config\Extracting::auth(
  52. enabled: false,
  53. default: false,
  54. in: AuthIn::BEARER,
  55. useValue: env('SCRIBE_AUTH_KEY'),
  56. placeholder: '{YOUR_AUTH_KEY}',
  57. ),
  58. strategies: Config\Extracting::strategies(
  59. metadata: Config\Defaults::METADATA_STRATEGIES,
  60. urlParameters: Config\Defaults::URL_PARAMETERS_STRATEGIES,
  61. queryParameters: Config\Defaults::QUERY_PARAMETERS_STRATEGIES,
  62. headers: Config\Defaults::HEADERS_STRATEGIES,
  63. bodyParameters: Config\Defaults::BODY_PARAMETERS_STRATEGIES,
  64. responses: withConfiguredStrategy(
  65. Config\Defaults::RESPONSES_STRATEGIES,
  66. Strategies\Responses\ResponseCalls::withSettings(
  67. only: [],
  68. except: ['*'], // Disabled to speed up tests
  69. config: [
  70. 'app.env' => 'documentation',
  71. // 'app.debug' => false,
  72. ],
  73. queryParams: [],
  74. bodyParams: [],
  75. fileParams: [],
  76. cookies: [],
  77. )),
  78. responseFields: Config\Defaults::RESPONSE_FIELDS_STRATEGIES,
  79. )
  80. ),
  81. output: Config\Output::with(
  82. type: Config\Output::laravelType(
  83. theme: Config\InHouseTheme::Legacy,
  84. docsUrl: '/apidocs'
  85. ),
  86. baseUrls: [
  87. "production" => config("app.base_url"),
  88. ],
  89. // Skip these for faster tests
  90. postman: Config\Output::postman(
  91. enabled: false,
  92. ),
  93. openApi: Config\Output::openApi(
  94. enabled: false,
  95. ),
  96. )
  97. ));
  98. }
  99. protected function setConfig($configValues): void
  100. {
  101. foreach ($configValues as $key => $value) {
  102. config(["scribe.$key" => $value]);
  103. }
  104. }
  105. }