use BookStack\Http\HttpClientHistory;
use BookStack\Http\HttpRequestService;
use BookStack\Settings\SettingService;
-use BookStack\Uploads\HttpFetcher;
use BookStack\Users\Models\User;
use Illuminate\Contracts\Console\Kernel;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Testing\Assert as PHPUnit;
-use Mockery;
use Monolog\Handler\TestHandler;
use Monolog\Logger;
use Ssddanbrown\AssertHtml\TestsHtml;
$this->permissions = new PermissionsProvider($this->users);
$this->files = new FileProvider();
- User::clearDefault();
parent::setUp();
// We can uncomment the below to run tests with failings upon deprecations.
}
}
- /**
- * Mock the HttpFetcher service and return the given data on fetch.
- */
- protected function mockHttpFetch($returnData, int $times = 1)
- {
- // TODO - Remove
- $mockHttp = Mockery::mock(HttpFetcher::class);
- $this->app[HttpFetcher::class] = $mockHttp;
- $mockHttp->shouldReceive('fetch')
- ->times($times)
- ->andReturn($returnData);
- }
-
/**
* Mock the http client used in BookStack http calls.
*/
* Database config is juggled so the value can be restored when
* parallel testing are used, where multiple databases exist.
*/
- protected function runWithEnv(string $name, $value, callable $callback)
+ protected function runWithEnv(array $valuesByKey, callable $callback, bool $handleDatabase = true): void
{
Env::disablePutenv();
- $originalVal = $_SERVER[$name] ?? null;
-
- if (is_null($value)) {
- unset($_SERVER[$name]);
- } else {
- $_SERVER[$name] = $value;
+ $originals = [];
+ foreach ($valuesByKey as $key => $value) {
+ $originals[$key] = $_SERVER[$key] ?? null;
+
+ if (is_null($value)) {
+ unset($_SERVER[$key]);
+ } else {
+ $_SERVER[$key] = $value;
+ }
}
$database = config('database.connections.mysql_testing.database');
$this->refreshApplication();
- DB::purge();
- config()->set('database.connections.mysql_testing.database', $database);
- DB::beginTransaction();
+ if ($handleDatabase) {
+ DB::purge();
+ config()->set('database.connections.mysql_testing.database', $database);
+ DB::beginTransaction();
+ }
$callback();
- DB::rollBack();
+ if ($handleDatabase) {
+ DB::rollBack();
+ }
- if (is_null($originalVal)) {
- unset($_SERVER[$name]);
- } else {
- $_SERVER[$name] = $originalVal;
+ foreach ($originals as $key => $value) {
+ if (is_null($value)) {
+ unset($_SERVER[$key]);
+ } else {
+ $_SERVER[$key] = $value;
+ }
}
}
$detailsToCheck = ['type' => $type];
if ($entity) {
- $detailsToCheck['entity_type'] = $entity->getMorphClass();
- $detailsToCheck['entity_id'] = $entity->id;
+ $detailsToCheck['loggable_type'] = $entity->getMorphClass();
+ $detailsToCheck['loggable_id'] = $entity->id;
}
if ($detail) {