Buchungskalender: Abschluss – S7 Buchungslink-Gueltigkeit (90 Tage nach Abreise, 30 Tage nach Absage), tokenHash beim Anonymisieren leeren
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
17400cac1f
commit
4f9fb6b109
6 files changed
+57
-12
No files matched your search
@@ -95,7 +95,7 @@ test('Unverbindliche Anfragen: nach 6 Monaten anonymisiert, knapp davor nicht; s
|
||||
|
||||
test('Gebuchte Aufenthalte: Gast weg 3 Jahre nach Jahresende der Abreise (Berlin); Rechnungsadresse und Rechnung bleiben unveraendert', async () => {
|
||||
const inhalt = JSON.stringify({ gast: ADRESSE, summe: 12345 })
|
||||
const a = anfrage({ status: 'bezahlt', bis: '2022-12-31', von: '2022-12-28', $createdAt: vor(1500), rechnungsadresse: JSON.stringify(ADRESSE), rechnungId: 'r1' })
|
||||
const a = anfrage({ status: 'bezahlt', bis: '2022-12-31', von: '2022-12-28', $createdAt: vor(1500), rechnungsadresse: JSON.stringify(ADRESSE), rechnungId: 'r1', tokenHash: 'abc123' })
|
||||
const b = anfrage({ status: 'gebucht', bis: '2023-01-02', von: '2022-12-30', $createdAt: vor(1500), rechnungsadresse: JSON.stringify(ADRESSE) })
|
||||
aw.seed('ukRechnungen', { $id: 'r1', featureId: 'f1', anfrageId: a, art: 'rechnung', nummer: 'R-1', datum: '2022-12-20', bruttoCent: 12345, inhalt })
|
||||
// 31.12.2025 23:30 Berlin: noch Jahr 2025 -> nichts
|
||||
@@ -106,6 +106,7 @@ test('Gebuchte Aufenthalte: Gast weg 3 Jahre nach Jahresende der Abreise (Berlin
|
||||
assert.equal(r.gaeste, 1)
|
||||
assert.deepEqual(gast(a), {})
|
||||
assert.ok(holen(a).anonymisiertAt)
|
||||
assert.equal(holen(a).tokenHash, '', 'Buchungslink tot')
|
||||
assert.deepEqual(JSON.parse(holen(a).rechnungsadresse), ADRESSE)
|
||||
assert.deepEqual(gast(b), GAST)
|
||||
const re = aw.docs('ukRechnungen').get('r1')
|
||||
|
||||
@@ -141,6 +141,26 @@ test('POST buchung vor Ort: gebucht, Rechnung; zweites POST gleiche Antwort ohne
|
||||
assert.equal(g.body.rechnungsadresse.ort, 'Berlin')
|
||||
})
|
||||
|
||||
test('Buchungslink: gilt bis 90 Tage nach Abreise, abgelehnt/abgelaufen 30 Tage nach Statuswechsel, danach 404; Seite und PDF', async () => {
|
||||
const { id, token } = await freigegeben('2026-11-10', '2026-11-12')
|
||||
assert.equal((await send('GET', url(id, token))).status, 200)
|
||||
setzeUhrFuerTests(() => new Date('2027-02-10T12:00:00Z')) // 90 Tage nach 12.11.2026 = 10.02.2027
|
||||
assert.equal((await send('GET', url(id, token))).status, 200)
|
||||
setzeUhrFuerTests(() => new Date('2027-02-11T12:00:00Z'))
|
||||
for (const r of [await send('GET', url(id, token)), await send('GET', url(id, token, '/rechnung.pdf'))]) {
|
||||
assert.equal(r.status, 404)
|
||||
assert.deepEqual(r.body, { fehler: 'nicht_gefunden' })
|
||||
}
|
||||
assert.equal((await post(url(id, token), { rechnungsadresse: ADRESSE, zahlart: 'vorort' })).status, 404)
|
||||
// abgelehnt: 30 Tage nach dem Statuswechsel
|
||||
setzeUhrFuerTests(() => NOW)
|
||||
const g = await freigegeben('2026-12-10', '2026-12-12')
|
||||
await sp.aktualisiereAnfrage(g.id, { status: 'abgelehnt', abgelehntAt: NOW.toISOString() })
|
||||
assert.equal((await send('GET', url(g.id, g.token))).status, 200)
|
||||
setzeUhrFuerTests(() => new Date(NOW.getTime() + 31 * 86400000))
|
||||
assert.equal((await send('GET', url(g.id, g.token))).status, 404)
|
||||
})
|
||||
|
||||
test('POST buchung: falsches Token 404, fremde Herkunft 403, Adresse fehlt 400, Frist abgelaufen 410', async () => {
|
||||
const { id, token } = await freigegeben()
|
||||
const falsch = await post(url(id, 'falsch'), { rechnungsadresse: ADRESSE, zahlart: 'vorort' })
|
||||
|
||||
Reference in new issue
Block a user