previousHttpHost = $_SERVER['HTTP_HOST'] ?? null; $_SERVER['HTTP_HOST'] = config('domains.domains.crm.host'); $this->refreshApplication(); $this->artisan('migrate'); config()->set('cache.default', 'array'); config()->set('queue.default', 'sync'); @unlink(HealthProbe::heartbeatPath()); }); afterEach(function () { @unlink(HealthProbe::heartbeatPath()); if ($this->previousHttpHost === null) { unset($_SERVER['HTTP_HOST']); } else { $_SERVER['HTTP_HOST'] = $this->previousHttpHost; } }); function statusPageUser(int $admin): User { $account = UserAccount::create([ 'first_name' => 'Sys', 'last_name' => 'Admin', 'm_first_name' => 'Sys', 'm_last_name' => 'Admin', 'm_account' => 'M'.random_int(1000, 9999), ]); return User::forceCreate([ 'email' => 'sys-'.uniqid('', true).'@example.com', 'password' => bcrypt('secret'), 'lang' => 'de', 'active' => 1, 'blocked' => 0, 'wizard' => 100, 'admin' => $admin, 'payment_account' => now()->addYear(), 'account_id' => $account->id, ])->fresh(); } test('system admins see the checks, the version and the menu entry', function () { config()->set('app.version', 'v1.0.2'); config()->set('monitoring.health.token', null); app(HealthProbe::class)->recordHeartbeat(); $this->actingAs(statusPageUser(4)) ->get(route('sysadmin_status')) ->assertOk() ->assertSee('Systemstatus') ->assertSee('Datenbank') ->assertSee('Scheduler') ->assertSee('Fehlgeschlagene Jobs') ->assertSee('v1.0.2') ->assertSee(route('sysadmin_status'), false) ->assertSee('Kein Token'); }); test('other admins are not allowed to open the page', function () { $this->actingAs(statusPageUser(3)) ->get(route('sysadmin_status')) ->assertForbidden(); });