Skip to content

Commit 5459754

Browse files
committed
update test code
1 parent 0422c3e commit 5459754

File tree

2 files changed

+125
-1
lines changed

2 files changed

+125
-1
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class ServerlessStepFunctions {
153153
if (error.statusCode === 404) {
154154
return this.createIamRole();
155155
}
156-
return BbPromise.reject();
156+
throw new this.serverless.classes.Error(error.message);
157157
});
158158
}
159159

index.test.js

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ describe('ServerlessStepFunctions', () => {
1818
serverless.service.functions = {
1919
first: {
2020
handler: true,
21+
name: 'first',
2122
},
2223
};
2324
const options = {
@@ -27,6 +28,7 @@ describe('ServerlessStepFunctions', () => {
2728
functionObj: {
2829
name: 'first',
2930
},
31+
state: 'stateMachine',
3032
};
3133
serverless.init();
3234
serverless.setProvider('aws', new AwsProvider(serverless));
@@ -180,4 +182,126 @@ describe('ServerlessStepFunctions', () => {
180182
});
181183
});
182184
});
185+
186+
describe('#getIamRole()', () => {
187+
let getRoleStub;
188+
beforeEach(() => {
189+
getRoleStub = sinon.stub(serverlessStepFunctions.provider, 'request')
190+
.returns(BbPromise.resolve({Role:{Arn:'roleArn'}}));
191+
});
192+
193+
it('should getIamRole with correct params', () => serverlessStepFunctions.getIamRole()
194+
.then(() => {
195+
expect(getRoleStub.calledOnce).to.be.equal(true);
196+
expect(getRoleStub.calledWithExactly(
197+
'IAM',
198+
'getRole',
199+
{
200+
RoleName: 'serverless-step-functions-executerole-us-east-1',
201+
},
202+
serverlessStepFunctions.options.stage,
203+
serverlessStepFunctions.options.region
204+
)).to.be.equal(true);
205+
expect(serverlessStepFunctions.iamRoleArn).to.be.equal('roleArn');
206+
serverlessStepFunctions.provider.request.restore();
207+
})
208+
);
209+
210+
it('should createRole when statusCode is 404', () => {
211+
serverlessStepFunctions.provider.request.restore();
212+
const getRoleErrorStub = sinon.stub(serverlessStepFunctions.provider, 'request')
213+
.returns(BbPromise.reject({statusCode: 404}));
214+
const createIamRoleStub = sinon
215+
.stub(serverlessStepFunctions, 'createIamRole').returns(BbPromise.resolve());
216+
217+
serverlessStepFunctions.getIamRole().catch((error) => {
218+
expect(createIamRole.calledOnce).to.be.equal(true);
219+
serverlessStepFunctions.provider.request.restore();
220+
serverlessStepFunctions.createIamRole.restore();
221+
});
222+
});
223+
224+
it('should throw error when statusCode is not 404', () => {
225+
serverlessStepFunctions.provider.request.restore();
226+
const getRoleErrorStub = sinon.stub(serverlessStepFunctions.provider, 'request')
227+
.returns(BbPromise.reject({statusCode: 502}));
228+
229+
serverlessStepFunctions.getIamRole().catch((error) => {
230+
expect(error.name).to.be.equal('ServerlessError');
231+
serverlessStepFunctions.provider.request.restore();
232+
});
233+
});
234+
});
235+
236+
describe('#getFunctionArns()', () => {
237+
let getCallerIdentityStub;
238+
beforeEach(() => {
239+
getCallerIdentityStub = sinon.stub(serverlessStepFunctions.provider, 'request')
240+
.returns(BbPromise.resolve({Account:1234}));
241+
});
242+
243+
it('should getFunctionArns with correct params', () => serverlessStepFunctions.getFunctionArns()
244+
.then(() => {
245+
expect(getCallerIdentityStub.calledOnce).to.be.equal(true);
246+
expect(getCallerIdentityStub.calledWithExactly(
247+
'STS',
248+
'getCallerIdentity',
249+
{},
250+
serverlessStepFunctions.options.stage,
251+
serverlessStepFunctions.options.region
252+
)).to.be.equal(true);
253+
expect(serverlessStepFunctions.functionArns.first).to.be
254+
.equal('arn:aws:lambda:us-east-1:1234:function:first');
255+
serverlessStepFunctions.provider.request.restore();
256+
})
257+
);
258+
});
259+
260+
describe('#createIamRole()', () => {
261+
let createIamRoleStub;
262+
beforeEach(() => {
263+
createIamRoleStub = sinon.stub(serverlessStepFunctions.provider, 'request');
264+
createIamRoleStub.onFirstCall().returns(BbPromise.resolve({Role:{Arn:'roleArn'}}));
265+
createIamRoleStub.onSecondCall().returns(BbPromise.resolve({Policy:{Arn:'policyArn'}}));
266+
createIamRoleStub.onThirdCall().returns(BbPromise.resolve());
267+
});
268+
269+
it('should createIamRole with correct params', () => serverlessStepFunctions.createIamRole()
270+
.then(() => {
271+
expect(createIamRoleStub.calledThrice).to.be.equal(true);
272+
expect(createIamRoleStub.args[0][0]).to.be.equal('IAM');
273+
expect(createIamRoleStub.args[0][1]).to.be.equal('createRole');
274+
expect(createIamRoleStub.args[1][0]).to.be.equal('IAM');
275+
expect(createIamRoleStub.args[1][1]).to.be.equal('createPolicy');
276+
expect(createIamRoleStub.args[2][0]).to.be.equal('IAM');
277+
expect(createIamRoleStub.args[2][1]).to.be.equal('attachRolePolicy');
278+
serverlessStepFunctions.provider.request.restore();
279+
})
280+
);
281+
});
282+
283+
describe('#getStateMachineArn()', () => {
284+
let getStateMachineStub;
285+
beforeEach(() => {
286+
getStateMachineStub = sinon.stub(serverlessStepFunctions.provider, 'request')
287+
.returns(BbPromise.resolve({Account:1234}));
288+
});
289+
290+
it('should getStateMachineStub with correct params', () => serverlessStepFunctions.getStateMachineArn()
291+
.then(() => {
292+
expect(getStateMachineStub.calledOnce).to.be.equal(true);
293+
expect(getStateMachineStub.calledWithExactly(
294+
'STS',
295+
'getCallerIdentity',
296+
{},
297+
serverlessStepFunctions.options.stage,
298+
serverlessStepFunctions.options.region
299+
)).to.be.equal(true);
300+
expect(serverlessStepFunctions.stateMachineArn).to.be
301+
.equal('arn:aws:states:us-east-1:1234:stateMachine:stateMachine-dev');
302+
serverlessStepFunctions.provider.request.restore();
303+
})
304+
);
305+
});
183306
});
307+

0 commit comments

Comments
 (0)