63 lines
2.3 KiB
PHP
63 lines
2.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
uses(Tests\TestCase::class);
|
|
|
|
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
|
|
|
|
use App\Models\EnhanceJob;
|
|
use App\Models\User;
|
|
use App\Services\Enhance\EnhanceStorageService;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
beforeEach(function (): void {
|
|
config()->set('enhance.disk', 'public');
|
|
Storage::fake('public');
|
|
});
|
|
|
|
it('allows enhance source output and preview paths', function (): void {
|
|
$service = app(EnhanceStorageService::class);
|
|
|
|
expect($service->isEnhancePath('enhance/sources/1/source.png'))->toBeTrue();
|
|
expect($service->isEnhancePath('enhance/outputs/1/output.webp'))->toBeTrue();
|
|
expect($service->isEnhancePath('enhance/previews/1/preview.webp'))->toBeTrue();
|
|
});
|
|
|
|
it('rejects artwork random and null paths safely', function (): void {
|
|
$service = app(EnhanceStorageService::class);
|
|
Storage::disk('public')->put('uploads/artworks/original.png', 'unsafe');
|
|
Storage::disk('public')->put('random/file.txt', 'unsafe');
|
|
|
|
expect($service->isEnhancePath('uploads/artworks/original.png'))->toBeFalse();
|
|
expect($service->isEnhancePath('random/file.txt'))->toBeFalse();
|
|
expect($service->isEnhancePath(null))->toBeFalse();
|
|
expect($service->safeDelete('public', 'uploads/artworks/original.png'))->toBeFalse();
|
|
expect($service->safeDelete('public', 'random/file.txt'))->toBeFalse();
|
|
expect($service->safeDelete('public', null))->toBeFalse();
|
|
|
|
Storage::disk('public')->assertExists('uploads/artworks/original.png');
|
|
Storage::disk('public')->assertExists('random/file.txt');
|
|
});
|
|
|
|
it('lists known job paths', function (): void {
|
|
$service = app(EnhanceStorageService::class);
|
|
$owner = User::factory()->create();
|
|
|
|
EnhanceJob::query()->create([
|
|
'user_id' => $owner->id,
|
|
'status' => EnhanceJob::STATUS_COMPLETED,
|
|
'engine' => EnhanceJob::ENGINE_STUB,
|
|
'mode' => 'standard',
|
|
'scale' => 2,
|
|
'source_path' => 'enhance/sources/known/source.png',
|
|
'output_path' => 'enhance/outputs/known/output.webp',
|
|
'preview_path' => 'enhance/previews/known/preview.webp',
|
|
]);
|
|
|
|
expect($service->listKnownJobPaths())->toContain(
|
|
'enhance/sources/known/source.png',
|
|
'enhance/outputs/known/output.webp',
|
|
'enhance/previews/known/preview.webp',
|
|
);
|
|
}); |