Buchungskalender: Abgleich – Rechnungs-PDF 200-Pfad getestet, 501 nur bei fehlendem Modul
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d27f6d5ddb
commit
2eb38032d3
3 files changed
+11
-7
No files matched your search
@@ -606,7 +606,8 @@ router.get('/rechnungen/:datei', route(async (req, res) => {
|
||||
let modul
|
||||
try {
|
||||
modul = await import('../services/unterkunft/rechnungPdf.js')
|
||||
} catch {
|
||||
} catch (err) {
|
||||
if (err?.code !== 'ERR_MODULE_NOT_FOUND') throw err
|
||||
return res.status(501).json({ fehler: 'nicht_verfuegbar' })
|
||||
}
|
||||
const art = dok.art === 'storno' ? 'storno' : 'rechnung'
|
||||
|
||||
@@ -294,12 +294,13 @@ test('Webhook charge.refunded: erstattetCent = Maximum, nie zurueck', async () =
|
||||
assert.equal((await sp.ladeAnfrage(id)).erstattetCent, 7000)
|
||||
})
|
||||
|
||||
test('rechnung.pdf: 200 mit PDF oder 501 ohne Erzeuger; falsches Token 404', async () => {
|
||||
test('rechnung.pdf: 200 mit PDF; falsches Token 404', async () => {
|
||||
const { id, token } = await freigegeben()
|
||||
await post(url(id, token), { rechnungsadresse: ADRESSE, zahlart: 'vorort' })
|
||||
const r = await send('GET', url(id, token, '/rechnung.pdf'))
|
||||
assert.ok([200, 501].includes(r.status), String(r.status))
|
||||
if (r.status === 200) assert.equal(r.headers.get('content-type'), 'application/pdf')
|
||||
assert.equal(r.status, 200)
|
||||
assert.equal(r.headers.get('content-type'), 'application/pdf')
|
||||
assert.ok(String(r.body).startsWith('%PDF-'), 'PDF-Kopf')
|
||||
assert.equal((await send('GET', url(id, 'falsch', '/rechnung.pdf'))).status, 404)
|
||||
assert.equal((await send('GET', url(id, token, '/rechnung.pdf') + '&art=storno')).status, 404)
|
||||
assert.equal((await send('GET', url(id, token, '/rechnung.pdf') + '&art=x')).status, 400)
|
||||
|
||||
@@ -474,7 +474,7 @@ test('Stornieren: Erstattung fehlgeschlagen -> 502 erstattung_fehlgeschlagen mit
|
||||
|
||||
// ------------------------------------------------------------------------------------------------ Rechnungen
|
||||
|
||||
test('Rechnungen: Liste nur des Projekts; PDF fremde Rechnung 404, eigene 200 oder 501, unsichere ID 404', async () => {
|
||||
test('Rechnungen: Liste nur des Projekts; PDF fremde Rechnung 404, eigene 200 als PDF, unsichere ID 404', async () => {
|
||||
aw.seed('ukRechnungen', { $id: 'r1', featureId: FEATURE, anfrageId: 'a1', art: 'rechnung', nummer: 'DH-2026-0001', datum: '2026-11-01', bruttoCent: 100, inhalt: JSON.stringify({ anfrageNummer: 'A-X', empfaenger: { name: 'Eva' } }) })
|
||||
aw.seed('ukRechnungen', { $id: 'rfremd', featureId: 'anderes', anfrageId: 'a9', art: 'rechnung', nummer: 'XX-1', datum: '2026-11-01', bruttoCent: 100, inhalt: '{}' })
|
||||
const l = (await get('/rechnungen')).body.rechnungen
|
||||
@@ -488,8 +488,10 @@ test('Rechnungen: Liste nur des Projekts; PDF fremde Rechnung 404, eigene 200 od
|
||||
assert.equal((await get('/rechnungen/r1')).status, 404)
|
||||
assert.equal((await get('/rechnungen/..%2F..%2Fx.pdf')).status, 404)
|
||||
const eigene = await get('/rechnungen/r1.pdf')
|
||||
assert.ok([200, 501].includes(eigene.status), String(eigene.status))
|
||||
if (eigene.status === 501) assert.equal(eigene.body.fehler, 'nicht_verfuegbar')
|
||||
assert.equal(eigene.status, 200)
|
||||
assert.equal(eigene.headers.get('content-type'), 'application/pdf')
|
||||
assert.match(eigene.headers.get('content-disposition'), /Rechnung-DH-2026-0001\.pdf/)
|
||||
assert.ok(String(eigene.body).startsWith('%PDF-'), 'PDF-Kopf')
|
||||
})
|
||||
|
||||
// ------------------------------------------------------------------------------------------------ Stripe
|
||||
|
||||
Reference in new issue
Block a user