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
|
let modul
|
||||||
try {
|
try {
|
||||||
modul = await import('../services/unterkunft/rechnungPdf.js')
|
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' })
|
return res.status(501).json({ fehler: 'nicht_verfuegbar' })
|
||||||
}
|
}
|
||||||
const art = dok.art === 'storno' ? 'storno' : 'rechnung'
|
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)
|
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()
|
const { id, token } = await freigegeben()
|
||||||
await post(url(id, token), { rechnungsadresse: ADRESSE, zahlart: 'vorort' })
|
await post(url(id, token), { rechnungsadresse: ADRESSE, zahlart: 'vorort' })
|
||||||
const r = await send('GET', url(id, token, '/rechnung.pdf'))
|
const r = await send('GET', url(id, token, '/rechnung.pdf'))
|
||||||
assert.ok([200, 501].includes(r.status), String(r.status))
|
assert.equal(r.status, 200)
|
||||||
if (r.status === 200) assert.equal(r.headers.get('content-type'), 'application/pdf')
|
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, '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=storno')).status, 404)
|
||||||
assert.equal((await send('GET', url(id, token, '/rechnung.pdf') + '&art=x')).status, 400)
|
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
|
// ------------------------------------------------------------------------------------------------ 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: '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: '{}' })
|
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
|
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/r1')).status, 404)
|
||||||
assert.equal((await get('/rechnungen/..%2F..%2Fx.pdf')).status, 404)
|
assert.equal((await get('/rechnungen/..%2F..%2Fx.pdf')).status, 404)
|
||||||
const eigene = await get('/rechnungen/r1.pdf')
|
const eigene = await get('/rechnungen/r1.pdf')
|
||||||
assert.ok([200, 501].includes(eigene.status), String(eigene.status))
|
assert.equal(eigene.status, 200)
|
||||||
if (eigene.status === 501) assert.equal(eigene.body.fehler, 'nicht_verfuegbar')
|
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
|
// ------------------------------------------------------------------------------------------------ Stripe
|
||||||
|
|||||||
Reference in new issue
Block a user