Skip to content

Commit 57c0d7e

Browse files
author
kkuzmin
authored
Align register/deregister function interfaces (#50)
Fix tests Fix tests Fix tests
1 parent 46c5e13 commit 57c0d7e

File tree

8 files changed

+94
-74
lines changed

8 files changed

+94
-74
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
sudo: false
22
language: node_js
33
node_js:
4-
- "8"
4+
- "12"
55
install:
66
- npm install
77
script:

al_aws.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* Helper class for lambda function utility and helper methods.
66
*
7-
* Last message ID: AWSC0102
7+
* Last message ID: AWSC0104
88
* @end
99
* -----------------------------------------------------------------------------
1010
*/
@@ -50,7 +50,7 @@ var getS3ConfigChanges = function(callback) {
5050
let config = JSON.parse(object.Body.toString());
5151
return callback(null, config);
5252
} catch(ex) {
53-
return callback('Unable to parse config changes.')
53+
return callback('AWSC0103 Unable to parse config changes.')
5454
}
5555
}
5656
});
@@ -158,7 +158,7 @@ var setEnv = function(vars, callback) {
158158

159159
lambda.getFunctionConfiguration(getConfigParams, (err, config) => {
160160
if(err){
161-
console.error('Error getting function config, environment variables were not updated', err);
161+
console.error('AWSC0104 Error getting function config, environment variables were not updated', err);
162162
return callback(err);
163163
}
164164
var params = {

al_aws_collector.js

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,17 @@ class AlAwsCollector {
219219
);
220220
}
221221

222-
register(event, custom) {
223-
const context = this._invokeContext;
222+
registerSync(event, custom) {
223+
this.register(event, custom, (err) => {
224+
if(err){
225+
return response.send(event, this.context, response.FAILED, {Error: err});
226+
} else {
227+
return response.send(event, this.context, response.SUCCESS);
228+
}
229+
});
230+
}
231+
232+
register(event, custom, callback) {
224233
let regValues = Object.assign(this.getProperties(), custom);
225234
regValues.stackName = event.ResourceProperties.StackName;
226235

@@ -267,13 +276,7 @@ class AlAwsCollector {
267276
});
268277
}
269278
],
270-
(err)=> {
271-
if(err){
272-
return response.send(event, context, response.FAILED, {Error: err});
273-
} else {
274-
return response.send(event, context, response.SUCCESS);
275-
}
276-
});
279+
callback);
277280
}
278281

279282
handleCheckin() {
@@ -373,20 +376,25 @@ class AlAwsCollector {
373376
);
374377
}
375378

376-
377-
deregister(event, custom){
379+
deregisterSync(event, custom) {
380+
this.deregister(event, custom, () => {
381+
// Respond with SUCCESS in order to delete CF stack with no issues.
382+
return response.send(event, this.context, response.SUCCESS);
383+
});
384+
}
385+
386+
deregister(event, custom, callback) {
378387
const context = this._invokeContext;
379388
let regValues = Object.assign(this.getProperties(), custom);
380389
regValues.stackName = event.ResourceProperties.StackName;
381390

382391
this._azcollectc.deregister(regValues)
383392
.then(resp => {
384-
return response.send(event, context, response.SUCCESS);
393+
return callback(null, resp);
385394
})
386395
.catch(exception => {
387396
console.warn('AWSC0011 Collector deregistration failed. ', exception);
388-
// Respond with SUCCESS in order to delete CF stack with no issues.
389-
return response.send(event, context, response.SUCCESS);
397+
return callback(exception);
390398
});
391399
}
392400

package.json

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@alertlogic/al-aws-collector-js",
3-
"version": "2.0.11",
3+
"version": "3.0.0",
44
"license": "MIT",
55
"description": "Alert Logic AWS Collector Common Library",
66
"repository": {
@@ -10,7 +10,7 @@
1010
"private": false,
1111
"scripts": {
1212
"lint": "jshint --exclude \"./node_modules/*\" **/*.js",
13-
"test": "JUNIT_REPORT_PATH=./test/report.xml nyc --reporter=cobertura mocha --colors --reporter mocha-jenkins-reporter",
13+
"test": "JUNIT_REPORT_PATH=./test/report.xml nyc --reporter=cobertura mocha './test/*_test.js' --colors",
1414
"rel": "npm publish --access=public"
1515
},
1616
"main": "index.js",
@@ -22,14 +22,13 @@
2222
],
2323
"devDependencies": {
2424
"aws-sdk": "^2.441.0",
25-
"aws-sdk-mock": "^4.4.0",
25+
"aws-sdk-mock": "^5.1.0",
2626
"clone": "^2.1.2",
2727
"dotenv": "^8.2.0",
2828
"jshint": "^2.9.5",
29-
"mocha": "^6.2.2",
30-
"mocha-jenkins-reporter": "^0.4.2",
29+
"mocha": "^7.1.1",
3130
"nyc": "^14.1.1",
32-
"rewire": "^4.0.1",
31+
"rewire": "^5.0.0",
3332
"sinon": "^7.5.0"
3433
},
3534
"dependencies": {

ps_spec.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ stages:
66
name: PR Test
77
when:
88
- pull_request
9+
- pull_request:
10+
trigger_phrase: test it
911
image: node:12
1012
compute_size: small
1113
commands:
@@ -43,4 +45,4 @@ stages:
4345
echo "NOT PUBLISHING $PKGNAME $PKGVERSION"
4446
fi
4547
- echo done
46-
48+

test/al_aws_collector_test.js

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ var formatFun = function (event, context, callback) {
150150
describe('al_aws_collector tests', function() {
151151

152152
beforeEach(function(){
153+
colMock.initProcessEnv();
153154
AWS.mock('KMS', 'decrypt', function (params, callback) {
154155
const data = {
155156
Plaintext : 'decrypted-aims-sercret-key'
@@ -185,7 +186,7 @@ describe('al_aws_collector tests', function() {
185186
AlAwsCollector.load().then(function(creds) {
186187
var collector = new AlAwsCollector(
187188
mockContext, 'cwe', AlAwsCollector.IngestTypes.SECMSGS, '1.0.0', creds, function() {});
188-
collector.register(colMock.REGISTRATION_TEST_EVENT, colMock.REG_PARAMS);
189+
collector.registerSync(colMock.REGISTRATION_TEST_EVENT, colMock.REG_PARAMS);
189190
});
190191
});
191192

@@ -204,7 +205,7 @@ describe('al_aws_collector tests', function() {
204205
AlAwsCollector.load().then(function(creds) {
205206
var collector = new AlAwsCollector(
206207
mockContext, 'cwe', AlAwsCollector.IngestTypes.SECMSGS, '1.0.0', creds, function() {});
207-
collector.register(colMock.REGISTRATION_TEST_EVENT, colMock.REG_PARAMS);
208+
collector.registerSync(colMock.REGISTRATION_TEST_EVENT, colMock.REG_PARAMS);
208209
});
209210
});
210211

@@ -367,7 +368,7 @@ describe('al_aws_collector tests', function() {
367368
AlAwsCollector.load().then(function(creds) {
368369
var collector = new AlAwsCollector(
369370
deregisterContext, 'cwe', AlAwsCollector.IngestTypes.SECMSGS, '1.0.0', creds);
370-
collector.deregister(colMock.DEREGISTRATION_TEST_EVENT, colMock.DEREG_PARAMS);
371+
collector.deregisterSync(colMock.DEREGISTRATION_TEST_EVENT, colMock.DEREG_PARAMS);
371372
});
372373
});
373374

@@ -693,6 +694,7 @@ describe('al_aws_collector tests', function() {
693694
};
694695

695696
beforeEach(() => {
697+
colMock.initProcessEnv();
696698
collector = new AlAwsCollector(applyConfigChangesContext, 'cwe',
697699
AlAwsCollector.IngestTypes.SECMSGS, '1.0.0', colMock.AIMS_TEST_CREDS);
698700
object = JSON.parse(JSON.stringify(colMock.LAMBDA_FUNCTION_CONFIGURATION));
@@ -868,6 +870,10 @@ describe('al_aws_collector tests for setDecryptedCredentials()', function() {
868870
rewireGetDecryptedCredentials = collectRewire.__get__('getDecryptedCredentials');
869871
});
870872

873+
beforeEach(function() {
874+
colMock.initProcessEnv();
875+
});
876+
871877
afterEach(function() {
872878
AWS.restore('KMS', 'decrypt');
873879
});
@@ -885,12 +891,9 @@ describe('al_aws_collector tests for setDecryptedCredentials()', function() {
885891

886892
it('if AIMS_DECRYPTED_CREDS are not declared KMS decryption is called', function(done) {
887893
collectRewire.__set__('AIMS_DECRYPTED_CREDS', undefined);
888-
collectRewire.__set__('process', {
889-
env : {
890-
aims_access_key_id : ACCESS_KEY_ID,
891-
aims_secret_key: ENCRYPTED_SECRET_KEY_BASE64
892-
}
893-
});
894+
process.env.aims_access_key_id = ACCESS_KEY_ID;
895+
process.env.aims_secret_key = ENCRYPTED_SECRET_KEY_BASE64;
896+
894897
AWS.mock('KMS', 'decrypt', function (data, callback) {
895898
assert.equal(data.CiphertextBlob, ENCRYPTED_SECRET_KEY);
896899
return callback(null, {Plaintext : DECRYPTED_SECRET_KEY});
@@ -907,12 +910,9 @@ describe('al_aws_collector tests for setDecryptedCredentials()', function() {
907910

908911
it('if some error during decryption, function fails', function(done) {
909912
collectRewire.__set__('AIMS_DECRYPTED_CREDS', undefined);
910-
collectRewire.__set__('process', {
911-
env : {
912-
aims_access_key_id : ACCESS_KEY_ID,
913-
aims_secret_key: new Buffer('wrong_key').toString('base64')
914-
}
915-
});
913+
process.env.aims_access_key_id = ACCESS_KEY_ID;
914+
process.env.aims_secret_key = new Buffer('wrong_key').toString('base64');
915+
916916
AWS.mock('KMS', 'decrypt', function (data, callback) {
917917
assert.equal(data.CiphertextBlob, 'wrong_key');
918918
return callback('error', 'stack');
@@ -927,6 +927,7 @@ describe('al_aws_collector tests for setDecryptedCredentials()', function() {
927927
describe('al_aws_collector error tests', function() {
928928

929929
beforeEach(function(){
930+
colMock.initProcessEnv();
930931
AWS.mock('KMS', 'decrypt', function (params, callback) {
931932
const data = {
932933
Plaintext : 'decrypted-aims-sercret-key'
@@ -968,7 +969,7 @@ describe('al_aws_collector error tests', function() {
968969
AlAwsCollector.load().then(function(creds) {
969970
var collector = new AlAwsCollector(
970971
registerContext, 'cwe', AlAwsCollector.IngestTypes.SECMSGS, '1.0.0', creds, function() {});
971-
collector.register(colMock.REGISTRATION_TEST_EVENT, colMock.REG_PARAMS);
972+
collector.registerSync(colMock.REGISTRATION_TEST_EVENT, colMock.REG_PARAMS);
972973
});
973974
});
974975

@@ -984,7 +985,7 @@ describe('al_aws_collector error tests', function() {
984985
AlAwsCollector.load().then(function(creds) {
985986
var collector = new AlAwsCollector(
986987
deregisterContext, 'cwe', AlAwsCollector.IngestTypes.SECMSGS, '1.0.0', creds);
987-
collector.deregister(colMock.DEREGISTRATION_TEST_EVENT, colMock.DEREG_PARAMS);
988+
collector.deregisterSync(colMock.DEREGISTRATION_TEST_EVENT, colMock.DEREG_PARAMS);
988989
});
989990
});
990991

test/al_aws_test.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
const assert = require('assert');
2-
const rewire = require('rewire');
32
const m_alAws = require('../al_aws');
43
const colMock = require('./collector_mock');
54
var AWS = require('aws-sdk-mock');
65

7-
const alAwsRewire = rewire('../al_aws');
86

97
describe('al_aws Tests', function() {
108
describe('arnToName() tests', function() {
@@ -42,53 +40,58 @@ describe('al_aws Tests', function() {
4240
});
4341

4442
describe('getS3ConfigChanges() function', () => {
45-
var rewireGetS3ConfigChanges = alAwsRewire.__get__('getS3ConfigChanges');
4643
var jsonCfg = "{\"key\":\"value\"}";
4744
var s3Object = {Body: new Buffer(jsonCfg)};
4845

46+
beforeEach(() => {
47+
colMock.initProcessEnv();
48+
});
4949
afterEach(() => {
5050
AWS.restore('S3', 'getObject');
51-
process.env.aws_lambda_update_config_name = colMock.S3_CONFIGURATION_FILE_NAME;
5251
});
5352

5453
it('sunny case with predefined name', () => {
55-
AWS.mock('S3', 'getObject', (params, callback) => {
54+
AWS.mock('S3', 'getObject', function(params, callback) {
5655
assert.equal(params.Bucket, colMock.S3_CONFIGURATION_BUCKET);
5756
assert.equal(params.Key, colMock.S3_CONFIGURATION_FILE_NAME);
5857
return callback(null, s3Object);
5958
});
6059

61-
rewireGetS3ConfigChanges((err, config) => {
60+
m_alAws.getS3ConfigChanges((err, config) => {
6261
assert.equal(jsonCfg, JSON.stringify(config));
6362
});
6463
});
6564

6665
it('error', () => {
67-
AWS.mock('S3', 'getObject', (params, callback) => {
66+
AWS.mock('S3', 'getObject', function (params, callback) {
6867
assert.equal(params.Bucket, colMock.S3_CONFIGURATION_BUCKET);
6968
assert.equal(params.Key, colMock.S3_CONFIGURATION_FILE_NAME);
7069
return callback("key not found error");
7170
});
7271

73-
rewireGetS3ConfigChanges((err, config) => {
72+
m_alAws.getS3ConfigChanges(function(err, config) {
7473
assert.equal("key not found error", err);
7574
});
7675
});
7776
});
7877

7978
describe('getLambdaConfig() function', () => {
80-
var rewireGetLambdaConfig = alAwsRewire.__get__('getLambdaConfig');
81-
after(() => {
79+
80+
beforeEach(() => {
81+
colMock.initProcessEnv();
82+
});
83+
84+
afterEach(() => {
8285
AWS.restore('Lambda', 'getFunctionConfiguration');
8386
});
84-
85-
it('check function anme', () => {
87+
88+
it('check function name', () => {
8689
AWS.mock('Lambda', 'getFunctionConfiguration', (params, callback) => {
8790
assert.equal(colMock.FUNCTION_NAME, params.FunctionName);
8891
return callback(null, "ok");
8992
});
9093

91-
rewireGetLambdaConfig((err, config) => {
94+
m_alAws.getLambdaConfig((err, config) => {
9295
assert.equal("ok", config);
9396
});
9497
});

0 commit comments

Comments
 (0)