fix(shared) : durcissement infra upload (ERP-154)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 50s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m25s

- supprime le fichier orphelin sur disque si la persistance Doctrine echoue apres l ecriture (FileUploader::remove + compensation dans le processor)
- gere hash_file() renvoyant false (fichier illisible) -> FileUploadException au lieu d un TypeError opaque
- documente le choix de securite du GET (infra generique, cloisonnement delegue au consommateur)
This commit is contained in:
Matthieu
2026-06-15 16:56:15 +02:00
parent b989c33cc4
commit a579ee6378
4 changed files with 58 additions and 2 deletions
@@ -93,6 +93,23 @@ final class FileUploaderTest extends TestCase
);
}
public function testRemoveDeletesStoredFile(): void
{
$uploader = $this->createUploader();
$file = $this->makeUploadedFile($this->minimalPdf(), 'facture.pdf');
$document = $uploader->upload($file);
$storedPath = $this->uploadBaseDir.'/'.$document->getStoredPath();
self::assertFileExists($storedPath);
// Compensation : remove() efface le fichier physique...
$uploader->remove($document);
self::assertFileDoesNotExist($storedPath);
// ...et reste silencieux si on le rappelle alors que le fichier a disparu.
$uploader->remove($document);
self::assertFileDoesNotExist($storedPath);
}
private function createUploader(?MockClock $clock = null): FileUploader
{
return new FileUploader($this->uploadBaseDir, $clock ?? new MockClock());