11'use strict' ;
22
33const expect = require ( 'chai' ) . expect ;
4+ const BbPromise = require ( 'bluebird' ) ;
5+ const sinon = require ( 'sinon' ) ;
46const Serverless = require ( 'serverless/lib/Serverless' ) ;
57const AwsProvider = require ( 'serverless/lib/plugins/aws/provider/awsProvider' ) ;
68const 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