diff --git a/test/kundenansichtGuard.test.js b/test/kundenansichtGuard.test.js index d455d81..982f677 100644 --- a/test/kundenansichtGuard.test.js +++ b/test/kundenansichtGuard.test.js @@ -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'],