From 16d92f171c4461f46f6427162369b5ba8b49aa0c Mon Sep 17 00:00:00 2001 From: syntaxbullet Date: Fri, 4 Sep 2026 18:38:58 +0200 Subject: [PATCH] test: verify request references on database failures --- src/habits/resilience.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/habits/resilience.test.ts b/src/habits/resilience.test.ts index ba25ec2..6b85bcc 100644 --- a/src/habits/resilience.test.ts +++ b/src/habits/resilience.test.ts @@ -5,7 +5,7 @@ beforeEach(() => { f = fixture(); }); afterEach(() => f.close()); test('failed revision writes roll back the habit atomically and do not expose database errors', async () => { f.sqlite.exec("CREATE TRIGGER reject_revision BEFORE INSERT ON habit_revisions BEGIN SELECT RAISE(ABORT, 'private database detail'); END"); const response = await f.request('/habits', 'POST', { name: 'Rollback', method: 'manual' }); - expect(response.status).toBe(500); expect(await response.json()).toEqual({ error: 'Internal server error' }); + expect(response.status).toBe(500); expect(await response.json()).toEqual({ error: 'Internal server error', requestId: response.headers.get('x-request-id') }); expect((await f.json('/habits')).habits).toHaveLength(0); }); @@ -20,7 +20,7 @@ test('creation saves color atomically and never puts presentation into requireme f.sqlite.exec("CREATE TRIGGER reject_color BEFORE INSERT ON habit_calendar_settings BEGIN SELECT RAISE(ABORT, 'private color detail'); END"); const response = await f.request('/habits', 'POST', { name: 'Rollback color', method: 'manual', color: '#426582' }); expect(response.status).toBe(500); - expect(await response.json()).toEqual({ error: 'Internal server error' }); + expect(await response.json()).toEqual({ error: 'Internal server error', requestId: response.headers.get('x-request-id') }); expect((await f.json('/habits')).habits).toHaveLength(3); }); test('edits save color with requirements atomically, preserving history and other settings', async () => {