<?php namespace Tests\Feature; use App\Enums\LoadBalancerMethod; use App\Facades\SSH; use App\Models\Server; use App\Web\Pages\Servers\Sites\View; use App\Web\Pages\Servers\Sites\Widgets\LoadBalancerServers; use Illuminate\Foundation\Testing\RefreshDatabase; use Livewire\Livewire; use Tests\TestCase; use Tests\Traits\PrepareLoadBalancer; class LoadBalancerTest extends TestCase { use PrepareLoadBalancer; use RefreshDatabase; protected function setUp(): void { parent::setUp(); $this->prepare(); } public function test_visit_load_balancer_servers(): void { $this->actingAs($this->user); $this->get( View::getUrl([ 'server' => $this->server, 'site' => $this->site, ]) ) ->assertSuccessful() ->assertSee($this->site->domain) ->assertSee('Load Balancer Servers'); } public function test_update_load_balancer_servers() { SSH::fake(); $this->actingAs($this->user); $servers = Server::query()->where('id', '!=', $this->server->id)->get(); $this->assertEquals(2, $servers->count()); Livewire::test(LoadBalancerServers::class, [ 'site' => $this->site, ]) ->assertFormExists() ->fillForm([ 'method' => LoadBalancerMethod::ROUND_ROBIN, 'servers' => [ [ 'server' => $servers[0]->local_ip, 'port' => 80, 'weight' => 1, 'backup' => false, ], [ 'server' => $servers[1]->local_ip, 'port' => 80, 'weight' => 1, 'backup' => false, ], ], ]) ->call('save') ->assertSuccessful(); $this->assertDatabaseHas('load_balancer_servers', [ 'load_balancer_id' => $this->site->id, 'ip' => $servers[0]->local_ip, 'port' => 80, 'weight' => 1, 'backup' => false, ]); $this->assertDatabaseHas('load_balancer_servers', [ 'load_balancer_id' => $this->site->id, 'ip' => $servers[1]->local_ip, 'port' => 80, 'weight' => 1, 'backup' => false, ]); } }