'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