Webshop: IP-Hash entfällt mit Zahlung oder Storno, keine Käufer-Telefonnummer mehr gespeichert
schliesseAb und verwirf entfernen ipHash aus dem Bestell-JSON, sobald die Bestellung nicht mehr offen ist (Begrenzung offener Bestellungen je IP bleibt). customer_details.phone wird nicht mehr in kaeufer.telefon übernommen; Kundenansicht und Bestelldetail geben auch in alten Datensätzen keine Telefonnummer aus. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4ab84e31ac
commit
43473c0879
9 files changed
+79
-19
No files matched your search
@@ -323,6 +323,25 @@ test('Reservierung: der letzte Artikel geht nur einmal weg, abgelaufene Reservie
|
||||
assert.notEqual(zweite.orderId, erste.orderId)
|
||||
})
|
||||
|
||||
test('Begrenzung offener Bestellungen je IP-Hash: drei offen in 30 Minuten, danach 429; wieder frei, sobald eine nicht mehr offen ist', async () => {
|
||||
const ctx = await aufbau({ produkte: [artikel('a1', { bestand: 50 })] })
|
||||
const mit = (ip, now) => B.legeBestellungAn(ctx, eingabe({ positionen: [{ produktId: 'a1', menge: 1 }] }), { now, ipHash: ip })
|
||||
const ids = []
|
||||
for (let i = 0; i < 3; i += 1) ids.push((await mit('aaaaaaaaaaaaaaaa', nach(i))).orderId)
|
||||
assert.ok(orders().every((o) => JSON.parse(o.bestellung).ipHash === 'aaaaaaaaaaaaaaaa'), 'offen: IP-Hash steht im Datensatz')
|
||||
const err = await mit('aaaaaaaaaaaaaaaa', nach(10)).catch((e) => e)
|
||||
assert.equal(err.status, 429)
|
||||
assert.equal(err.code, 'zu_viele_offen')
|
||||
assert.ok((await mit('bbbbbbbbbbbbbbbb', nach(11))).orderId, 'andere IP unberuehrt')
|
||||
|
||||
// Eine verworfene Bestellung traegt keinen IP-Hash mehr und zaehlt nicht mehr
|
||||
assert.equal((await B.verwirf(ids[0], 'zahlung_fehlgeschlagen', { now: nach(20) })).verworfen, true)
|
||||
assert.equal(JSON.parse(orders().find((o) => o.$id === ids[0]).bestellung).ipHash, undefined)
|
||||
assert.ok((await mit('aaaaaaaaaaaaaaaa', nach(21))).orderId, 'nach verwirf wieder eine offene moeglich')
|
||||
const err2 = await mit('aaaaaaaaaaaaaaaa', nach(22)).catch((e) => e)
|
||||
assert.equal(err2.code, 'zu_viele_offen')
|
||||
})
|
||||
|
||||
test('reserviert: nur offene Bestellungen dieses Shops, Varianten mit Doppelpunkt-Schluessel, Mengen summiert', async () => {
|
||||
await aufbau()
|
||||
const ablauf = nach(1800).toISOString()
|
||||
|
||||
Reference in new issue
Block a user