X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/b8c16b15a9f945b72d2ca4fe0c0172ba422199bc..refs/pull/2227/head:/tests/SharedTestHelpers.php diff --git a/tests/SharedTestHelpers.php b/tests/SharedTestHelpers.php index f7b7d5edf..c7659a02d 100644 --- a/tests/SharedTestHelpers.php +++ b/tests/SharedTestHelpers.php @@ -16,7 +16,10 @@ use BookStack\Entities\Repos\PageRepo; use BookStack\Settings\SettingService; use BookStack\Uploads\HttpFetcher; use Illuminate\Support\Env; +use Illuminate\Support\Facades\Log; use Mockery; +use Monolog\Handler\TestHandler; +use Monolog\Logger; use Throwable; trait SharedTestHelpers @@ -69,14 +72,14 @@ trait SharedTestHelpers } /** - * Get an instance of a user with 'viewer' permissions - * @param $attributes - * @return mixed + * Get an instance of a user with 'viewer' permissions. */ - protected function getViewer($attributes = []) + protected function getViewer(array $attributes = []): User { $user = Role::getRole('viewer')->users()->first(); - if (!empty($attributes)) $user->forceFill($attributes)->save(); + if (!empty($attributes)) { + $user->forceFill($attributes)->save(); + } return $user; } @@ -277,4 +280,22 @@ trait SharedTestHelpers $this->assertStringStartsWith('You do not have permission to access', $error); } + /** + * Set a test handler as the logging interface for the application. + * Allows capture of logs for checking against during tests. + */ + protected function withTestLogger(): TestHandler + { + $monolog = new Logger('testing'); + $testHandler = new TestHandler(); + $monolog->pushHandler($testHandler); + + Log::extend('testing', function() use ($monolog) { + return $monolog; + }); + Log::setDefaultDriver('testing'); + + return $testHandler; + } + } \ No newline at end of file