Tests: Wächter der Kundenansicht sperrt auch die Routen der Auftragsbestätigung

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-07 14:24:19 +00:00
1 parent d9058ef1a6
commit aad0a8b807
1 file changed
+15
+15
View File
@@ -41,6 +41,8 @@ const MOUNTS = [
['/api/termine', termineRouter],
['/api/shop', (await import('../server/routes/shop.js')).default],
['/api/zeiten', zeitenRouter],
['/api/auftraege', (await import('../server/routes/auftraegeKunde.js')).default],
['/api/auftrag', (await import('../server/routes/auftrag.js')).default],
]
// Oeffentliche Schnittstelle (ohne Session) wie in server/index.js hinter dem Waechter; nicht in MOUNTS, weil sie keine Kunden-Route ist
const oeffentlich = (await import('../server/routes/publicTermine.js')).default
@@ -146,6 +148,19 @@ test('Behalten der Öffnungszeiten ist in der Kundenansicht gesperrt (Route gefu
assert.equal(res.body.code, 'view_blocked')
})
// Auftragsbestätigung bestätigen ist eine Erklärung im Namen des Kunden (Spec Abschnitt 2): Portal-Weg und Link-Weg stehen nicht auf der
// Erlaubnisliste; der Wächter sperrt sie vor dem Router (auch der Link-Weg, wenn der Browser das Cookie einer Kundenansicht trägt).
test('Auftragsbestätigung bestätigen ist in der Kundenansicht gesperrt (Portal-Weg und Link-Weg)', async () => {
const routes = writeRoutes(MOUNTS)
for (const p of ['/api/auftraege/x/bestaetigen', '/api/auftrag/x/bestaetigen']) {
assert.ok(routes.some(({ method, path: r }) => method === 'POST' && r === p), `Route ${p} gefunden`)
assert.ok(!allowed('POST', p), p)
const res = await call('POST', p, { ...kv(), body: { bestaetigt: true, fruehbeginn: false } })
assert.equal(res.status, 403, p)
assert.equal(res.body.code, 'view_blocked', p)
}
})
test('Erlaubnisliste: genau News, Terminplaner, Webshop-Verwaltung, Öffnungszeiten, Analyse-Link, Ende, Logout und Login', () => {
const ok = [
['POST', '/api/news'], ['POST', '/api/news/image'], ['PATCH', '/api/news/abc'], ['DELETE', '/api/news/abc'],