The generate_preview_fqdn_compose method now extracts and populates the fqdn field from docker_compose_domains, making it available for webhook notifications. This handles multiple domains across services and gracefully sets fqdn to null when no domains are configured.
77 lines
2.3 KiB
PHP
77 lines
2.3 KiB
PHP
<?php
|
|
|
|
use App\Models\Application;
|
|
use App\Models\ApplicationPreview;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
it('populates fqdn from docker_compose_domains after generate_preview_fqdn_compose', function () {
|
|
$application = Application::factory()->create([
|
|
'build_pack' => 'dockercompose',
|
|
'docker_compose_domains' => json_encode([
|
|
'web' => ['domain' => 'https://example.com'],
|
|
]),
|
|
]);
|
|
|
|
$preview = ApplicationPreview::create([
|
|
'application_id' => $application->id,
|
|
'pull_request_id' => 42,
|
|
'docker_compose_domains' => $application->docker_compose_domains,
|
|
]);
|
|
|
|
$preview->generate_preview_fqdn_compose();
|
|
|
|
$preview->refresh();
|
|
|
|
expect($preview->fqdn)->not->toBeNull();
|
|
expect($preview->fqdn)->toContain('42');
|
|
expect($preview->fqdn)->toContain('example.com');
|
|
});
|
|
|
|
it('populates fqdn with multiple domains from multiple services', function () {
|
|
$application = Application::factory()->create([
|
|
'build_pack' => 'dockercompose',
|
|
'docker_compose_domains' => json_encode([
|
|
'web' => ['domain' => 'https://web.example.com'],
|
|
'api' => ['domain' => 'https://api.example.com'],
|
|
]),
|
|
]);
|
|
|
|
$preview = ApplicationPreview::create([
|
|
'application_id' => $application->id,
|
|
'pull_request_id' => 7,
|
|
'docker_compose_domains' => $application->docker_compose_domains,
|
|
]);
|
|
|
|
$preview->generate_preview_fqdn_compose();
|
|
|
|
$preview->refresh();
|
|
|
|
expect($preview->fqdn)->not->toBeNull();
|
|
$domains = explode(',', $preview->fqdn);
|
|
expect($domains)->toHaveCount(2);
|
|
expect($preview->fqdn)->toContain('web.example.com');
|
|
expect($preview->fqdn)->toContain('api.example.com');
|
|
});
|
|
|
|
it('sets fqdn to null when no domains are configured', function () {
|
|
$application = Application::factory()->create([
|
|
'build_pack' => 'dockercompose',
|
|
'docker_compose_domains' => json_encode([
|
|
'web' => ['domain' => ''],
|
|
]),
|
|
]);
|
|
|
|
$preview = ApplicationPreview::create([
|
|
'application_id' => $application->id,
|
|
'pull_request_id' => 99,
|
|
'docker_compose_domains' => $application->docker_compose_domains,
|
|
]);
|
|
|
|
$preview->generate_preview_fqdn_compose();
|
|
|
|
$preview->refresh();
|
|
|
|
expect($preview->fqdn)->toBeNull();
|
|
});
|