Socket
Socket
Sign inDemoInstall

middy

Package Overview
Dependencies
Maintainers
8
Versions
147
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

middy - npm Package Compare versions

Comparing version 0.20.3 to 0.20.4

2

package.json
{
"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 @@ }

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc