@@ -99,7 +99,7 @@ describe('#compileIamRole', () => {
9999 const helloLambda = 'arn:aws:lambda:123:*:function:hello' ;
100100 const worldLambda = 'arn:aws:lambda:*:*:function:world' ;
101101 const fooLambda = 'arn:aws:lambda:us-west-2::function:foo_' ;
102- const barLambda = 'arn:aws:lambda:# {AWS::Region}:# {AWS::AccountId}:function:bar' ;
102+ const barLambda = 'arn:aws:lambda:$ {AWS::Region}:$ {AWS::AccountId}:function:bar' ;
103103
104104 const genStateMachine = ( name , lambda1 , lambda2 ) => ( {
105105 name,
@@ -131,8 +131,21 @@ describe('#compileIamRole', () => {
131131 const policy = serverlessStepFunctions . serverless . service
132132 . provider . compiledCloudFormationTemplate . Resources . IamRoleStateMachineExecution
133133 . Properties . Policies [ 0 ] ;
134- expect ( policy . PolicyDocument . Statement [ 0 ] . Resource )
135- . to . be . deep . equal ( [ helloLambda , worldLambda , fooLambda , barLambda ] ) ;
134+ expect ( policy . PolicyDocument . Statement [ 0 ] . Action ) . to . deep . equal ( [ 'lambda:InvokeFunction' ] ) ;
135+
136+ const resources = policy . PolicyDocument . Statement [ 0 ] . Resource ;
137+ expect ( resources ) . to . have . lengthOf ( 8 ) ;
138+
139+ expect ( resources ) . to . include . members ( [ helloLambda , worldLambda , fooLambda , barLambda ] ) ;
140+
141+ const versionResources = resources . filter ( x => x [ 'Fn::Sub' ] ) ;
142+ versionResources . forEach ( ( x ) => {
143+ const template = x [ 'Fn::Sub' ] [ 0 ] ;
144+ expect ( template ) . to . equal ( '${functionArn}:*' ) ;
145+ } ) ;
146+
147+ const versionedArns = versionResources . map ( x => x [ 'Fn::Sub' ] [ 1 ] . functionArn ) ;
148+ expect ( versionedArns ) . to . deep . equal ( [ helloLambda , worldLambda , fooLambda , barLambda ] ) ;
136149 } ) ;
137150
138151 it ( 'should give sns:Publish permission for only SNS topics referenced by state machine' , ( ) => {
@@ -786,7 +799,7 @@ describe('#compileIamRole', () => {
786799
787800 const lambdaPermissions = statements . filter ( s => _ . isEqual ( s . Action , [ 'lambda:InvokeFunction' ] ) ) ;
788801 expect ( lambdaPermissions ) . to . have . lengthOf ( 1 ) ;
789- expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . eq ( [ lambda1 , lambda2 ] ) ;
802+ expect ( lambdaPermissions [ 0 ] . Resource ) . to . include . members ( [ lambda1 , lambda2 ] ) ;
790803
791804 const snsPermissions = statements . filter ( s => _ . isEqual ( s . Action , [ 'sns:Publish' ] ) ) ;
792805 expect ( snsPermissions ) . to . have . lengthOf ( 1 ) ;
@@ -969,7 +982,7 @@ describe('#compileIamRole', () => {
969982 const statements = policy . PolicyDocument . Statement ;
970983
971984 const lambdaPermissions = statements . find ( x => x . Action [ 0 ] === 'lambda:InvokeFunction' ) ;
972- expect ( lambdaPermissions . Resource ) . to . be . deep . equal ( [
985+ expect ( lambdaPermissions . Resource ) . to . deep . include . members ( [
973986 { Ref : 'MyFunction' } , { Ref : 'MyFunction2' } ] ) ;
974987
975988 const snsPermissions = statements . find ( x => x . Action [ 0 ] === 'sns:Publish' ) ;
@@ -1130,7 +1143,7 @@ describe('#compileIamRole', () => {
11301143 'arn:aws:lambda:us-west-2:1234567890:function:c' ,
11311144 { 'Fn::Sub' : 'arn:aws:lambda:${AWS::Region}:1234567890:function:d' } ,
11321145 ] ;
1133- expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . eq ( lambdaArns ) ;
1146+ expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . include . members ( lambdaArns ) ;
11341147 } ) ;
11351148
11361149 it ( 'should support lambda::invoke resource type' , ( ) => {
@@ -1183,7 +1196,7 @@ describe('#compileIamRole', () => {
11831196 'arn:aws:lambda:us-west-2:1234567890:function:c' ,
11841197 { 'Fn::Sub' : 'arn:aws:lambda:${AWS::Region}:1234567890:function:d' } ,
11851198 ] ;
1186- expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . eq ( lambdaArns ) ;
1199+ expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . include . members ( lambdaArns ) ;
11871200 } ) ;
11881201
11891202 it ( 'should support intrinsic functions for lambda::invoke resource type' , ( ) => {
@@ -1238,8 +1251,8 @@ describe('#compileIamRole', () => {
12381251 const lambdaArns = [
12391252 {
12401253 'Fn::Sub' : [
1241- 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${FunctionName }' ,
1242- { FunctionName : lambda1 } ,
1254+ 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${functionArn }' ,
1255+ { functionArn : lambda1 } ,
12431256 ] ,
12441257 } ,
12451258 {
@@ -1257,7 +1270,7 @@ describe('#compileIamRole', () => {
12571270 ] ,
12581271 } ,
12591272 ] ;
1260- expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . eq ( lambdaArns ) ;
1273+ expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . include . members ( lambdaArns ) ;
12611274 } ) ;
12621275
12631276 it ( 'should support local function names' , ( ) => {
@@ -1305,7 +1318,7 @@ describe('#compileIamRole', () => {
13051318 ] ,
13061319 } ,
13071320 ] ;
1308- expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . eq ( lambdaArns ) ;
1321+ expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . include . members ( lambdaArns ) ;
13091322 } ) ;
13101323
13111324 it ( 'should support local function names for lambda::invoke resource type' , ( ) => {
@@ -1356,8 +1369,8 @@ describe('#compileIamRole', () => {
13561369 const lambdaArns = [
13571370 {
13581371 'Fn::Sub' : [
1359- 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${FunctionName }' ,
1360- { FunctionName : { Ref : 'HelloDashworldLambdaFunction' } } ,
1372+ 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${functionArn }' ,
1373+ { functionArn : { Ref : 'HelloDashworldLambdaFunction' } } ,
13611374 ] ,
13621375 } ,
13631376 {
@@ -1367,6 +1380,6 @@ describe('#compileIamRole', () => {
13671380 ] ,
13681381 } ,
13691382 ] ;
1370- expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . eq ( lambdaArns ) ;
1383+ expect ( lambdaPermissions [ 0 ] . Resource ) . to . deep . include . members ( lambdaArns ) ;
13711384 } ) ;
13721385} ) ;
0 commit comments