diff --git a/index.mjs b/index.mjs index 1fb8f43..b5a9b2a 100644 --- a/index.mjs +++ b/index.mjs @@ -32,8 +32,13 @@ export async function handler(event, context) { return await handleDefault(event, context); } catch (err) { console.error('Error processing event', err); - // For HTTP or WebSocket requests, return an error response - if (event.httpMethod || (event.version === '2.0' && (event.requestContext?.http?.method || event.requestContext?.routeKey))) { + const isObjectEvent = typeof event === 'object' && event; + const isHttpOrWs = + isObjectEvent && + (event.httpMethod || + (event.version === '2.0' && + (event.requestContext?.http?.method || event.requestContext?.routeKey))); + if (!isObjectEvent || isHttpOrWs) { return { statusCode: 500, headers: { 'Content-Type': 'application/json' }, diff --git a/tests/index.test.js b/tests/index.test.js index 30f5c57..de1375b 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -28,4 +28,14 @@ describe('handler', () => { const result = await handler(event, context); expect(result).toEqual({ processed: 1 }); }); + + test('gracefully handles undefined event', async () => { + const context = { awsRequestId: '1' }; + const result = await handler(undefined, context); + expect(result).toEqual({ + statusCode: 500, + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ error: 'Internal Server Error' }), + }); + }); });