step 9.3: done

This commit is contained in:
bepis
2026-10-21 10:21:11 +11:00
parent d8a1e88150
commit cf725b40a2
16 changed files with 506 additions and 64 deletions
+53
View File
@@ -0,0 +1,53 @@
const test = require('node:test');
const assert = require('node:assert/strict');
const { setup, teardown, cleanup } = require('../helpers');
test('GET /nonexistent → serves 404.html for HTML requests', async () => {
const base = await setup();
try {
const res = await fetch(base + '/nonexistent-page', {
headers: { Accept: 'text/html' },
});
assert.equal(res.status, 404);
const html = await res.text();
assert.ok(html.includes('404'), '404 page should contain "404"');
assert.ok(html.includes('Page Not Found'), '404 page should have title');
assert.ok(html.includes('Emberfall'), '404 page should be branded');
} finally {
await teardown();
cleanup();
}
});
test('GET /nonexistent → JSON error for API requests', async () => {
const base = await setup();
try {
const res = await fetch(base + '/api/nonexistent', {
headers: { Accept: 'application/json' },
});
assert.equal(res.status, 404);
const data = await res.json();
assert.equal(data.ok, false);
assert.equal(data.error.code, 'NOT_FOUND');
assert.ok(typeof data.error.message === 'string');
} finally {
await teardown();
cleanup();
}
});
test('GET /api/heroes/nonexistent → 404.html (public route, unknown hero)', async () => {
const base = await setup();
try {
const res = await fetch(base + '/api/heroes/doesnotexist', {
headers: { Accept: 'text/html' },
});
// Public route exists, so it returns JSON 404 (not the page 404)
assert.equal(res.status, 404);
const data = await res.json();
assert.equal(data.ok, false);
} finally {
await teardown();
cleanup();
}
});