mirror of
https://github.com/tiennm99/coolify.git
synced 2026-04-18 01:20:31 +00:00
fix: enhance getRequiredPort to support map-style environment variables for SERVICE_URL and SERVICE_FQDN
This commit is contained in:
@@ -151,3 +151,120 @@ it('checks if all FQDNs have port - null FQDN', function () {
|
||||
|
||||
expect($result)->toBeFalse();
|
||||
});
|
||||
|
||||
it('detects port from map-style SERVICE_URL environment variable', function () {
|
||||
$yaml = <<<'YAML'
|
||||
services:
|
||||
trigger:
|
||||
environment:
|
||||
SERVICE_URL_TRIGGER_3000: ""
|
||||
OTHER_VAR: value
|
||||
YAML;
|
||||
|
||||
$service = Mockery::mock(Service::class)->makePartial();
|
||||
$service->docker_compose_raw = $yaml;
|
||||
$service->shouldReceive('getRequiredPort')->andReturn(null);
|
||||
|
||||
$app = Mockery::mock(ServiceApplication::class)->makePartial();
|
||||
$app->name = 'trigger';
|
||||
$app->shouldReceive('getAttribute')->with('service')->andReturn($service);
|
||||
$app->service = $service;
|
||||
|
||||
// Call the actual getRequiredPort method
|
||||
$result = $app->getRequiredPort();
|
||||
|
||||
expect($result)->toBe(3000);
|
||||
});
|
||||
|
||||
it('detects port from map-style SERVICE_FQDN environment variable', function () {
|
||||
$yaml = <<<'YAML'
|
||||
services:
|
||||
langfuse:
|
||||
environment:
|
||||
SERVICE_FQDN_LANGFUSE_3000: localhost
|
||||
DATABASE_URL: postgres://...
|
||||
YAML;
|
||||
|
||||
$service = Mockery::mock(Service::class)->makePartial();
|
||||
$service->docker_compose_raw = $yaml;
|
||||
$service->shouldReceive('getRequiredPort')->andReturn(null);
|
||||
|
||||
$app = Mockery::mock(ServiceApplication::class)->makePartial();
|
||||
$app->name = 'langfuse';
|
||||
$app->shouldReceive('getAttribute')->with('service')->andReturn($service);
|
||||
$app->service = $service;
|
||||
|
||||
$result = $app->getRequiredPort();
|
||||
|
||||
expect($result)->toBe(3000);
|
||||
});
|
||||
|
||||
it('returns null for map-style environment without port', function () {
|
||||
$yaml = <<<'YAML'
|
||||
services:
|
||||
db:
|
||||
environment:
|
||||
SERVICE_FQDN_DB: localhost
|
||||
SERVICE_URL_DB: http://localhost
|
||||
YAML;
|
||||
|
||||
$service = Mockery::mock(Service::class)->makePartial();
|
||||
$service->docker_compose_raw = $yaml;
|
||||
$service->shouldReceive('getRequiredPort')->andReturn(null);
|
||||
|
||||
$app = Mockery::mock(ServiceApplication::class)->makePartial();
|
||||
$app->name = 'db';
|
||||
$app->shouldReceive('getAttribute')->with('service')->andReturn($service);
|
||||
$app->service = $service;
|
||||
|
||||
$result = $app->getRequiredPort();
|
||||
|
||||
expect($result)->toBeNull();
|
||||
});
|
||||
|
||||
it('handles list-style environment with port', function () {
|
||||
$yaml = <<<'YAML'
|
||||
services:
|
||||
umami:
|
||||
environment:
|
||||
- SERVICE_URL_UMAMI_3000
|
||||
- DATABASE_URL=postgres://db/umami
|
||||
YAML;
|
||||
|
||||
$service = Mockery::mock(Service::class)->makePartial();
|
||||
$service->docker_compose_raw = $yaml;
|
||||
$service->shouldReceive('getRequiredPort')->andReturn(null);
|
||||
|
||||
$app = Mockery::mock(ServiceApplication::class)->makePartial();
|
||||
$app->name = 'umami';
|
||||
$app->shouldReceive('getAttribute')->with('service')->andReturn($service);
|
||||
$app->service = $service;
|
||||
|
||||
$result = $app->getRequiredPort();
|
||||
|
||||
expect($result)->toBe(3000);
|
||||
});
|
||||
|
||||
it('prioritizes first port found in environment', function () {
|
||||
$yaml = <<<'YAML'
|
||||
services:
|
||||
multi:
|
||||
environment:
|
||||
SERVICE_URL_MULTI_3000: ""
|
||||
SERVICE_URL_MULTI_8080: ""
|
||||
YAML;
|
||||
|
||||
$service = Mockery::mock(Service::class)->makePartial();
|
||||
$service->docker_compose_raw = $yaml;
|
||||
$service->shouldReceive('getRequiredPort')->andReturn(null);
|
||||
|
||||
$app = Mockery::mock(ServiceApplication::class)->makePartial();
|
||||
$app->name = 'multi';
|
||||
$app->shouldReceive('getAttribute')->with('service')->andReturn($service);
|
||||
$app->service = $service;
|
||||
|
||||
$result = $app->getRequiredPort();
|
||||
|
||||
// Should return one of the ports (depends on array iteration order)
|
||||
expect($result)->toBeIn([3000, 8080]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user