import { test, after } from 'node:test' import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import vm from 'node:vm' import { useTestEnv } from './support/testEnv.js' import { installFakeDom } from './support/fakeDom.js' // Task 17: Standalone-Seiten /unterkunft/:siteKey und /unterkunft/:siteKey/buchung/:id plus Skript public/unterkunft-buchung.js useTestEnv({ appwriteUrl: 'http://127.0.0.1:1', stripeUrl: 'http://127.0.0.1:1' }) const { startTestApp } = await import('./support/testApp.js') const { unterkunftSeiteRouter, resetUnterkunftSeiteForTests } = await import('../server/routes/unterkunftSeite.js') resetUnterkunftSeiteForTests() const app = await startTestApp({ '/': unterkunftSeiteRouter() }) after(() => app.close()) const KEY = 'abcdefghijklmnop' const get = async (path) => { const r = await fetch(app.url + path) return { status: r.status, headers: r.headers, text: await r.text() } } const lies = (pfad) => readFileSync(new URL(`../${pfad}`, import.meta.url), 'utf8') /* ----------------------------------------------------------------- Routen --- */ test('Widget-Seite und Buchungsseite: 200, Schluessel escaped, Schutz-Header', async () => { for (const [pfad, ansicht] of [[`/unterkunft/${KEY}`, 'widget'], [`/unterkunft/${KEY}/buchung/Ab_c-123?t=geheim`, 'buchung']]) { const r = await get(pfad) assert.equal(r.status, 200, pfad) assert.match(r.headers.get('content-type'), /^text\/html; charset=utf-8/) assert.match(r.text, new RegExp(`