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.17.1 to 0.18.0

2

package.json
{
"name": "middy",
"version": "0.17.1",
"version": "0.18.0",
"description": "🛵 The stylish Node.js middleware engine for AWS Lambda",

@@ -5,0 +5,0 @@ "main": "./index.js",

@@ -518,2 +518,3 @@ <div align="center">

- [`s3KeyNormalizer`](/docs/middlewares.md#s3keynormalizer): Normalizes key names in s3 events.
- [`Secrets Manager`](/docs/middlewares.md#secretsmanager): Fetches parameters from AWS Secrets Manager.
- [`ssm`](/docs/middlewares.md#ssm): Fetches parameters from [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html).

@@ -520,0 +521,0 @@ - [`validator`](/docs/middlewares.md#validator): Automatically validates incoming events and outgoing responses against custom schemas

@@ -55,2 +55,3 @@ jest.mock('aws-sdk')

handler(event, context, (error, response) => {
if (error) return reject(error)
try {

@@ -72,3 +73,3 @@ cb(error, {event, context, response})

})
promise.then(done).catch(err => done(err))
promise.then(done).catch(done)
}

@@ -222,2 +223,88 @@

test(`It should fail if "throwOnFailedCall" flag provided and call failed`, (done) => {
const errorMessage = 'Internal Error / Secret doesn\'t exist'
getSecretValueMock.mockReturnValueOnce({
promise: () => Promise.reject(new Error(errorMessage))
})
const errHandler = err => {
getSecretValueMock.mockClear()
expect(err.message).toEqual(errorMessage)
done()
}
return testScenario({
mockResponse: {},
middlewareOptions: {
secrets: {
KEY_NAME: 'failed_call'
},
throwOnFailedCall: true
},
callbacks: [
() => {
throw new Error('Not supposed to be called')
}
],
done: errHandler
})
})
test(`It should resolve if "throwOnFailedCall" flag not provided and call failed`, (done) => {
const errorMessage = 'Internal Error / Secret doesn\'t exist'
getSecretValueMock.mockReturnValueOnce({
promise: () => Promise.reject(new Error(errorMessage))
})
return testScenario({
mockResponse: {},
middlewareOptions: {
secrets: {
KEY_NAME: 'failed_call'
}
},
callbacks: [
(_, {context}) => {
expect(getSecretValueMock).toBeCalled()
getSecretValueMock.mockClear()
}
],
done
})
})
test(`It should resolve if "throwOnFailedCall" flag provided but item already cached`, (done) => {
const errorMessage = 'Internal Error / Secret doesn\'t exist'
return testScenario({
mockResponse: {
SecretString: JSON.stringify({Username: 'username', Password: 'password'})
},
middlewareOptions: {
secrets: {
KEY_NAME: 'rds_key'
},
throwOnFailedCall: true
},
callbacks: [
// invocation 1: fetched
(_, {context}) => {
hasRDSLogin(context)
expect(getSecretValueMock).toBeCalled()
getSecretValueMock.mockClear()
// set up next attempt to fail
getSecretValueMock.mockReturnValueOnce({
promise: () => Promise.reject(new Error(errorMessage))
})
},
// invocation 2: failed but content taken from cache
(_, {context}) => {
hasRDSLogin(context)
expect(getSecretValueMock).toBeCalled()
getSecretValueMock.mockClear()
}
],
done
})
})
test(`It should only refresh once per cache expiry window`, (done) => {

@@ -224,0 +311,0 @@ // with cache expiry of 50ms, test what happens when one refresh fails, and

@@ -7,2 +7,3 @@ let secretsManagerInstance

secrets: {}, // e.g. { RDS_SECRET: 'dev/rds_login', API_SECRET: '...' }
throwOnFailedCall: false,
cache: false,

@@ -61,2 +62,6 @@ cacheExpiryInMillis: undefined,

// when there's temporary problems with Secrets Manager
if (options.throwOnFailedCall && !options.secretsCache) {
throw err
}
if (options.secretsCache) {

@@ -63,0 +68,0 @@ options.secretsLoadedAt = new Date()

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