Comparing version 0.20.3 to 0.20.4
{ | ||
"name": "middy", | ||
"version": "0.20.3", | ||
"version": "0.20.4", | ||
"description": "🛵 The stylish Node.js middleware engine for AWS Lambda", | ||
@@ -5,0 +5,0 @@ "main": "./index.js", |
@@ -36,2 +36,17 @@ const middy = require('../../middy') | ||
test('It should default multiValueQueryStringParameters', (endTest) => { | ||
const handler = middy((event, context, cb) => cb(null, event)) | ||
handler.use(httpEventNormalizer()) | ||
const event = { | ||
httpMethod: 'GET' | ||
} | ||
handler(event, {}, (_, event) => { | ||
expect(event).toHaveProperty('multiValueQueryStringParameters', {}) | ||
endTest() | ||
}) | ||
}) | ||
test('It should default pathParameters', (endTest) => { | ||
@@ -68,2 +83,18 @@ const handler = middy((event, context, cb) => cb(null, event)) | ||
test('It should not overwrite multiValueQueryStringParameters', (endTest) => { | ||
const handler = middy((event, context, cb) => cb(null, event)) | ||
handler.use(httpEventNormalizer()) | ||
const event = { | ||
httpMethod: 'GET', | ||
multiValueQueryStringParameters: { param: [ '123', '456', '789' ] } | ||
} | ||
handler(event, {}, (_, event) => { | ||
expect(event).toHaveProperty('multiValueQueryStringParameters', { param: [ '123', '456', '789' ] }) | ||
endTest() | ||
}) | ||
}) | ||
test('It should not overwrite pathParameters', (endTest) => { | ||
@@ -70,0 +101,0 @@ const handler = middy((event, context, cb) => cb(null, event)) |
@@ -98,2 +98,96 @@ const middy = require('../../middy') | ||
}) | ||
test('It should normalize all the multivalue headers and create a copy in rawMultiValueHeaders', (endTest) => { | ||
const handler = middy((event, context, cb) => cb(null, event)) | ||
handler | ||
.use(httpHeaderNormalizer()) | ||
const event = { | ||
multiValueHeaders: { | ||
'x-api-key': ['123456', '7890'], | ||
'tcn': ['abc', 'def'], | ||
'te': ['cde'], | ||
'DNS': ['d'], | ||
'FOO': ['bar'] | ||
} | ||
} | ||
const expectedHeaders = { | ||
'X-Api-Key': ['123456', '7890'], | ||
'TCN': ['abc', 'def'], | ||
'TE': ['cde'], | ||
'Dns': ['d'], | ||
'Foo': ['bar'] | ||
} | ||
const originalHeaders = Object.assign({}, event.multiValueHeaders) | ||
// run the handler | ||
handler(event, {}, (_, resultingEvent) => { | ||
expect(resultingEvent.multiValueHeaders).toEqual(expectedHeaders) | ||
expect(resultingEvent.rawMultiValueHeaders).toEqual(originalHeaders) | ||
endTest() | ||
}) | ||
}) | ||
test('It can use custom normalization function for multivalue headers', (endTest) => { | ||
const normalizeHeaderKey = (key) => key.toUpperCase() | ||
const handler = middy((event, context, cb) => cb(null, event)) | ||
handler | ||
.use(httpHeaderNormalizer({ | ||
normalizeHeaderKey | ||
})) | ||
const event = { | ||
multiValueHeaders: { | ||
'x-api-key': ['123456', '7890'], | ||
'tcn': ['abc', 'def'], | ||
'te': ['cde'], | ||
'DNS': ['d'], | ||
'FOO': ['bar'] | ||
} | ||
} | ||
const expectedHeaders = { | ||
'X-API-KEY': ['123456', '7890'], | ||
'TCN': ['abc', 'def'], | ||
'TE': ['cde'], | ||
'DNS': ['d'], | ||
'FOO': ['bar'] | ||
} | ||
const originalHeaders = Object.assign({}, event.multiValueHeaders) | ||
// run the handler | ||
handler(event, {}, (_, resultingEvent) => { | ||
expect(resultingEvent.multiValueHeaders).toEqual(expectedHeaders) | ||
expect(resultingEvent.rawMultiValueHeaders).toEqual(originalHeaders) | ||
endTest() | ||
}) | ||
}) | ||
test('It should not fail if the event does not contain multivalue headers', (endTest) => { | ||
const handler = middy((event, context, cb) => cb(null, event)) | ||
handler | ||
.use(httpHeaderNormalizer({})) | ||
const event = { | ||
foo: 'bar' | ||
} | ||
const expectedEvent = { | ||
foo: 'bar' | ||
} | ||
// run the handler | ||
handler(event, {}, (_, resultingEvent) => { | ||
expect(resultingEvent).toEqual(expectedEvent) | ||
expect(resultingEvent.rawMultiValueHeaders).toBeUndefined() | ||
endTest() | ||
}) | ||
}) | ||
}) |
@@ -7,2 +7,3 @@ module.exports = () => ({ | ||
event.queryStringParameters = event.queryStringParameters || {} | ||
event.multiValueQueryStringParameters = event.multiValueQueryStringParameters || {} | ||
event.pathParameters = event.pathParameters || {} | ||
@@ -9,0 +10,0 @@ } |
@@ -72,2 +72,15 @@ module.exports = (opts) => { | ||
if (handler.event.multiValueHeaders) { | ||
const rawHeaders = {} | ||
const headers = {} | ||
Object.keys(handler.event.multiValueHeaders).forEach((key) => { | ||
rawHeaders[key] = handler.event.multiValueHeaders[key] | ||
headers[options.normalizeHeaderKey(key)] = handler.event.multiValueHeaders[key] | ||
}) | ||
handler.event.multiValueHeaders = headers | ||
handler.event.rawMultiValueHeaders = rawHeaders | ||
} | ||
next() | ||
@@ -74,0 +87,0 @@ } |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
167964
4260