@@ -5,46 +5,63 @@ import { registerContextProvider } from '../../lib/context-providers';
5
5
import { MockCloudExecutable } from '../util' ;
6
6
7
7
describe ( 'AWS::CDK::Metadata' , ( ) => {
8
- test ( 'is generated for relocatable stacks' , async ( ) => {
9
- const cx = await testCloudExecutable ( { env : `aws://${ cxapi . UNKNOWN_ACCOUNT } /${ cxapi . UNKNOWN_REGION } ` , versionReporting : true } ) ;
10
- const cxasm = await cx . synthesize ( ) ;
11
-
12
- const result = cxasm . stackById ( 'withouterrors' ) . firstStack ;
13
- const metadata = result . template . Resources && result . template . Resources . CDKMetadata ;
14
- expect ( metadata ) . toEqual ( {
15
- Type : 'AWS::CDK::Metadata' ,
16
- Properties : {
17
- // eslint-disable-next-line @typescript-eslint/no-require-imports
18
- Modules : `${ require ( '../../package.json' ) . name } =${ require ( '../../package.json' ) . version } ` ,
19
- } ,
20
- Condition : 'CDKMetadataAvailable' ,
8
+ test ( 'is generated for relocatable stacks from old frameworks' , async ( ) => {
9
+ await withFakeCurrentCxVersion ( '2.0.0' , async ( ) => {
10
+ const cx = await testCloudExecutable ( { env : `aws://${ cxapi . UNKNOWN_ACCOUNT } /${ cxapi . UNKNOWN_REGION } ` , versionReporting : true } ) ;
11
+ const cxasm = await cx . synthesize ( ) ;
12
+
13
+ const result = cxasm . stackById ( 'withouterrors' ) . firstStack ;
14
+ const metadata = result . template . Resources && result . template . Resources . CDKMetadata ;
15
+ expect ( metadata ) . toEqual ( {
16
+ Type : 'AWS::CDK::Metadata' ,
17
+ Properties : {
18
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
19
+ Modules : `${ require ( '../../package.json' ) . name } =${ require ( '../../package.json' ) . version } ` ,
20
+ } ,
21
+ Condition : 'CDKMetadataAvailable' ,
22
+ } ) ;
23
+
24
+ expect ( result . template . Conditions ?. CDKMetadataAvailable ) . toBeDefined ( ) ;
21
25
} ) ;
26
+ } ) ;
22
27
23
- expect ( result . template . Conditions ?. CDKMetadataAvailable ) . toBeDefined ( ) ;
28
+ test ( 'is generated for stacks in supported regions from old frameworks' , async ( ) => {
29
+ await withFakeCurrentCxVersion ( '2.0.0' , async ( ) => {
30
+ const cx = await testCloudExecutable ( { env : 'aws://012345678912/us-east-1' , versionReporting : true } ) ;
31
+ const cxasm = await cx . synthesize ( ) ;
32
+
33
+ const result = cxasm . stackById ( 'withouterrors' ) . firstStack ;
34
+ const metadata = result . template . Resources && result . template . Resources . CDKMetadata ;
35
+ expect ( metadata ) . toEqual ( {
36
+ Type : 'AWS::CDK::Metadata' ,
37
+ Properties : {
38
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
39
+ Modules : `${ require ( '../../package.json' ) . name } =${ require ( '../../package.json' ) . version } ` ,
40
+ } ,
41
+ } ) ;
42
+ } ) ;
24
43
} ) ;
25
44
26
- test ( 'is generated for stacks in supported regions' , async ( ) => {
27
- const cx = await testCloudExecutable ( { env : 'aws://012345678912/us-east-1' , versionReporting : true } ) ;
28
- const cxasm = await cx . synthesize ( ) ;
29
-
30
- const result = cxasm . stackById ( 'withouterrors' ) . firstStack ;
31
- const metadata = result . template . Resources && result . template . Resources . CDKMetadata ;
32
- expect ( metadata ) . toEqual ( {
33
- Type : 'AWS::CDK::Metadata' ,
34
- Properties : {
35
- // eslint-disable-next-line @typescript-eslint/no-require-imports
36
- Modules : `${ require ( '../../package.json' ) . name } =${ require ( '../../package.json' ) . version } ` ,
37
- } ,
45
+ test ( 'is not generated for stacks in unsupported regions from old frameworks' , async ( ) => {
46
+ await withFakeCurrentCxVersion ( '2.0.0' , async ( ) => {
47
+ const cx = await testCloudExecutable ( { env : 'aws://012345678912/bermuda-triangle-1337' , versionReporting : true } ) ;
48
+ const cxasm = await cx . synthesize ( ) ;
49
+
50
+ const result = cxasm . stackById ( 'withouterrors' ) . firstStack ;
51
+ const metadata = result . template . Resources && result . template . Resources . CDKMetadata ;
52
+ expect ( metadata ) . toBeUndefined ( ) ;
38
53
} ) ;
39
54
} ) ;
40
55
41
- test ( 'is not generated for stacks in unsupported regions' , async ( ) => {
42
- const cx = await testCloudExecutable ( { env : 'aws://012345678912/bermuda-triangle-1337' , versionReporting : true } ) ;
43
- const cxasm = await cx . synthesize ( ) ;
56
+ test ( 'is not generated for new frameworks' , async ( ) => {
57
+ await withFakeCurrentCxVersion ( '8.0.0' , async ( ) => {
58
+ const cx = await testCloudExecutable ( { env : 'aws://012345678912/us-east-1' , versionReporting : true } ) ;
59
+ const cxasm = await cx . synthesize ( ) ;
44
60
45
- const result = cxasm . stackById ( 'withouterrors' ) . firstStack ;
46
- const metadata = result . template . Resources && result . template . Resources . CDKMetadata ;
47
- expect ( metadata ) . toBeUndefined ( ) ;
61
+ const result = cxasm . stackById ( 'withouterrors' ) . firstStack ;
62
+ const metadata = result . template . Resources && result . template . Resources . CDKMetadata ;
63
+ expect ( metadata ) . toBeUndefined ( ) ;
64
+ } ) ;
48
65
} ) ;
49
66
} ) ;
50
67
@@ -117,3 +134,14 @@ async function testCloudExecutable({ env, versionReporting = true }: { env?: str
117
134
118
135
return cloudExec ;
119
136
}
137
+
138
+
139
+ async function withFakeCurrentCxVersion < A > ( version : string , block : ( ) => Promise < A > ) : Promise < A > {
140
+ const currentVersionFn = cxschema . Manifest . version ;
141
+ cxschema . Manifest . version = ( ) => version ;
142
+ try {
143
+ return await block ( ) ;
144
+ } finally {
145
+ cxschema . Manifest . version = currentVersionFn ;
146
+ }
147
+ }
0 commit comments