Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions lib/deploy/stepFunctions/compileAlarms.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@ function getCloudWatchAlarms(
}

function validateConfig(serverless, stateMachineName, alarmsObj) {
// no alarms defined at all
if (!_.isObject(alarmsObj)) {
return false;
}

if (!_.isObject(alarmsObj) ||
!_.isObject(alarmsObj.topics) ||
!_.isArray(alarmsObj.metrics) ||
Expand Down
44 changes: 43 additions & 1 deletion lib/deploy/stepFunctions/compileAlarms.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,24 @@

const _ = require('lodash');
const expect = require('chai').expect;
const sinon = require('sinon');
const Serverless = require('serverless/lib/Serverless');
const AwsProvider = require('serverless/lib/plugins/aws/provider/awsProvider');
const ServerlessStepFunctions = require('./../../index');

describe('#compileAlarms', () => {
let consoleLogSpy;
let serverless;
let serverlessStepFunctions;

beforeEach(() => {
consoleLogSpy = sinon.spy();
serverless = new Serverless();
serverless.servicePath = true;
serverless.service.service = 'step-functions';
serverless.service.provider.compiledCloudFormationTemplate = { Resources: {} };
serverless.setProvider('aws', new AwsProvider(serverless));
serverless.cli = { consoleLog: console.log };
serverless.cli = { consoleLog: consoleLogSpy };
const options = {
stage: 'dev',
region: 'ap-northeast-1',
Expand Down Expand Up @@ -87,6 +90,37 @@ describe('#compileAlarms', () => {
validateCloudWatchAlarm(resources.StateMachineBeta2ExecutionsAbortedAlarm);
expect(resources).to.have.property('StateMachineBeta2ExecutionThrottledAlarm');
validateCloudWatchAlarm(resources.StateMachineBeta2ExecutionThrottledAlarm);

expect(consoleLogSpy.callCount).equal(0);
});

it('should not generate logs when no CloudWatch Alarms are defiened', () => {
const genStateMachine = (name) => ({
name,
definition: {
StartAt: 'A',
States: {
A: {
Type: 'Pass',
End: true,
},
},
},
});

serverless.service.stepFunctions = {
stateMachines: {
myStateMachine1: genStateMachine('stateMachineBeta1'),
myStateMachine2: genStateMachine('stateMachineBeta2'),
},
};

serverlessStepFunctions.compileAlarms();
const resources = serverlessStepFunctions.serverless.service
.provider.compiledCloudFormationTemplate.Resources;
expect(_.keys(resources)).to.have.lengthOf(0);

expect(consoleLogSpy.callCount).equal(0);
});

it('should not generate CloudWatch Alarms when alarms.topics is missing', () => {
Expand Down Expand Up @@ -119,6 +153,8 @@ describe('#compileAlarms', () => {
const resources = serverlessStepFunctions.serverless.service
.provider.compiledCloudFormationTemplate.Resources;
expect(_.keys(resources)).to.have.lengthOf(0);

expect(consoleLogSpy.callCount).equal(2);
});

it('should not generate CloudWatch Alarms when alarms.topics is empty', () => {
Expand Down Expand Up @@ -152,6 +188,8 @@ describe('#compileAlarms', () => {
const resources = serverlessStepFunctions.serverless.service
.provider.compiledCloudFormationTemplate.Resources;
expect(_.keys(resources)).to.have.lengthOf(0);

expect(consoleLogSpy.callCount).equal(2);
});

it('should not generate CloudWatch Alarms when alarms.metrics is missing', () => {
Expand Down Expand Up @@ -184,6 +222,8 @@ describe('#compileAlarms', () => {
const resources = serverlessStepFunctions.serverless.service
.provider.compiledCloudFormationTemplate.Resources;
expect(_.keys(resources)).to.have.lengthOf(0);

expect(consoleLogSpy.callCount).equal(2);
});

it('should not generate CloudWatch Alarms for unsupported metrics', () => {
Expand Down Expand Up @@ -225,5 +265,7 @@ describe('#compileAlarms', () => {

// but invalid metric names are skipped
expect(_.keys(resources)).to.have.lengthOf(2);

expect(consoleLogSpy.callCount).equal(2);
});
});
3 changes: 2 additions & 1 deletion lib/deploy/stepFunctions/compileIamRole.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

const _ = require('lodash');
const expect = require('chai').expect;
const sinon = require('sinon');
const Serverless = require('serverless/lib/Serverless');
const AwsProvider = require('serverless/lib/plugins/aws/provider/awsProvider');
const ServerlessStepFunctions = require('./../../index');
Expand All @@ -16,7 +17,7 @@ describe('#compileIamRole', () => {
serverless.service.service = 'step-functions';
serverless.service.provider.compiledCloudFormationTemplate = { Resources: {} };
serverless.setProvider('aws', new AwsProvider(serverless));
serverless.cli = { consoleLog: console.log };
serverless.cli = { consoleLog: sinon.spy() };
const options = {
stage: 'dev',
region: 'ap-northeast-1',
Expand Down