11'use strict' ;
22
33const expect = require ( 'chai' ) . expect ;
4- const sinon = require ( 'sinon' ) ;
5- const path = require ( 'path' ) ;
6- const BbPromise = require ( 'bluebird' ) ;
74const Serverless = require ( 'serverless/lib/Serverless' ) ;
85const AwsProvider = require ( 'serverless/lib/plugins/aws/provider' ) ;
96const ServerlessStepFunctions = require ( './index' ) ;
@@ -13,7 +10,19 @@ describe('#yamlParse', () => {
1310 let serverlessStepFunctions ;
1411
1512 beforeEach ( ( ) => {
16- serverless = new Serverless ( ) ;
13+ serverless = new Serverless ( {
14+ configuration : {
15+ service : 'test' ,
16+ provider : 'aws' ,
17+ } ,
18+ serviceDir : __dirname ,
19+ configurationFilename : 'serverless.yml' ,
20+ isConfigurationResolved : true ,
21+ hasResovledCommandsExternally : true ,
22+ isTelemetryReportedExternally : true ,
23+ commands : [ 'info' ] ,
24+ options : { } ,
25+ } ) ;
1726 serverless . servicePath = true ;
1827 serverless . service . service = 'step-functions' ;
1928 serverless . configSchemaHandler = {
@@ -25,201 +34,36 @@ describe('#yamlParse', () => {
2534 } ) ;
2635
2736 describe ( '#yamlParse()' , ( ) => {
28- let yamlParserStub ;
29- let populateServiceStub ;
30- let yamlObjectParserStub ;
31- beforeEach ( ( ) => {
32- populateServiceStub = sinon . stub ( serverlessStepFunctions . serverless . variables ,
33- 'populateService' ) . returns ( BbPromise . resolve ( ) ) ;
34- yamlObjectParserStub = sinon . stub ( serverlessStepFunctions . serverless . variables ,
35- 'populateObject' ) . returns ( BbPromise . resolve ( {
36- stepFunctions : {
37- stateMachines : 'stepFunctions' ,
38- activities : 'my-activity' ,
39- } ,
40- } ) ) ;
41- yamlParserStub = sinon . stub ( serverlessStepFunctions . serverless . yamlParser , 'parse' )
42- . returns ( BbPromise . resolve ( {
43- stepFunctions : {
44- stateMachines : 'stepFunctions' ,
45- activities : 'my-activity' ,
46- } ,
47- } ) ) ;
48- serverlessStepFunctions . serverless . config . servicePath = 'servicePath' ;
49- } ) ;
50-
51- afterEach ( ( ) => {
52- serverlessStepFunctions . serverless . yamlParser . parse . restore ( ) ;
53- serverlessStepFunctions . serverless . variables . populateService . restore ( ) ;
54- serverlessStepFunctions . serverless . variables . populateObject . restore ( ) ;
55- } ) ;
56-
5737 it ( 'should default to dev when stage and provider are not defined' , ( ) => {
5838 serverlessStepFunctions . serverless . pluginManager . cliOptions . stage = null ;
5939 serverlessStepFunctions . serverless . service . provider = null ;
60- serverlessStepFunctions . yamlParse ( )
61- . then ( ( ) => {
62- expect ( serverless . pluginManager . cliOptions . stage ) . to . be . equal ( 'dev' ) ;
63- } ) ;
40+ serverlessStepFunctions . yamlParse ( ) ;
41+ expect ( serverless . pluginManager . cliOptions . stage ) . to . be . equal ( 'dev' ) ;
6442 } ) ;
6543
6644 it ( 'should default to us-east-1 when region and provider are not defined' , ( ) => {
6745 serverlessStepFunctions . serverless . pluginManager . cliOptions . region = null ;
6846 serverlessStepFunctions . serverless . service . provider = null ;
69- serverlessStepFunctions . yamlParse ( )
70- . then ( ( ) => {
71- expect ( serverless . pluginManager . cliOptions . region ) . to . be . equal ( 'us-east-1' ) ;
72- } ) ;
47+ serverlessStepFunctions . yamlParse ( ) ;
48+ expect ( serverless . pluginManager . cliOptions . region ) . to . be . equal ( 'us-east-1' ) ;
7349 } ) ;
7450
7551 it ( 'should not default to dev when stage is defined' , ( ) => {
7652 serverlessStepFunctions . serverless . pluginManager . cliOptions . stage = 'my-stage' ;
77- serverlessStepFunctions . yamlParse ( )
78- . then ( ( ) => {
79- expect ( serverless . pluginManager . cliOptions . stage ) . to . be . equal ( 'my-stage' ) ;
80- } ) ;
53+ serverlessStepFunctions . yamlParse ( ) ;
54+ expect ( serverless . pluginManager . cliOptions . stage ) . to . be . equal ( 'my-stage' ) ;
8155 } ) ;
8256
8357 it ( 'should not default to us-east-1 when region is defined' , ( ) => {
8458 serverlessStepFunctions . serverless . pluginManager . cliOptions . region = 'my-region' ;
85- serverlessStepFunctions . yamlParse ( )
86- . then ( ( ) => {
87- expect ( serverless . pluginManager . cliOptions . region ) . to . be . equal ( 'my-region' ) ;
88- } ) ;
89- } ) ;
90-
91- it ( 'should throw error if servicePath is not given' , ( ) => {
92- serverlessStepFunctions . serverless . config . servicePath = null ;
93- serverlessStepFunctions . yamlParse ( )
94- . then ( ( ) => {
95- expect ( yamlParserStub . calledOnce ) . to . be . equal ( false ) ;
96- expect ( yamlObjectParserStub . calledOnce ) . to . be . equal ( false ) ;
97- expect ( populateServiceStub . calledOnce ) . to . be . equal ( false ) ;
98- expect ( serverless . service . stepFunctions ) . to . be . undefined ; // eslint-disable-line
99- } ) ;
100- } ) ;
101-
102- it ( 'should create corresponding when stepfunctions param are given' , ( ) => {
103- serverlessStepFunctions . serverless . variables . populateObject . restore ( ) ;
104- yamlObjectParserStub = sinon . stub ( serverlessStepFunctions . serverless . variables ,
105- 'populateObject' ) . returns ( BbPromise . resolve ( {
106- stepFunctions : {
107- stateMachines : 'stepFunctions' ,
108- activities : 'my-activity' ,
109- } ,
110- } ) ) ;
111- serverlessStepFunctions . yamlParse ( )
112- . then ( ( ) => {
113- expect ( yamlParserStub . calledOnce ) . to . be . equal ( true ) ;
114- expect ( yamlObjectParserStub . calledOnce ) . to . be . equal ( true ) ;
115- expect ( populateServiceStub . calledOnce ) . to . be . equal ( true ) ;
116- expect ( serverless . service . stepFunctions . stateMachines ) . to . be . equal ( 'stepFunctions' ) ;
117- expect ( serverless . service . stepFunctions . activities ) . to . be . equal ( 'my-activity' ) ;
118- } ) ;
119- } ) ;
120-
121- it ( 'should be able to load from a js file' , ( ) => {
122- serverless . config . serverless . service . serviceFilename = 'serverless.js' ;
123- const requireFileStub = sinon . stub ( serverlessStepFunctions , 'loadFromRequiredFile' )
124- . returns ( BbPromise . resolve ( {
125- stepFunctions : {
126- stateMachines : 'stepFunctions' ,
127- activities : 'my-activity' ,
128- } ,
129- } ) ) ;
130- serverlessStepFunctions . yamlParse ( )
131- . then ( ( ) => {
132- expect ( requireFileStub . calledOnce ) . to . be . equal ( true ) ;
133- expect ( serverless . service . stepFunctions . stateMachines ) . to . be . equal ( 'stepFunctions' ) ;
134- expect ( serverless . service . stepFunctions . activities ) . to . be . equal ( 'my-activity' ) ;
135- } ) ;
136- } ) ;
137-
138- it ( 'should be able to load from a json file' , ( ) => {
139- serverless . config . serverless . service . serviceFilename = 'serverless.json' ;
140- const requireFileStub = sinon . stub ( serverlessStepFunctions , 'loadFromRequiredFile' )
141- . returns ( BbPromise . resolve ( {
142- stepFunctions : {
143- stateMachines : 'stepFunctions' ,
144- activities : 'my-activity' ,
145- } ,
146- } ) ) ;
147- serverlessStepFunctions . yamlParse ( )
148- . then ( ( ) => {
149- expect ( requireFileStub . calledOnce ) . to . be . equal ( true ) ;
150- expect ( serverless . service . stepFunctions . stateMachines ) . to . be . equal ( 'stepFunctions' ) ;
151- expect ( serverless . service . stepFunctions . activities ) . to . be . equal ( 'my-activity' ) ;
152- } ) ;
153- } ) ;
154-
155- it ( 'should be able to load from a ts file' , ( ) => {
156- serverless . config . serverless . service . serviceFilename = 'serverless.ts' ;
157- const requireFileStub = sinon . stub ( serverlessStepFunctions , 'loadFromRequiredFile' )
158- . returns ( BbPromise . resolve ( {
159- stepFunctions : {
160- stateMachines : 'stepFunctions' ,
161- activities : 'my-activity' ,
162- } ,
163- } ) ) ;
164- serverlessStepFunctions . yamlParse ( )
165- . then ( ( ) => {
166- expect ( requireFileStub . calledOnce ) . to . be . equal ( true ) ;
167- expect ( serverless . service . stepFunctions . stateMachines ) . to . be . equal ( 'stepFunctions' ) ;
168- expect ( serverless . service . stepFunctions . activities ) . to . be . equal ( 'my-activity' ) ;
169- } ) ;
59+ serverlessStepFunctions . yamlParse ( ) ;
60+ expect ( serverless . pluginManager . cliOptions . region ) . to . be . equal ( 'my-region' ) ;
17061 } ) ;
17162
17263 it ( 'should create empty object when stepfunctions param are not given' , ( ) => {
173- serverlessStepFunctions . serverless . yamlParser . parse . restore ( ) ;
174- serverlessStepFunctions . serverless . variables . populateObject . restore ( ) ;
175- yamlParserStub = sinon . stub ( serverlessStepFunctions . serverless . yamlParser , 'parse' )
176- . returns ( BbPromise . resolve ( {
177- stepFunctions : { } ,
178- } ) ) ;
179- yamlObjectParserStub = sinon . stub ( serverless . variables ,
180- 'populateObject' ) . returns ( BbPromise . resolve ( {
181- stepFunctions : { } ,
182- } ) ) ;
183- serverlessStepFunctions . yamlParse ( )
184- . then ( ( ) => {
185- expect ( yamlParserStub . calledOnce ) . to . be . equal ( true ) ;
186- expect ( yamlObjectParserStub . calledOnce ) . to . be . equal ( true ) ;
187- expect ( populateServiceStub . calledOnce ) . to . be . equal ( true ) ;
188- expect ( serverless . service . stepFunctions . stateMachines ) . to . be . deep . equal ( { } ) ;
189- expect ( serverless . service . stepFunctions . activities ) . to . be . deep . equal ( [ ] ) ;
190- } ) ;
191- } ) ;
192-
193- it ( 'should default to serverless.yml if serviceFileName (--config option) is not passed' , ( ) => {
194- const servicePath = serverlessStepFunctions . serverless . config . servicePath ;
195- serverlessStepFunctions . serverless . config . serverless . service . serviceFilename = undefined ;
196-
197- serverlessStepFunctions . yamlParse ( )
198- . then ( ( ) => {
199- expect ( yamlParserStub . calledWith ( `${ servicePath } /serverless.yml` ) ) . to . be . equal ( true ) ;
200- } ) ;
201- } ) ;
202-
203- it ( 'should read serviceFileName if passed as --config option' , ( ) => {
204- const servicePath = serverlessStepFunctions . serverless . config . servicePath ;
205- const fileName = 'other_config.yml' ;
206- serverlessStepFunctions . serverless . config . serverless . service . serviceFilename = fileName ;
207-
208- serverlessStepFunctions . yamlParse ( )
209- . then ( ( ) => {
210- expect ( yamlParserStub . calledWith ( `${ servicePath } /${ fileName } ` ) ) . to . be . equal ( true ) ;
211- } ) ;
212- } ) ;
213-
214- it ( 'should read relative serviceFileName path if passed as --config option' , ( ) => {
215- const servicePath = serverlessStepFunctions . serverless . config . servicePath ;
216- const relativeFilename = './some_folder/other_config.yml' ;
217- serverlessStepFunctions . options . config = relativeFilename ;
218- const serviceFilePath = path . normalize ( `${ servicePath } /${ relativeFilename } ` ) ;
219- serverlessStepFunctions . yamlParse ( )
220- . then ( ( ) => {
221- expect ( yamlParserStub . calledWith ( serviceFilePath ) ) . to . be . equal ( true ) ;
222- } ) ;
64+ serverlessStepFunctions . yamlParse ( ) ;
65+ expect ( serverless . service . stepFunctions . stateMachines ) . to . be . deep . equal ( { } ) ;
66+ expect ( serverless . service . stepFunctions . activities ) . to . be . deep . equal ( [ ] ) ;
22367 } ) ;
22468 } ) ;
22569
0 commit comments