From cf3df0e51276f3eea337e64802cabb198c2fa8af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbyn=C4=9Bk=20Vymazal?= Date: Thu, 25 Jul 2019 17:05:54 +0200 Subject: [PATCH] Add regression tests --- .../package/compile/events/sns/index.test.js | 70 ++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/lib/plugins/aws/package/compile/events/sns/index.test.js b/lib/plugins/aws/package/compile/events/sns/index.test.js index 18b72af71..6f065e26d 100644 --- a/lib/plugins/aws/package/compile/events/sns/index.test.js +++ b/lib/plugins/aws/package/compile/events/sns/index.test.js @@ -327,7 +327,7 @@ describe('AwsCompileSNSEvents', () => { }).to.throw(Error); }); - it('should create SNS topic when arn and topicName are given as object properties', () => { + it('should create SNS topic when both arn and topicName are given as object properties', () => { awsCompileSNSEvents.serverless.service.functions = { first: { events: [ @@ -358,6 +358,74 @@ describe('AwsCompileSNSEvents', () => { ).to.equal('AWS::Lambda::Permission'); }); + it('should create two SNS topic subsriptions for ARNs with the same topic name in two regions when different topicName parameters are specified', () => { + awsCompileSNSEvents.serverless.service.functions = { + first: { + events: [ + { + sns: { + topicName: 'first', + arn: 'arn:aws:sns:region-1:accountid:bar', + }, + }, + { + sns: { + topicName: 'second', + arn: 'arn:aws:sns:region-2:accountid:bar', + }, + } + ], + }, + }; + + awsCompileSNSEvents.compileSNSEvents(); + + expect( + Object.keys( + awsCompileSNSEvents.serverless.service.provider.compiledCloudFormationTemplate.Resources + ) + ).to.have.length(4); + expect( + awsCompileSNSEvents.serverless.service.provider.compiledCloudFormationTemplate.Resources + .FirstSnsSubscriptionFirst.Type + ).to.equal('AWS::SNS::Subscription'); + expect( + awsCompileSNSEvents.serverless.service.provider.compiledCloudFormationTemplate.Resources + .FirstSnsSubscriptionSecond.Type + ).to.equal('AWS::SNS::Subscription'); + }); + + it('should override SNS topic subsription CF resource name when arn and topicName are given as object properties', () => { + awsCompileSNSEvents.serverless.service.functions = { + first: { + events: [ + { + sns: { + topicName: 'foo', + arn: 'arn:aws:sns:region:accountid:bar', + }, + }, + ], + }, + }; + + awsCompileSNSEvents.compileSNSEvents(); + + expect( + Object.keys( + awsCompileSNSEvents.serverless.service.provider.compiledCloudFormationTemplate.Resources + ) + ).to.have.length(2); + expect( + awsCompileSNSEvents.serverless.service.provider.compiledCloudFormationTemplate.Resources + .FirstSnsSubscriptionFoo.Type + ).to.equal('AWS::SNS::Subscription'); + expect( + awsCompileSNSEvents.serverless.service.provider.compiledCloudFormationTemplate.Resources + .FirstLambdaPermissionFooSNS.Type + ).to.equal('AWS::Lambda::Permission'); + }); + // eslint-disable-next-line max-len it('should create SNS topic when arn object and topicName are given as object properties', () => { awsCompileSNSEvents.serverless.service.functions = {