Upload via GUI (360 Dateien)

This commit is contained in:
2026-10-30 21:50:16 +00:00
parent 2ee9be11c0
commit 4e1e6d85f8
5 changed files with 1210 additions and 0 deletions
@@ -116,6 +116,12 @@ $check($s === 422 && ($b['error']['code'] ?? '') === 'INVALID_EMAIL', 'ungültig
$check($s === 200 && ($b['ticket']['status'] ?? '') === 'open' && count($b['ticket']['messages'] ?? []) === 1, 'Status per API abgefragt');
[$s, $b] = $call('GET', '?number=' . urlencode($apiNumber) . '&email=fremd@example.test', null, $created['key']);
$check($s === 404, 'falsche E-Mail-Adresse: Ticket bleibt verborgen (404)');
// Entwarnung (Minecraft-Plugin): Ticket wird gelöst, der Text steht unverändert (nicht doppelt maskiert) in der internen Notiz
[$s, $b] = $call('POST', '', ['action' => 'resolve', 'number' => $apiNumber, 'email' => 'eva@example.test', 'message' => 'Der Server "Lobby" ist wieder erreichbar & <b>ok</b>.'], $created['key']);
$check($s === 200 && ($b['status'] ?? '') === 'resolved', 'Entwarnung per API löst das Ticket');
$noteRow = $pdo->prepare("SELECT message FROM ticket_threads WHERE ticket_id = (SELECT id FROM tickets WHERE ticket_number = ?) AND is_internal_note = 1 ORDER BY id DESC LIMIT 1");
$noteRow->execute([$apiNumber]);
$check($noteRow->fetchColumn() === 'Der Server "Lobby" ist wieder erreichbar & ok.', 'Notiz bei Entwarnung ist Klartext ohne HTML-Entities: ' . json_encode($noteRow->fetchColumn()));
$readOnly = api_key_create($pdo, 'Nur lesen', false, true, '', $staffId);
[$s] = $call('POST', '', ['name' => 'Eva', 'email' => 'eva@example.test', 'subject' => 'x', 'message' => 'y'], $readOnly['key']);
$check($s === 403, 'Schlüssel ohne Recht zum Anlegen: 403');