diff --git a/src/lib/builder_functions.js b/src/lib/builder_functions.js index f47a097b..38cc8d8c 100644 --- a/src/lib/builder_functions.js +++ b/src/lib/builder_functions.js @@ -22,9 +22,16 @@ const wrapHandler = (handler) => (event, context, callback) => { }) } + // Removing query string parameters from the builder function. + const modifiedEvent = { + ...event, + multiValueQueryStringParameters: {}, + queryStringParameters: {}, + } + // eslint-disable-next-line promise/prefer-await-to-callbacks const wrappedCallback = (error, response) => callback(error, augmentResponse(response)) - const execution = handler(event, context, wrappedCallback) + const execution = handler(modifiedEvent, context, wrappedCallback) if (isPromise(execution)) { // eslint-disable-next-line promise/prefer-await-to-then diff --git a/test/builder_functions.js b/test/builder_functions.js index bb31a4a1..96bdf813 100644 --- a/test/builder_functions.js +++ b/test/builder_functions.js @@ -150,3 +150,25 @@ test('Preserves errors thrown inside the wrapped handler', async (t) => { await t.throwsAsync(invokeLambda(builderFunction(myHandler)), { is: error }) }) + +test('Does not pass query parameters to the wrapped handler', async (t) => { + const originalResponse = { + body: ':thumbsup:', + statusCode: 200, + } + // eslint-disable-next-line require-await + const myHandler = async (event) => { + t.deepEqual(event.multiValueQueryStringParameters, {}) + t.deepEqual(event.queryStringParameters, {}) + + return originalResponse + } + const multiValueQueryStringParameters = { foo: ['bar'], bar: ['baz'] } + const queryStringParameters = { foo: 'bar', bar: 'baz' } + const response = await invokeLambda(builderFunction(myHandler), { + multiValueQueryStringParameters, + queryStringParameters, + }) + + t.deepEqual(response, { ...originalResponse, ...METADATA_OBJECT }) +}) diff --git a/test/helpers/main.js b/test/helpers/main.js index 9b4b97ce..1391f278 100644 --- a/test/helpers/main.js +++ b/test/helpers/main.js @@ -1,5 +1,6 @@ -const invokeLambda = (handler, { method = 'GET' } = {}) => { +const invokeLambda = (handler, { method = 'GET', ...options } = {}) => { const event = { + ...options, httpMethod: method, }