From a4ed0fc8768e9c45a03c7c148f5596eb4c3c8a6a Mon Sep 17 00:00:00 2001 From: abetomo Date: Wed, 28 Jun 2017 14:05:26 +0900 Subject: [PATCH 1/3] Refactoring _listEventSourceMappings Modify that _listEventSourceMappings returns Promise --- lib/main.js | 26 +++++++++++++------------- test/main.js | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/lib/main.js b/lib/main.js index bde0a895..315c684c 100644 --- a/lib/main.js +++ b/lib/main.js @@ -567,13 +567,15 @@ Lambda.prototype._buildAndArchive = function (program, archiveCallback) { }) } -Lambda.prototype._listEventSourceMappings = function (lambda, params, cb) { - return lambda.listEventSourceMappings(params, function (err, data) { - var eventSourceMappings = [] - if (!err && data && data.EventSourceMappings) { - eventSourceMappings = data.EventSourceMappings - } - return cb(err, eventSourceMappings) +Lambda.prototype._listEventSourceMappings = (lambda, params) => { + return new Promise((resolve, reject) => { + lambda.listEventSourceMappings(params, (err, data) => { + if (err) return reject(err) + if (data && data.EventSourceMappings) { + return resolve(data.EventSourceMappings) + } + return resolve([]) + }) }) } @@ -768,11 +770,9 @@ Lambda.prototype._deployToRegion = function (program, params, region) { 'FunctionName': params.FunctionName }).promise().then(() => { // Function exists - _this._listEventSourceMappings(lambda, { + return _this._listEventSourceMappings(lambda, { 'FunctionName': params.FunctionName - }, (err, existingEventSourceList) => { - if (err) return reject(err) - + }).then((existingEventSourceList) => { return Promise.all([ _this._uploadExisting(lambda, params).then((results) => { console.log('=> Zip file(s) done uploading. Results follow: ') @@ -791,9 +791,9 @@ Lambda.prototype._deployToRegion = function (program, params, region) { ) ]).then((results) => { resolve(results) - }).catch((err) => { - reject(err) }) + }).catch((err) => { + reject(err) }) }).catch(() => { // Function does not exist diff --git a/test/main.js b/test/main.js index 4314d992..5c51f4f7 100644 --- a/test/main.js +++ b/test/main.js @@ -800,6 +800,20 @@ describe('lib/main', function () { }) }) + describe('_listEventSourceMappings', () => { + it('simple test with mock', () => { + return lambda._listEventSourceMappings( + awsLambda, + { FunctionName: 'test-func' } + ).then((results) => { + assert.deepEqual( + results, + lambdaMockSettings.listEventSourceMappings.EventSourceMappings + ) + }) + }) + }) + describe('_updateEventSources', () => { const eventSourcesJsonValue = { EventSourceMappings: [{ From 58e7f2c5b7df67603ca37076de44ef648087777d Mon Sep 17 00:00:00 2001 From: abetomo Date: Wed, 28 Jun 2017 14:06:18 +0900 Subject: [PATCH 2/3] Remove unnecessary catch --- lib/main.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/main.js b/lib/main.js index 315c684c..c10751a8 100644 --- a/lib/main.js +++ b/lib/main.js @@ -815,8 +815,6 @@ Lambda.prototype._deployToRegion = function (program, params, region) { ) ]).then((results) => { resolve(results) - }).catch((err) => { - reject(err) }) }).catch((err) => { reject(err) From 42670c232a9063352fa156a829e6d86d69e09ee0 Mon Sep 17 00:00:00 2001 From: abetomo Date: Thu, 29 Jun 2017 10:41:51 +0900 Subject: [PATCH 3/3] Replace `var` with `const` --- lib/main.js | 14 +++++++------- test/main.js | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/main.js b/lib/main.js index 5812e0d6..45a54e93 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,8 +23,8 @@ const Lambda = function () { } Lambda.prototype._createSampleFile = function (file, boilerplateName) { - var exampleFile = path.join(process.cwd(), file) - var boilerplateFile = path.join( + const exampleFile = path.join(process.cwd(), file) + const boilerplateFile = path.join( __dirname, (boilerplateName || file) + '.example' ) @@ -150,7 +150,7 @@ so you can easily test run multiple events. } Lambda.prototype._params = function (program, buffer) { - var params = { + const params = { FunctionName: program.functionName + (program.environment ? '-' + program.environment : '') + (program.lambdaVersion ? '-' + program.lambdaVersion : ''), @@ -189,8 +189,8 @@ Lambda.prototype._params = function (program, buffer) { } } if (program.configFile) { - var configValues = fs.readFileSync(program.configFile) - var config = dotenv.parse(configValues) + const configValues = fs.readFileSync(program.configFile) + const config = dotenv.parse(configValues) // If `configFile` is an empty file, `config` value will be `{}` params.Environment = { Variables: config @@ -441,8 +441,8 @@ Lambda.prototype._cleanDirectory = (codeDirectory) => { } Lambda.prototype._setRunTimeEnvironmentVars = function (program) { - var configValues = fs.readFileSync(program.configFile) - var config = dotenv.parse(configValues) + const configValues = fs.readFileSync(program.configFile) + const config = dotenv.parse(configValues) for (let k in config) { if (!config.hasOwnProperty(k)) { diff --git a/test/main.js b/test/main.js index 9b54baf6..cd2ec398 100644 --- a/test/main.js +++ b/test/main.js @@ -152,28 +152,28 @@ describe('lib/main', function () { const functionNamePattern = /(arn:aws:lambda:)?([a-z]{2}-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?/ it('appends environment to original functionName', function () { - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(params.FunctionName, '___node-lambda-development') assert.match(params.FunctionName, functionNamePattern) }) it('appends environment to original functionName (production)', function () { program.environment = 'production' - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(params.FunctionName, '___node-lambda-production') assert.match(params.FunctionName, functionNamePattern) }) it('appends version to original functionName', function () { program.lambdaVersion = '2015-02-01' - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(params.FunctionName, '___node-lambda-development-2015-02-01') assert.match(params.FunctionName, functionNamePattern) }) it('appends version to original functionName (value not allowed by AWS)', function () { program.lambdaVersion = '2015.02.01' - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(params.FunctionName, '___node-lambda-development-2015_02_01') assert.match(params.FunctionName, functionNamePattern) }) @@ -181,7 +181,7 @@ describe('lib/main', function () { it('appends VpcConfig to params when vpc params set', function () { program.vpcSubnets = 'subnet-00000000,subnet-00000001,subnet-00000002' program.vpcSecurityGroups = 'sg-00000000,sg-00000001,sg-00000002' - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(params.VpcConfig.SubnetIds[0], program.vpcSubnets.split(',')[0]) assert.equal(params.VpcConfig.SubnetIds[1], program.vpcSubnets.split(',')[1]) assert.equal(params.VpcConfig.SubnetIds[2], program.vpcSubnets.split(',')[2]) @@ -191,7 +191,7 @@ describe('lib/main', function () { }) it('does not append VpcConfig when params are not set', function () { - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(Object.keys(params.VpcConfig.SubnetIds).length, 0) assert.equal(Object.keys(params.VpcConfig.SecurityGroupIds).length, 0) }) @@ -206,7 +206,7 @@ describe('lib/main', function () { it('does not append DeadLetterConfig when params are not set', function () { delete program.deadLetterConfigTargetArn - var params = lambda._params(program) + const params = lambda._params(program) assert.isNull(params.DeadLetterConfig.TargetArn) }) @@ -236,19 +236,19 @@ describe('lib/main', function () { it('adds variables when configFile param is set', function () { program.configFile = 'tmp.env' - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(params.Environment.Variables['FOO'], 'bar') assert.equal(params.Environment.Variables['BAZ'], 'bing') }) it('when configFile param is set but it is an empty file', function () { program.configFile = 'empty.env' - var params = lambda._params(program) + const params = lambda._params(program) assert.equal(Object.keys(params.Environment.Variables).length, 0) }) it('does not add when configFile param is not set', function () { - var params = lambda._params(program) + const params = lambda._params(program) assert.isNull(params.Environment.Variables) }) })