From 1936bb08bf707311577cff45344008d0dfe1888a Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Fri, 13 Mar 2026 17:07:50 +0100 Subject: [PATCH] feat(server): auto-fetch server metadata after validation Server metadata is now automatically gathered when server validation completes successfully, both in the async job and Livewire component. This ensures server details (OS, CPU count, etc.) are populated immediately after validation passes, improving the user experience without requiring manual metadata fetching. Tests added to verify gatherServerMetadata is called on successful validation and skipped when validation fails. --- app/Jobs/ValidateAndInstallServerJob.php | 3 +++ app/Livewire/Server/ValidateAndInstall.php | 3 +++ tests/Feature/ServerMetadataTest.php | 23 ++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/app/Jobs/ValidateAndInstallServerJob.php b/app/Jobs/ValidateAndInstallServerJob.php index 9f02f9b78..288904471 100644 --- a/app/Jobs/ValidateAndInstallServerJob.php +++ b/app/Jobs/ValidateAndInstallServerJob.php @@ -179,6 +179,9 @@ public function handle(): void // Mark validation as complete $this->server->update(['is_validating' => false]); + // Auto-fetch server details now that validation passed + $this->server->gatherServerMetadata(); + // Refresh server to get latest state $this->server->refresh(); diff --git a/app/Livewire/Server/ValidateAndInstall.php b/app/Livewire/Server/ValidateAndInstall.php index 1a5bd381b..198d823b9 100644 --- a/app/Livewire/Server/ValidateAndInstall.php +++ b/app/Livewire/Server/ValidateAndInstall.php @@ -198,6 +198,9 @@ public function validateDockerVersion() // Mark validation as complete $this->server->update(['is_validating' => false]); + // Auto-fetch server details now that validation passed + $this->server->gatherServerMetadata(); + $this->dispatch('refreshServerShow'); $this->dispatch('refreshBoardingIndex'); ServerValidated::dispatch($this->server->team_id, $this->server->uuid); diff --git a/tests/Feature/ServerMetadataTest.php b/tests/Feature/ServerMetadataTest.php index fcd515de9..204ae456d 100644 --- a/tests/Feature/ServerMetadataTest.php +++ b/tests/Feature/ServerMetadataTest.php @@ -1,9 +1,11 @@ server->server_metadata['os'])->toBe('Ubuntu 22.04') ->and($this->server->server_metadata['cpus'])->toBe(4); }); + +it('calls gatherServerMetadata during ValidateAndInstall when docker version is valid', function () { + $serverMock = Mockery::mock($this->server)->makePartial(); + $serverMock->shouldReceive('isSwarm')->andReturn(false); + $serverMock->shouldReceive('validateDockerEngineVersion')->once()->andReturn('24.0.0'); + $serverMock->shouldReceive('gatherServerMetadata')->once(); + $serverMock->shouldReceive('isBuildServer')->andReturn(false); + + Livewire::test(ValidateAndInstall::class, ['server' => $serverMock]) + ->call('validateDockerVersion'); +}); + +it('does not call gatherServerMetadata when docker version validation fails', function () { + $serverMock = Mockery::mock($this->server)->makePartial(); + $serverMock->shouldReceive('isSwarm')->andReturn(false); + $serverMock->shouldReceive('validateDockerEngineVersion')->once()->andReturn(false); + $serverMock->shouldNotReceive('gatherServerMetadata'); + + Livewire::test(ValidateAndInstall::class, ['server' => $serverMock]) + ->call('validateDockerVersion'); +});