Files
coolify/tests/Feature/S3StorageCreateErrorLinkTest.php
Andras Bacsai 1039368491 fix(s3): support virtual-hosted-style URLs for S3 storages
Add a "Use path-style URLs" setting to S3 storages. It is detected from
the endpoint (Alibaba OSS, Tencent COS, Volcengine/BytePlus TOS), and the
connection test switches to virtual-hosted style when the provider
rejects path-style requests. Backups pass `--path off` to mc.

Closes #10347
2026-10-27 15:53:16 +01:00

33 lines
1.3 KiB
PHP

<?php
use App\Livewire\Storage\Create;
use Livewire\Livewire;
it('formats the internal target settings route as a clickable link', function () {
$settingsUrl = route('settings.advanced').'#endpoint-section';
$exception = new RuntimeException("Private target. Configure allowed internal targets: {$settingsUrl}");
$method = new ReflectionMethod(Create::class, 'connectionErrorDescription');
$description = $method->invoke(new Create, $exception);
expect($description)
->toContain('href="'.$settingsUrl.'"')
->toContain('Set them here.')
->not->toContain('targets: '.$settingsUrl);
});
it('turns path-style URLs off when the endpoint belongs to a provider that rejects them', function () {
Livewire::test(Create::class)
->set('endpointParts.host', 's3.oss-ap-southeast-1.aliyuncs.com')
->assertSet('usePathStyleEndpoint', false)
->set('endpointParts.host', 'minio.internal')
->assertSet('usePathStyleEndpoint', true);
});
it('keeps the URL style that the user selected when the endpoint changes', function () {
Livewire::test(Create::class)
->set('usePathStyleEndpoint', true)
->set('endpointParts.host', 's3.oss-ap-southeast-1.aliyuncs.com')
->assertSet('usePathStyleEndpoint', true);
});