Steuerkram/tests/49_BelegDeleteUnlinkFailTest.php

42 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
use Steuerkram\Models\Beleg;
class BelegDeleteUnlinkFailTest extends TestCase
{
protected string $testName = 'Test 49: Beleg-Löschung trotz Datei-Permission-Fehler';
public function run(): void
{
$dir = dirname(__DIR__) . '/public/static/uploads/test_49_unlink_fail';
$file = $dir . '/original.pdf';
mkdir($dir, 0755, true);
file_put_contents($file, 'dummy');
// Schreibschutz auf das Verzeichnis: unlink() der Datei schlägt fehl (Permission denied),
// genau wie im gemeldeten Fehler auf dem Produktiv-Server.
chmod($dir, 0500);
try {
$id = Beleg::create([
'beleg_nr' => 'BLG-TEST-49',
'filename' => 'original.pdf',
'storage_path' => 'static/uploads/test_49_unlink_fail/original.pdf',
'mime_type' => 'application/pdf',
'file_hash' => 'testhash49',
'beleg_datum' => '2026-01-01',
]);
$this->assertGreaterThan(0, $id, 'Beleg angelegt');
$result = Beleg::delete($id);
$this->assert($result === true, 'delete() liefert true, obwohl unlink() fehlschlägt');
$this->assert(Beleg::find($id) === false, 'Beleg-Datensatz wurde trotz Datei-Fehler aus der DB gelöscht');
} finally {
chmod($dir, 0755);
if (file_exists($file)) unlink($file);
if (is_dir($dir)) rmdir($dir);
}
}
}