import http from 'node:http'; import { once } from 'node:events'; const server = http.createServer((request, response) => { const url = new URL(request.url, 'http://desk.invalid'); if (url.pathname !== '/kits') { response.writeHead(404).end(); return; } if (request.method !== 'GET') { response.writeHead(405, { allow: 'GET' }).end(); return; } response .writeHead(200, { 'content-type': 'application/json' }) .end(JSON.stringify([{ id: 701 }])); }); server.listen(0, '127.0.0.1'); await once(server, 'listening'); const base = 'http://127.0.0.1:' + server.address().port; try { const good = await fetch(base + '/kits'); console.log(good.status, (await good.json())[0].id); const wrong = await fetch(base + '/kits', { method: 'POST' }); await wrong.text(); console.log(wrong.status, wrong.headers.get('allow')); const absent = await fetch(base + '/missing'); await absent.text(); console.log(absent.status); } finally { server.closeAllConnections(); await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())), ); }