2026-03-23 09:37:49 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use App\Jobs\DockerCleanupJob;
|
|
|
|
|
use App\Models\DockerCleanupExecution;
|
|
|
|
|
use App\Models\Server;
|
|
|
|
|
use App\Models\User;
|
|
|
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
|
|
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
|
|
2026-03-30 11:35:35 +00:00
|
|
|
it('persists the server id when creating an execution record', function () {
|
|
|
|
|
$user = User::factory()->create();
|
|
|
|
|
$team = $user->teams()->first();
|
|
|
|
|
$server = Server::factory()->create(['team_id' => $team->id]);
|
|
|
|
|
|
|
|
|
|
$execution = DockerCleanupExecution::create([
|
|
|
|
|
'server_id' => $server->id,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
expect($execution->server_id)->toBe($server->id);
|
|
|
|
|
$this->assertDatabaseHas('docker_cleanup_executions', [
|
|
|
|
|
'id' => $execution->id,
|
|
|
|
|
'server_id' => $server->id,
|
|
|
|
|
]);
|
|
|
|
|
});
|
|
|
|
|
|
2026-03-23 09:37:49 +00:00
|
|
|
it('creates a failed execution record when server is not functional', function () {
|
|
|
|
|
$user = User::factory()->create();
|
|
|
|
|
$team = $user->teams()->first();
|
|
|
|
|
$server = Server::factory()->create(['team_id' => $team->id]);
|
|
|
|
|
|
|
|
|
|
// Make server not functional by setting is_reachable to false
|
|
|
|
|
$server->settings->update(['is_reachable' => false]);
|
|
|
|
|
|
|
|
|
|
$job = new DockerCleanupJob($server);
|
|
|
|
|
$job->handle();
|
|
|
|
|
|
|
|
|
|
$execution = DockerCleanupExecution::where('server_id', $server->id)->first();
|
|
|
|
|
|
|
|
|
|
expect($execution)->not->toBeNull()
|
|
|
|
|
->and($execution->status)->toBe('failed')
|
|
|
|
|
->and($execution->message)->toContain('not functional')
|
|
|
|
|
->and($execution->finished_at)->not->toBeNull();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('creates a failed execution record when server is force disabled', function () {
|
|
|
|
|
$user = User::factory()->create();
|
|
|
|
|
$team = $user->teams()->first();
|
|
|
|
|
$server = Server::factory()->create(['team_id' => $team->id]);
|
|
|
|
|
|
|
|
|
|
// Make server not functional by force disabling
|
|
|
|
|
$server->settings->update([
|
|
|
|
|
'is_reachable' => true,
|
|
|
|
|
'is_usable' => true,
|
|
|
|
|
'force_disabled' => true,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
$job = new DockerCleanupJob($server);
|
|
|
|
|
$job->handle();
|
|
|
|
|
|
|
|
|
|
$execution = DockerCleanupExecution::where('server_id', $server->id)->first();
|
|
|
|
|
|
|
|
|
|
expect($execution)->not->toBeNull()
|
|
|
|
|
->and($execution->status)->toBe('failed')
|
|
|
|
|
->and($execution->message)->toContain('not functional');
|
|
|
|
|
});
|