'XssTest', 'firma' => 'XSS Test GmbH', 'strasse' => 'Teststraße 1', 'plz' => '10115', 'ort' => 'Berlin', 'payment_days' => 14, ]); $invoiceId = \Steuerkram\Models\Invoice::create([ 'customer_id' => $customerId, 'betreff' => 'Testrechnung für XSS-Test', 'rechnungs_datum' => $datum, 'leistungszeitraum_von' => date('Y-m-01'), 'leistungszeitraum_bis' => date('Y-m-t'), 'lines' => [ [ 'bezeichnung' => 'Beratungsleistung', 'menge' => 1, 'einheit' => 'h', 'einzelpreis' => 100.00, 'ust_satz' => 19.0, ], ], ]); $rechnungsNr = \Steuerkram\Models\Invoice::finalize($invoiceId); $invoice = \Steuerkram\Models\Invoice::find($invoiceId); $belegNr = \Steuerkram\Models\Beleg::generateBelegNr(); $belegId = \Steuerkram\Models\Beleg::create([ 'beleg_nr' => $belegNr, 'filename' => $rechnungsNr . '.pdf', 'storage_path' => '', 'mime_type' => 'application/pdf', 'file_hash' => hash('sha256', $rechnungsNr), 'beleg_datum' => $invoice['rechnungs_datum'], 'rechnungs_nr' => $rechnungsNr, 'betrag_brutto' => $invoice['betrag_brutto'], 'belegtyp' => 'Ausgangsrechnung', 'notes' => 'Test Ausgangsrechnung', ]); \Steuerkram\Database::execute( 'UPDATE invoices SET beleg_id=? WHERE id=?', [$belegId, $invoiceId] ); $payload = ''; $getBackup = $_GET; $_GET['_error'] = ['x' => $payload]; try { $controller = new \Steuerkram\Controllers\InvoiceController(); ob_start(); $controller->book(['id' => (string)$invoiceId]); $html = ob_get_clean(); } finally { $_GET = $getBackup; } $this->assert( !str_contains($html, $payload), 'Roher