Files
jabali-panel/tests/Feature/Filament/AdminSecurityFail2banStartTest.php
2026-02-02 03:11:45 +02:00

93 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Feature\Filament;
use App\Filament\Admin\Pages\Security;
use App\Models\User;
use App\Services\Agent\AgentClient;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
use Tests\TestCase;
class TestableSecurityFail2ban extends Security
{
protected function getAgent(): AgentClient
{
return new class extends AgentClient
{
public function send(string $action, array $params = []): array
{
return match ($action) {
'ufw.status' => [
'active' => true,
'default_incoming' => 'deny',
'default_outgoing' => 'allow',
'status_text' => 'active',
],
'ufw.list_rules' => [
'rules' => [],
],
'fail2ban.status_light' => [
'installed' => true,
'running' => false,
'version' => '1.0',
],
'fail2ban.status' => [
'installed' => true,
'running' => false,
'version' => '1.0',
'jails' => [],
'total_banned' => 0,
'max_retry' => 5,
'ban_time' => 600,
'find_time' => 600,
],
'fail2ban.list_jails' => [
'jails' => [],
],
'fail2ban.logs' => [
'logs' => [],
],
'clamav.status_light' => [
'installed' => false,
'running' => false,
'version' => 'Unknown',
'realtime_enabled' => false,
'realtime_running' => false,
'light_mode' => false,
],
'ssh.get_settings' => [
'success' => true,
'password_auth' => true,
'pubkey_auth' => true,
'port' => 22,
],
'service.enable', 'service.start' => [
'success' => true,
],
default => ['success' => true],
};
}
};
}
}
class AdminSecurityFail2banStartTest extends TestCase
{
use RefreshDatabase;
public function test_fail2ban_start_action_is_callable(): void
{
$admin = User::factory()->admin()->create();
$this->actingAs($admin);
Livewire::test(TestableSecurityFail2ban::class, ['activeTab' => 'fail2ban'])
->assertStatus(200)
->call('startFail2ban')
->assertStatus(200);
}
}