Skip to content

Commit 0422c3e

Browse files
committed
update test code
1 parent 98f57e7 commit 0422c3e

File tree

2 files changed

+133
-10
lines changed

2 files changed

+133
-10
lines changed

index.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,37 +111,31 @@ class ServerlessStepFunctions {
111111

112112
deploy() {
113113
this.serverless.cli.log(`Start to deploy ${this.options.state} step function...`);
114-
BbPromise.bind(this)
114+
return BbPromise.bind(this)
115115
.then(this.yamlParse)
116116
.then(this.getStateMachineArn)
117117
.then(this.getFunctionArns)
118118
.then(this.compile)
119119
.then(this.getIamRole)
120120
.then(this.deleteStateMachine)
121121
.then(this.createStateMachine);
122-
123-
return BbPromise.resolve();
124122
}
125123

126124
remove() {
127-
BbPromise.bind(this)
125+
return BbPromise.bind(this)
128126
.then(this.getStateMachineArn)
129127
.then(this.deleteStateMachine)
130128
.then(() => {
131129
this.serverless.cli.log(`Remove ${this.options.state}`);
132130
return BbPromise.resolve();
133131
});
134-
135-
return BbPromise.resolve();
136132
}
137133

138134
invoke() {
139-
BbPromise.bind(this)
135+
return BbPromise.bind(this)
140136
.then(this.getStateMachineArn)
141137
.then(this.startExecution)
142138
.then(this.describeExecution);
143-
144-
return BbPromise.resolve();
145139
}
146140

147141
getIamRole() {

index.test.js

Lines changed: 130 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'use strict';
22

33
const expect = require('chai').expect;
4+
const BbPromise = require('bluebird');
5+
const sinon = require('sinon');
46
const Serverless = require('serverless/lib/Serverless');
57
const AwsProvider = require('serverless/lib/plugins/aws/provider/awsProvider');
68
const ServerlessStepFunctions = require('./index');
@@ -37,6 +39,10 @@ describe('ServerlessStepFunctions', () => {
3739
it('should set the provider variable to an instance of AwsProvider', () =>
3840
expect(serverlessStepFunctions.provider).to.be.instanceof(AwsProvider));
3941

42+
it('should have access to the serverless instance', () => {
43+
expect(serverlessStepFunctions.serverless).to.deep.equal(serverless);
44+
});
45+
4046
it('should set the iamRoleName variable', () =>
4147
expect(serverlessStepFunctions.iamRoleName).to.be
4248
.equal('serverless-step-functions-executerole-us-east-1'));
@@ -45,10 +51,133 @@ describe('ServerlessStepFunctions', () => {
4551
expect(serverlessStepFunctions.iamPolicyName).to.be
4652
.equal('serverless-step-functions-executepolicy-us-east-1'));
4753

54+
it('should set the assumeRolePolicyDocument variable', () =>
55+
expect(serverlessStepFunctions.assumeRolePolicyDocument).to.be
56+
.equal(`{
57+
"Version": "2012-10-17",
58+
"Statement": [
59+
{
60+
"Effect": "Allow",
61+
"Principal": {
62+
"Service": "states.us-east-1.amazonaws.com"
63+
},
64+
"Action": "sts:AssumeRole"
65+
}
66+
]
67+
}
68+
`));
69+
70+
it('should run deploy:stepf:deploy promise chain in order', () => {
71+
const deployStub = sinon
72+
.stub(serverlessStepFunctions, 'deploy').returns(BbPromise.resolve());
73+
return serverlessStepFunctions.hooks['deploy:stepf:deploy']()
74+
.then(() => {
75+
expect(deployStub.calledOnce).to.be.equal(true);
76+
serverlessStepFunctions.deploy.restore();
77+
});
78+
});
79+
80+
it('should run remove:stepf:remove promise chain in order', () => {
81+
const removeStub = sinon
82+
.stub(serverlessStepFunctions, 'remove').returns(BbPromise.resolve());
83+
return serverlessStepFunctions.hooks['remove:stepf:remove']()
84+
.then(() => {
85+
expect(removeStub.calledOnce).to.be.equal(true);
86+
serverlessStepFunctions.remove.restore();
87+
});
88+
});
89+
90+
it('should run invoke:stepf:invoke promise chain in order', () => {
91+
const invokeStub = sinon
92+
.stub(serverlessStepFunctions, 'invoke').returns(BbPromise.resolve());
93+
return serverlessStepFunctions.hooks['invoke:stepf:invoke']()
94+
.then(() => {
95+
expect(invokeStub.calledOnce).to.be.equal(true);
96+
serverlessStepFunctions.invoke.restore();
97+
});
98+
});
99+
48100
it('should set an empty options object if no options are given', () => {
49101
const serverlessStepFunctionsWithEmptyOptions = new ServerlessStepFunctions(serverless);
50-
51102
expect(serverlessStepFunctionsWithEmptyOptions.options).to.deep.equal({});
52103
});
53104
});
105+
106+
describe('#deploy()', () => {
107+
it('should run promise chain in order', () => {
108+
const yamlParseStub = sinon
109+
.stub(serverlessStepFunctions, 'yamlParse').returns(BbPromise.resolve());
110+
const getStateMachineArnStub = sinon
111+
.stub(serverlessStepFunctions, 'getStateMachineArn').returns(BbPromise.resolve());
112+
const getFunctionArnsStub = sinon
113+
.stub(serverlessStepFunctions, 'getFunctionArns').returns(BbPromise.resolve());
114+
const compileStub = sinon
115+
.stub(serverlessStepFunctions, 'compile').returns(BbPromise.resolve());
116+
const getIamRoleStub = sinon
117+
.stub(serverlessStepFunctions, 'getIamRole').returns(BbPromise.resolve());
118+
const deleteStateMachineStub = sinon
119+
.stub(serverlessStepFunctions, 'deleteStateMachine').returns(BbPromise.resolve());
120+
const createStateMachineStub = sinon
121+
.stub(serverlessStepFunctions, 'createStateMachine').returns(BbPromise.resolve());
122+
123+
return serverlessStepFunctions.deploy()
124+
.then(() => {
125+
expect(yamlParseStub.calledOnce).to.be.equal(true);
126+
expect(getStateMachineArnStub.calledAfter(yamlParseStub)).to.be.equal(true);
127+
expect(getFunctionArnsStub.calledAfter(getStateMachineArnStub)).to.be.equal(true);
128+
expect(compileStub.calledAfter(getFunctionArnsStub)).to.be.equal(true);
129+
expect(getIamRoleStub.calledAfter(compileStub)).to.be.equal(true);
130+
expect(deleteStateMachineStub.calledAfter(getIamRoleStub)).to.be.equal(true);
131+
expect(createStateMachineStub.calledAfter(deleteStateMachineStub)).to.be.equal(true);
132+
133+
serverlessStepFunctions.yamlParse.restore();
134+
serverlessStepFunctions.getStateMachineArn.restore();
135+
serverlessStepFunctions.getFunctionArns.restore();
136+
serverlessStepFunctions.compile.restore();
137+
serverlessStepFunctions.getIamRole.restore();
138+
serverlessStepFunctions.deleteStateMachine.restore();
139+
serverlessStepFunctions.createStateMachine.restore();
140+
});
141+
});
142+
});
143+
144+
describe('#remove()', () => {
145+
it('should run promise chain in order', () => {
146+
const getStateMachineArnStub = sinon
147+
.stub(serverlessStepFunctions, 'getStateMachineArn').returns(BbPromise.resolve());
148+
const deleteStateMachineStub = sinon
149+
.stub(serverlessStepFunctions, 'deleteStateMachine').returns(BbPromise.resolve());
150+
151+
return serverlessStepFunctions.remove()
152+
.then(() => {
153+
expect(getStateMachineArnStub.calledOnce).to.be.equal(true);
154+
expect(deleteStateMachineStub.calledAfter(getStateMachineArnStub)).to.be.equal(true);
155+
156+
serverlessStepFunctions.getStateMachineArn.restore();
157+
serverlessStepFunctions.deleteStateMachine.restore();
158+
});
159+
});
160+
});
161+
162+
describe('#invoke()', () => {
163+
it('should run promise chain in order', () => {
164+
const getStateMachineArnStub = sinon
165+
.stub(serverlessStepFunctions, 'getStateMachineArn').returns(BbPromise.resolve());
166+
const startExecutionStub = sinon
167+
.stub(serverlessStepFunctions, 'startExecution').returns(BbPromise.resolve());
168+
const describeExecutionStub = sinon
169+
.stub(serverlessStepFunctions, 'describeExecution').returns(BbPromise.resolve());
170+
171+
return serverlessStepFunctions.invoke()
172+
.then(() => {
173+
expect(getStateMachineArnStub.calledOnce).to.be.equal(true);
174+
expect(startExecutionStub.calledAfter(getStateMachineArnStub)).to.be.equal(true);
175+
expect(describeExecutionStub.calledAfter(startExecutionStub)).to.be.equal(true);
176+
177+
serverlessStepFunctions.getStateMachineArn.restore();
178+
serverlessStepFunctions.startExecution.restore();
179+
serverlessStepFunctions.describeExecution.restore();
180+
});
181+
});
182+
});
54183
});

0 commit comments

Comments
 (0)