import { test } from 'node:test' import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' // Review Focus 1 als Quelltext-Pin: Die Kundenart und der Beginn der Bestellung kommen nie aus dem Body der Anfrage const quelle = (datei) => readFileSync(new URL(`../${datei}`, import.meta.url), 'utf8') test('Server-Routen lesen die Kundenart nie aus dem Body', () => { for (const datei of ['server/routes/abo.js', 'server/routes/takeoverCredits.js']) { const q = quelle(datei) assert.doesNotMatch(q, /\b(?:req\.)?body\??\.(kundenart|unternehmer)\b/, datei) assert.doesNotMatch(q, /\{[^}]*\b(kundenart|unternehmer)\b[^}]*\}\s*=\s*(?:req\.)?body/, datei) assert.doesNotMatch(q, /\{[^}]*\b(kundenart|unternehmer)\b[^}]*\}\s*=\s*req\.body/, datei) } }) test('Kundenart stammt aus kundenartWirksam, nicht aus Antwort-Daten des Clients', () => { assert.match(quelle('server/routes/abo.js'), /kundenartWirksam\(/) assert.match(quelle('server/routes/takeoverCredits.js'), /kundenartWirksam\(/) }) test('Fassung 6 liest startChoice nur im alten Weg (Fassung 5)', () => { const q = quelle('server/routes/abo.js') const checkout = q.slice(q.indexOf("router.post('/checkout'"), q.indexOf("router.post('/portal'")) // in Fassung 6 bestimmt allein beginnWahl den Beginn; startChoice fließt nur über den alten Zweig ein assert.match(checkout, /const beginnWahl = sechs \? \(kundenart === 'unternehmen' \|\| earlyStart === true \? 'sofort' : 'nach_frist'\) : startChoice/) assert.doesNotMatch(checkout, /startChoice:\s*startChoice/) })