@@ -30,18 +30,19 @@ describe('Plugin', () => {
3030 StackId : "#{AWS::StackId}" ,
3131 StackName : "#{AWS::StackName}" ,
3232 URLSuffix : "#{AWS::URLSuffix}" ,
33+ Reference : "#{SomeResource}" ,
3334 }
3435 }
3536 } } ;
3637 serverlessPseudoParamsPlugin = new Plugin ( serverless ) ;
3738 serverlessPseudoParamsPlugin . serverless . service . service = 'foo-service' ;
3839 serverlessPseudoParamsPlugin . addParameters ( ) ;
3940 resultTemplate = serverlessPseudoParamsPlugin . serverless . service . provider . compiledCloudFormationTemplate ;
40- expect ( Object . keys ( resultTemplate . Resources . acmeResource . Properties ) . length ) . toEqual ( 8 ) ;
41+ expect ( Object . keys ( resultTemplate . Resources . acmeResource . Properties ) . length ) . toEqual ( 9 ) ;
4142 } ) ;
4243
4344 it ( 'replaces #{AWS::[VAR]} with the correct CF pseudo parameter' , ( ) => {
44- expect ( Object . keys ( resultTemplate . Resources . acmeResource . Properties ) . length ) . toEqual ( 8 ) ;
45+ expect ( Object . keys ( resultTemplate . Resources . acmeResource . Properties ) . length ) . toEqual ( 9 ) ;
4546 } ) ;
4647
4748 it ( 'replaces #{AWS::AccountId} with the ${AWS::AccountId} pseudo parameter' , ( ) => {
@@ -68,6 +69,59 @@ describe('Plugin', () => {
6869 it ( 'replaces #{AWS::URLSuffix} with the ${AWS::URLSuffix} pseudo parameter' , ( ) => {
6970 expect ( resultTemplate . Resources . acmeResource . Properties . URLSuffix ) . toEqual ( { 'Fn::Sub' : '${AWS::URLSuffix}' } ) ;
7071 } ) ;
72+ it ( 'does not replace #{SomeResource}' , ( ) => {
73+ expect ( resultTemplate . Resources . acmeResource . Properties . Reference ) . toEqual ( "#{SomeResource}" ) ;
74+ } ) ;
75+
76+ } ) ;
77+
78+ describe ( 'Using pseudo parameters with allowReferences' , ( ) => {
79+ let serverlessPseudoParamsPlugin ;
80+ let resultTemplate ;
81+
82+ beforeEach ( ( ) => {
83+ const serverless = {
84+ cli : {
85+ log : ( ) => { } ,
86+ consoleLog : ( ) => { }
87+ } ,
88+ service : {
89+ provider : {
90+ compiledCloudFormationTemplate : { } ,
91+ } ,
92+ custom : {
93+ pseudoParameters : {
94+ allowReferences : true
95+ }
96+ }
97+ } ,
98+ } ;
99+ serverless . service . provider . compiledCloudFormationTemplate = { Resources : {
100+ acmeResource : {
101+ Type : "AWS::Foo::Bar" ,
102+ Properties : {
103+ AccountId : "#{AWS::AccountId}" ,
104+ Reference : "#{SomeResource}" ,
105+ }
106+ }
107+ } } ;
108+ serverlessPseudoParamsPlugin = new Plugin ( serverless ) ;
109+ serverlessPseudoParamsPlugin . serverless . service . service = 'foo-service' ;
110+ serverlessPseudoParamsPlugin . addParameters ( ) ;
111+ resultTemplate = serverlessPseudoParamsPlugin . serverless . service . provider . compiledCloudFormationTemplate ;
112+ expect ( Object . keys ( resultTemplate . Resources . acmeResource . Properties ) . length ) . toEqual ( 2 ) ;
113+ } ) ;
114+
115+ it ( 'replaces #{AWS::[VAR]} with the correct CF pseudo parameter' , ( ) => {
116+ expect ( Object . keys ( resultTemplate . Resources . acmeResource . Properties ) . length ) . toEqual ( 2 ) ;
117+ } ) ;
118+
119+ it ( 'replaces #{AWS::AccountId} with the ${AWS::AccountId} pseudo parameter' , ( ) => {
120+ expect ( resultTemplate . Resources . acmeResource . Properties . AccountId ) . toEqual ( { 'Fn::Sub' : '${AWS::AccountId}' } ) ;
121+ } ) ;
122+ it ( 'replaces #{SomeResource} with ${SomeResource}' , ( ) => {
123+ expect ( resultTemplate . Resources . acmeResource . Properties . Reference ) . toEqual ( { 'Fn::Sub' : '${SomeResource}' } ) ;
124+ } ) ;
71125
72126 } ) ;
73127
0 commit comments