Files
coolify/tests/Unit/PreviewDeploymentStaticBuildpackTest.php
6b07f03107 feat(terminal): interactive console mode for containers (docker attach) (#11538)
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rosslh <ross@rosshill.ca>
2026-10-14 14:32:02 +02:00

49 lines
1.8 KiB
PHP

<?php
/**
* Preview deployments of static build pack applications must build the image
* from the generated nginx Dockerfile, not from a Dockerfile in the repository.
*
* @see https://github.com/coollabsio/coolify/issues/8238
*/
use App\Jobs\ApplicationDeploymentJob;
use App\Models\Application;
use App\Models\ApplicationDeploymentQueue;
it('builds static build pack preview images from the generated nginx Dockerfile', function () {
$application = new Application;
$application->build_pack = 'static';
$application->static_image = 'nginx:alpine';
$application->custom_nginx_configuration = 'server { listen 80; }';
$queue = Mockery::mock(ApplicationDeploymentQueue::class);
$queue->shouldReceive('addLogEntry');
$commands = [];
$job = Mockery::mock(ApplicationDeploymentJob::class)->makePartial();
$job->shouldReceive('execute_remote_command')->andReturnUsing(function (...$batch) use (&$commands) {
foreach ($batch as $command) {
$commands[] = $command[0];
}
});
foreach ([
'application' => $application,
'application_deployment_queue' => $queue,
'deployment_uuid' => 'deployment-uuid',
'pull_request_id' => 7,
'workdir' => '/artifacts/deployment-uuid',
'production_image_name' => 'preview-app:pr-7-abc',
] as $property => $value) {
(new ReflectionProperty(ApplicationDeploymentJob::class, $property))->setValue($job, $value);
}
(new ReflectionMethod(ApplicationDeploymentJob::class, 'build_pull_request_image'))->invoke($job);
$writesGeneratedDockerfile = collect($commands)
->contains(fn (string $command) => str_contains($command, 'tee /artifacts/deployment-uuid/Dockerfile'));
expect($writesGeneratedDockerfile)->toBeTrue();
});