@fjall/components-infrastructure 0.75.3 → 0.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/dist/lib/app.d.ts +32 -8
  2. package/dist/lib/app.js +58 -11
  3. package/dist/lib/config/aws/backupGlobalSettings.d.ts +1 -1
  4. package/dist/lib/config/aws/backupGlobalSettings.js +1 -1
  5. package/dist/lib/config/aws/cloudTrail.d.ts +1 -1
  6. package/dist/lib/config/aws/cloudTrail.js +2 -2
  7. package/dist/lib/config/aws/disasterRecovery.js +1 -1
  8. package/dist/lib/config/aws/ecrDefaultImage.d.ts +1 -1
  9. package/dist/lib/config/aws/ecrDefaultImage.js +2 -2
  10. package/dist/lib/config/aws/identityCenter.d.ts +3 -3
  11. package/dist/lib/config/aws/identityCenter.js +1 -1
  12. package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +2 -2
  13. package/dist/lib/config/aws/identityCenterGroupMembership.js +1 -1
  14. package/dist/lib/config/aws/ipam.js +2 -4
  15. package/dist/lib/config/aws/organisation.d.ts +3 -3
  16. package/dist/lib/config/aws/organisation.js +1 -1
  17. package/dist/lib/config/aws/organisationsAccess.d.ts +1 -1
  18. package/dist/lib/config/aws/organisationsAccess.js +1 -1
  19. package/dist/lib/config/monitoring.d.ts +18 -0
  20. package/dist/lib/config/monitoring.js +22 -0
  21. package/dist/lib/patterns/aws/buildkite.d.ts +3 -3
  22. package/dist/lib/patterns/aws/buildkite.js +1 -1
  23. package/dist/lib/patterns/aws/compute.d.ts +8 -8
  24. package/dist/lib/patterns/aws/compute.js +5 -5
  25. package/dist/lib/patterns/aws/database.d.ts +191 -24
  26. package/dist/lib/patterns/aws/database.js +201 -42
  27. package/dist/lib/patterns/aws/fivetranProxy.d.ts +5 -5
  28. package/dist/lib/patterns/aws/fivetranProxy.js +1 -1
  29. package/dist/lib/patterns/aws/hostedZone.d.ts +2 -2
  30. package/dist/lib/patterns/aws/hostedZone.js +1 -1
  31. package/dist/lib/patterns/aws/managedAccount.d.ts +2 -2
  32. package/dist/lib/patterns/aws/managedAccount.js +1 -1
  33. package/dist/lib/patterns/aws/managedIdentityCenter.js +1 -1
  34. package/dist/lib/patterns/aws/managedOrganisation.d.ts +3 -3
  35. package/dist/lib/patterns/aws/managedOrganisation.js +1 -1
  36. package/dist/lib/patterns/aws/managedPlatform.d.ts +2 -2
  37. package/dist/lib/patterns/aws/managedPlatform.js +2 -4
  38. package/dist/lib/patterns/aws/storage.d.ts +4 -55
  39. package/dist/lib/patterns/aws/storage.js +3 -103
  40. package/dist/lib/resources/aws/backup/backupPlan.d.ts +2 -2
  41. package/dist/lib/resources/aws/backup/backupPlan.js +1 -1
  42. package/dist/lib/resources/aws/backup/backupVault.d.ts +2 -2
  43. package/dist/lib/resources/aws/backup/backupVault.js +1 -1
  44. package/dist/lib/resources/aws/base/awsStack.js +1 -1
  45. package/dist/lib/resources/aws/compute/ec2.d.ts +3 -3
  46. package/dist/lib/resources/aws/compute/ec2.js +1 -1
  47. package/dist/lib/resources/aws/compute/ecs.d.ts +9 -9
  48. package/dist/lib/resources/aws/compute/ecs.js +63 -19
  49. package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +6 -7
  50. package/dist/lib/resources/aws/compute/ecsFreeTier.js +3 -7
  51. package/dist/lib/resources/aws/compute/ecsSpot.d.ts +6 -7
  52. package/dist/lib/resources/aws/compute/ecsSpot.js +3 -11
  53. package/dist/lib/resources/aws/compute/lambda.d.ts +4 -4
  54. package/dist/lib/resources/aws/compute/lambda.js +1 -1
  55. package/dist/lib/resources/aws/database/database.d.ts +2 -2
  56. package/dist/lib/resources/aws/database/database.js +1 -1
  57. package/dist/lib/resources/aws/database/databaseInstance.d.ts +2 -2
  58. package/dist/lib/resources/aws/database/databaseInstance.js +2 -2
  59. package/dist/lib/resources/aws/database/index.d.ts +0 -1
  60. package/dist/lib/resources/aws/database/index.js +1 -2
  61. package/dist/lib/resources/aws/database/rdsAurora.d.ts +22 -6
  62. package/dist/lib/resources/aws/database/rdsAurora.js +212 -84
  63. package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +39 -6
  64. package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +34 -5
  65. package/dist/lib/resources/aws/database/rdsInstance.d.ts +16 -10
  66. package/dist/lib/resources/aws/database/rdsInstance.js +126 -63
  67. package/dist/lib/resources/aws/iam/identityCenter/assignment.d.ts +1 -1
  68. package/dist/lib/resources/aws/iam/identityCenter/assignment.js +1 -1
  69. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +1 -1
  70. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -1
  71. package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -1
  72. package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -1
  73. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +2 -2
  74. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -1
  75. package/dist/lib/resources/aws/iam/instanceProfile.d.ts +1 -1
  76. package/dist/lib/resources/aws/iam/instanceProfile.js +1 -1
  77. package/dist/lib/resources/aws/iam/managedPolicy.d.ts +1 -1
  78. package/dist/lib/resources/aws/iam/managedPolicy.js +1 -1
  79. package/dist/lib/resources/aws/iam/policy.d.ts +1 -1
  80. package/dist/lib/resources/aws/iam/policy.js +1 -1
  81. package/dist/lib/resources/aws/iam/role.d.ts +1 -1
  82. package/dist/lib/resources/aws/iam/role.js +1 -1
  83. package/dist/lib/resources/aws/iam/securityGroup.d.ts +1 -1
  84. package/dist/lib/resources/aws/iam/securityGroup.js +1 -1
  85. package/dist/lib/resources/aws/index.d.ts +1 -0
  86. package/dist/lib/resources/aws/index.js +2 -1
  87. package/dist/lib/resources/aws/logging/logGroup.d.ts +2 -2
  88. package/dist/lib/resources/aws/logging/logGroup.js +1 -1
  89. package/dist/lib/resources/aws/monitoring/index.d.ts +1 -0
  90. package/dist/lib/resources/aws/monitoring/index.js +18 -0
  91. package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +28 -0
  92. package/dist/lib/resources/aws/monitoring/monitoringRole.js +69 -0
  93. package/dist/lib/resources/aws/networking/ipam.d.ts +1 -1
  94. package/dist/lib/resources/aws/networking/ipam.js +1 -1
  95. package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
  96. package/dist/lib/resources/aws/networking/ipamPool.js +1 -2
  97. package/dist/lib/resources/aws/networking/vpc.d.ts +3 -3
  98. package/dist/lib/resources/aws/networking/vpc.js +1 -1
  99. package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +2 -2
  100. package/dist/lib/resources/aws/networking/vpcEndpoint.js +1 -1
  101. package/dist/lib/resources/aws/secrets/alias.d.ts +1 -1
  102. package/dist/lib/resources/aws/secrets/alias.js +1 -1
  103. package/dist/lib/resources/aws/secrets/parameter.d.ts +1 -1
  104. package/dist/lib/resources/aws/secrets/parameter.js +1 -1
  105. package/dist/lib/resources/aws/secrets/secret.d.ts +8 -4
  106. package/dist/lib/resources/aws/secrets/secret.js +19 -2
  107. package/dist/lib/resources/aws/storage/ecr.d.ts +4 -4
  108. package/dist/lib/resources/aws/storage/ecr.js +1 -1
  109. package/dist/lib/resources/aws/storage/s3.d.ts +2 -2
  110. package/dist/lib/resources/aws/storage/s3.js +1 -1
  111. package/dist/lib/resources/aws/utilities/awsCustomResource.d.ts +1 -1
  112. package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -1
  113. package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +1 -1
  114. package/dist/lib/resources/aws/utilities/cfnOutput.js +1 -1
  115. package/dist/lib/resources/aws/utilities/codeBuild.d.ts +1 -1
  116. package/dist/lib/resources/aws/utilities/codeBuild.js +1 -1
  117. package/dist/lib/resources/aws/utilities/customResource.d.ts +3 -3
  118. package/dist/lib/resources/aws/utilities/customResource.js +1 -1
  119. package/dist/lib/resources/aws/utilities/customResourceProvider.d.ts +2 -2
  120. package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -1
  121. package/dist/lib/resources/aws/utilities/resourceShare.d.ts +2 -2
  122. package/dist/lib/resources/aws/utilities/resourceShare.js +1 -1
  123. package/dist/lib/utils/getAsync.d.ts +1 -1
  124. package/dist/lib/utils/getAsync.js +1 -1
  125. package/dist/lib/utils/getConfig.d.ts +2 -2
  126. package/dist/lib/utils/getConfig.js +3 -3
  127. package/dist/lib/utils/standardTagsAspect.d.ts +2 -2
  128. package/dist/lib/utils/standardTagsAspect.js +6 -5
  129. package/dist/lib/utils/tagResource.d.ts +1 -1
  130. package/dist/lib/utils/tagResource.js +1 -1
  131. package/package.json +3 -3
  132. package/dist/lib/__tests__/patterns/__snapshots__/compute.test.js.snap +0 -433
  133. package/dist/lib/__tests__/patterns/compute.test.d.ts +0 -1
  134. package/dist/lib/__tests__/patterns/compute.test.js +0 -137
  135. package/dist/lib/__tests__/simple.test.d.ts +0 -0
  136. package/dist/lib/__tests__/simple.test.js +0 -12
  137. package/dist/lib/patterns/aws/basicApp.d.ts +0 -0
  138. package/dist/lib/patterns/aws/basicApp.js +0 -150
  139. package/dist/lib/patterns/aws/freeTierApp.d.ts +0 -44
  140. package/dist/lib/patterns/aws/freeTierApp.js +0 -83
  141. package/dist/lib/patterns/aws/spotInstanceApp.d.ts +0 -45
  142. package/dist/lib/patterns/aws/spotInstanceApp.js +0 -85
  143. package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +0 -15
  144. package/dist/lib/resources/aws/database/databaseFreeTier.js +0 -29
  145. package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +0 -37
  146. package/dist/lib/resources/aws/database/rdsFreeTier.js +0 -84
  147. package/dist/lib/resources/aws/organisations/account.d.ts +0 -37
  148. package/dist/lib/resources/aws/organisations/account.js +0 -220
  149. package/dist/lib/resources/aws/organisations/delegatedAdministrator.d.ts +0 -14
  150. package/dist/lib/resources/aws/organisations/delegatedAdministrator.js +0 -61
  151. package/dist/lib/resources/aws/organisations/index.d.ts +0 -8
  152. package/dist/lib/resources/aws/organisations/index.js +0 -22
  153. package/dist/lib/resources/aws/organisations/interfaces.d.ts +0 -105
  154. package/dist/lib/resources/aws/organisations/interfaces.js +0 -3
  155. package/dist/lib/resources/aws/organisations/organisation.d.ts +0 -47
  156. package/dist/lib/resources/aws/organisations/organisation.js +0 -263
  157. package/dist/lib/resources/aws/organisations/organisationalUnit.d.ts +0 -28
  158. package/dist/lib/resources/aws/organisations/organisationalUnit.js +0 -170
  159. package/dist/lib/resources/aws/organisations/policy.d.ts +0 -17
  160. package/dist/lib/resources/aws/organisations/policy.js +0 -93
  161. package/dist/lib/resources/aws/organisations/trustedServiceAccess.d.ts +0 -13
  162. package/dist/lib/resources/aws/organisations/trustedServiceAccess.js +0 -58
  163. package/dist/lib/resources/aws/organisations/types.d.ts +0 -165
  164. package/dist/lib/resources/aws/organisations/types.js +0 -36
  165. package/dist/lib/utils/directTagging.d.ts +0 -31
  166. package/dist/lib/utils/directTagging.js +0 -86
  167. package/dist/lib/utils/fjallConstruct.d.ts +0 -8
  168. package/dist/lib/utils/fjallConstruct.js +0 -18
  169. package/dist/lib/utils/fjallStackSynthesizer.d.ts +0 -9
  170. package/dist/lib/utils/fjallStackSynthesizer.js +0 -22
  171. package/dist/lib/utils/tagContext.d.ts +0 -28
  172. package/dist/lib/utils/tagContext.js +0 -53
  173. package/dist/lib/utils/tagSynthesizer.d.ts +0 -13
  174. package/dist/lib/utils/tagSynthesizer.js +0 -55
@@ -1,433 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`Infrastructure Testing Basic Infrastructure should match network stack snapshot: network-stack.json 1`] = `
4
- {
5
- "Parameters": {
6
- "BootstrapVersion": {
7
- "Default": "/cdk-bootstrap/hnb659fds/version",
8
- "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]",
9
- "Type": "AWS::SSM::Parameter::Value<String>",
10
- },
11
- },
12
- "Resources": {
13
- "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER": {
14
- "Properties": {
15
- "CidrBlock": "10.0.0.0/16",
16
- "EnableDnsHostnames": true,
17
- "EnableDnsSupport": true,
18
- "InstanceTenancy": "default",
19
- "Tags": [
20
- {
21
- "Key": "Name",
22
- "Value": "vpc-SnapshotTestDefaultVpc",
23
- },
24
- ],
25
- },
26
- "Type": "AWS::EC2::VPC",
27
- },
28
- "vpcSnapshotTestDefaultVpcIGWCONSTRUCT_ID_PLACEHOLDER": {
29
- "Properties": {
30
- "Tags": [
31
- {
32
- "Key": "Name",
33
- "Value": "vpc-SnapshotTestDefaultVpc",
34
- },
35
- ],
36
- },
37
- "Type": "AWS::EC2::InternetGateway",
38
- },
39
- "vpcSnapshotTestDefaultVpcPrivateSubnet1DefaultRouteCONSTRUCT_ID_PLACEHOLDER": {
40
- "Properties": {
41
- "DestinationCidrBlock": "0.0.0.0/0",
42
- "NatGatewayId": {
43
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet1NATGatewayCONSTRUCT_ID_PLACEHOLDER",
44
- },
45
- "RouteTableId": {
46
- "Ref": "vpcSnapshotTestDefaultVpcPrivateSubnet1RouteTableCONSTRUCT_ID_PLACEHOLDER",
47
- },
48
- },
49
- "Type": "AWS::EC2::Route",
50
- },
51
- "vpcSnapshotTestDefaultVpcPrivateSubnet1RouteTableAssociationCONSTRUCT_ID_PLACEHOLDER": {
52
- "Properties": {
53
- "RouteTableId": {
54
- "Ref": "vpcSnapshotTestDefaultVpcPrivateSubnet1RouteTableCONSTRUCT_ID_PLACEHOLDER",
55
- },
56
- "SubnetId": {
57
- "Ref": "vpcSnapshotTestDefaultVpcPrivateSubnet1SubnetCONSTRUCT_ID_PLACEHOLDER",
58
- },
59
- },
60
- "Type": "AWS::EC2::SubnetRouteTableAssociation",
61
- },
62
- "vpcSnapshotTestDefaultVpcPrivateSubnet1RouteTableCONSTRUCT_ID_PLACEHOLDER": {
63
- "Properties": {
64
- "Tags": [
65
- {
66
- "Key": "Name",
67
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PrivateSubnet1",
68
- },
69
- ],
70
- "VpcId": {
71
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
72
- },
73
- },
74
- "Type": "AWS::EC2::RouteTable",
75
- },
76
- "vpcSnapshotTestDefaultVpcPrivateSubnet1SubnetCONSTRUCT_ID_PLACEHOLDER": {
77
- "Properties": {
78
- "AvailabilityZone": {
79
- "Fn::Select": [
80
- 0,
81
- {
82
- "Fn::GetAZs": "",
83
- },
84
- ],
85
- },
86
- "CidrBlock": "10.0.128.0/18",
87
- "MapPublicIpOnLaunch": false,
88
- "Tags": [
89
- {
90
- "Key": "aws-cdk:subnet-name",
91
- "Value": "Private",
92
- },
93
- {
94
- "Key": "aws-cdk:subnet-type",
95
- "Value": "Private",
96
- },
97
- {
98
- "Key": "Name",
99
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PrivateSubnet1",
100
- },
101
- ],
102
- "VpcId": {
103
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
104
- },
105
- },
106
- "Type": "AWS::EC2::Subnet",
107
- },
108
- "vpcSnapshotTestDefaultVpcPrivateSubnet2DefaultRouteCONSTRUCT_ID_PLACEHOLDER": {
109
- "Properties": {
110
- "DestinationCidrBlock": "0.0.0.0/0",
111
- "NatGatewayId": {
112
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet2NATGatewayCONSTRUCT_ID_PLACEHOLDER",
113
- },
114
- "RouteTableId": {
115
- "Ref": "vpcSnapshotTestDefaultVpcPrivateSubnet2RouteTableCONSTRUCT_ID_PLACEHOLDER",
116
- },
117
- },
118
- "Type": "AWS::EC2::Route",
119
- },
120
- "vpcSnapshotTestDefaultVpcPrivateSubnet2RouteTableAssociationCONSTRUCT_ID_PLACEHOLDER": {
121
- "Properties": {
122
- "RouteTableId": {
123
- "Ref": "vpcSnapshotTestDefaultVpcPrivateSubnet2RouteTableCONSTRUCT_ID_PLACEHOLDER",
124
- },
125
- "SubnetId": {
126
- "Ref": "vpcSnapshotTestDefaultVpcPrivateSubnet2SubnetCONSTRUCT_ID_PLACEHOLDER",
127
- },
128
- },
129
- "Type": "AWS::EC2::SubnetRouteTableAssociation",
130
- },
131
- "vpcSnapshotTestDefaultVpcPrivateSubnet2RouteTableCONSTRUCT_ID_PLACEHOLDER": {
132
- "Properties": {
133
- "Tags": [
134
- {
135
- "Key": "Name",
136
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PrivateSubnet2",
137
- },
138
- ],
139
- "VpcId": {
140
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
141
- },
142
- },
143
- "Type": "AWS::EC2::RouteTable",
144
- },
145
- "vpcSnapshotTestDefaultVpcPrivateSubnet2SubnetCONSTRUCT_ID_PLACEHOLDER": {
146
- "Properties": {
147
- "AvailabilityZone": {
148
- "Fn::Select": [
149
- 1,
150
- {
151
- "Fn::GetAZs": "",
152
- },
153
- ],
154
- },
155
- "CidrBlock": "10.0.192.0/18",
156
- "MapPublicIpOnLaunch": false,
157
- "Tags": [
158
- {
159
- "Key": "aws-cdk:subnet-name",
160
- "Value": "Private",
161
- },
162
- {
163
- "Key": "aws-cdk:subnet-type",
164
- "Value": "Private",
165
- },
166
- {
167
- "Key": "Name",
168
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PrivateSubnet2",
169
- },
170
- ],
171
- "VpcId": {
172
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
173
- },
174
- },
175
- "Type": "AWS::EC2::Subnet",
176
- },
177
- "vpcSnapshotTestDefaultVpcPublicSubnet1DefaultRouteCONSTRUCT_ID_PLACEHOLDER": {
178
- "DependsOn": [
179
- "vpcSnapshotTestDefaultVpcVPCGWCONSTRUCT_ID_PLACEHOLDER",
180
- ],
181
- "Properties": {
182
- "DestinationCidrBlock": "0.0.0.0/0",
183
- "GatewayId": {
184
- "Ref": "vpcSnapshotTestDefaultVpcIGWCONSTRUCT_ID_PLACEHOLDER",
185
- },
186
- "RouteTableId": {
187
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet1RouteTableCONSTRUCT_ID_PLACEHOLDER",
188
- },
189
- },
190
- "Type": "AWS::EC2::Route",
191
- },
192
- "vpcSnapshotTestDefaultVpcPublicSubnet1EIPCONSTRUCT_ID_PLACEHOLDER": {
193
- "Properties": {
194
- "Domain": "vpc",
195
- "Tags": [
196
- {
197
- "Key": "Name",
198
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet1",
199
- },
200
- ],
201
- },
202
- "Type": "AWS::EC2::EIP",
203
- },
204
- "vpcSnapshotTestDefaultVpcPublicSubnet1NATGatewayCONSTRUCT_ID_PLACEHOLDER": {
205
- "DependsOn": [
206
- "vpcSnapshotTestDefaultVpcPublicSubnet1DefaultRouteCONSTRUCT_ID_PLACEHOLDER",
207
- "vpcSnapshotTestDefaultVpcPublicSubnet1RouteTableAssociationCONSTRUCT_ID_PLACEHOLDER",
208
- ],
209
- "Properties": {
210
- "AllocationId": {
211
- "Fn::GetAtt": [
212
- "vpcSnapshotTestDefaultVpcPublicSubnet1EIPCONSTRUCT_ID_PLACEHOLDER",
213
- "AllocationId",
214
- ],
215
- },
216
- "SubnetId": {
217
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet1SubnetCONSTRUCT_ID_PLACEHOLDER",
218
- },
219
- "Tags": [
220
- {
221
- "Key": "Name",
222
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet1",
223
- },
224
- ],
225
- },
226
- "Type": "AWS::EC2::NatGateway",
227
- },
228
- "vpcSnapshotTestDefaultVpcPublicSubnet1RouteTableAssociationCONSTRUCT_ID_PLACEHOLDER": {
229
- "Properties": {
230
- "RouteTableId": {
231
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet1RouteTableCONSTRUCT_ID_PLACEHOLDER",
232
- },
233
- "SubnetId": {
234
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet1SubnetCONSTRUCT_ID_PLACEHOLDER",
235
- },
236
- },
237
- "Type": "AWS::EC2::SubnetRouteTableAssociation",
238
- },
239
- "vpcSnapshotTestDefaultVpcPublicSubnet1RouteTableCONSTRUCT_ID_PLACEHOLDER": {
240
- "Properties": {
241
- "Tags": [
242
- {
243
- "Key": "Name",
244
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet1",
245
- },
246
- ],
247
- "VpcId": {
248
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
249
- },
250
- },
251
- "Type": "AWS::EC2::RouteTable",
252
- },
253
- "vpcSnapshotTestDefaultVpcPublicSubnet1SubnetCONSTRUCT_ID_PLACEHOLDER": {
254
- "Properties": {
255
- "AvailabilityZone": {
256
- "Fn::Select": [
257
- 0,
258
- {
259
- "Fn::GetAZs": "",
260
- },
261
- ],
262
- },
263
- "CidrBlock": "10.0.0.0/18",
264
- "MapPublicIpOnLaunch": true,
265
- "Tags": [
266
- {
267
- "Key": "aws-cdk:subnet-name",
268
- "Value": "Public",
269
- },
270
- {
271
- "Key": "aws-cdk:subnet-type",
272
- "Value": "Public",
273
- },
274
- {
275
- "Key": "Name",
276
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet1",
277
- },
278
- ],
279
- "VpcId": {
280
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
281
- },
282
- },
283
- "Type": "AWS::EC2::Subnet",
284
- },
285
- "vpcSnapshotTestDefaultVpcPublicSubnet2DefaultRouteCONSTRUCT_ID_PLACEHOLDER": {
286
- "DependsOn": [
287
- "vpcSnapshotTestDefaultVpcVPCGWCONSTRUCT_ID_PLACEHOLDER",
288
- ],
289
- "Properties": {
290
- "DestinationCidrBlock": "0.0.0.0/0",
291
- "GatewayId": {
292
- "Ref": "vpcSnapshotTestDefaultVpcIGWCONSTRUCT_ID_PLACEHOLDER",
293
- },
294
- "RouteTableId": {
295
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet2RouteTableCONSTRUCT_ID_PLACEHOLDER",
296
- },
297
- },
298
- "Type": "AWS::EC2::Route",
299
- },
300
- "vpcSnapshotTestDefaultVpcPublicSubnet2EIPCONSTRUCT_ID_PLACEHOLDER": {
301
- "Properties": {
302
- "Domain": "vpc",
303
- "Tags": [
304
- {
305
- "Key": "Name",
306
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet2",
307
- },
308
- ],
309
- },
310
- "Type": "AWS::EC2::EIP",
311
- },
312
- "vpcSnapshotTestDefaultVpcPublicSubnet2NATGatewayCONSTRUCT_ID_PLACEHOLDER": {
313
- "DependsOn": [
314
- "vpcSnapshotTestDefaultVpcPublicSubnet2DefaultRouteCONSTRUCT_ID_PLACEHOLDER",
315
- "vpcSnapshotTestDefaultVpcPublicSubnet2RouteTableAssociationCONSTRUCT_ID_PLACEHOLDER",
316
- ],
317
- "Properties": {
318
- "AllocationId": {
319
- "Fn::GetAtt": [
320
- "vpcSnapshotTestDefaultVpcPublicSubnet2EIPCONSTRUCT_ID_PLACEHOLDER",
321
- "AllocationId",
322
- ],
323
- },
324
- "SubnetId": {
325
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet2SubnetCONSTRUCT_ID_PLACEHOLDER",
326
- },
327
- "Tags": [
328
- {
329
- "Key": "Name",
330
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet2",
331
- },
332
- ],
333
- },
334
- "Type": "AWS::EC2::NatGateway",
335
- },
336
- "vpcSnapshotTestDefaultVpcPublicSubnet2RouteTableAssociationCONSTRUCT_ID_PLACEHOLDER": {
337
- "Properties": {
338
- "RouteTableId": {
339
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet2RouteTableCONSTRUCT_ID_PLACEHOLDER",
340
- },
341
- "SubnetId": {
342
- "Ref": "vpcSnapshotTestDefaultVpcPublicSubnet2SubnetCONSTRUCT_ID_PLACEHOLDER",
343
- },
344
- },
345
- "Type": "AWS::EC2::SubnetRouteTableAssociation",
346
- },
347
- "vpcSnapshotTestDefaultVpcPublicSubnet2RouteTableCONSTRUCT_ID_PLACEHOLDER": {
348
- "Properties": {
349
- "Tags": [
350
- {
351
- "Key": "Name",
352
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet2",
353
- },
354
- ],
355
- "VpcId": {
356
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
357
- },
358
- },
359
- "Type": "AWS::EC2::RouteTable",
360
- },
361
- "vpcSnapshotTestDefaultVpcPublicSubnet2SubnetCONSTRUCT_ID_PLACEHOLDER": {
362
- "Properties": {
363
- "AvailabilityZone": {
364
- "Fn::Select": [
365
- 1,
366
- {
367
- "Fn::GetAZs": "",
368
- },
369
- ],
370
- },
371
- "CidrBlock": "10.0.64.0/18",
372
- "MapPublicIpOnLaunch": true,
373
- "Tags": [
374
- {
375
- "Key": "aws-cdk:subnet-name",
376
- "Value": "Public",
377
- },
378
- {
379
- "Key": "aws-cdk:subnet-type",
380
- "Value": "Public",
381
- },
382
- {
383
- "Key": "Name",
384
- "Value": "SnapshotTestNetwork/vpc-SnapshotTestDefaultVpc/PublicSubnet2",
385
- },
386
- ],
387
- "VpcId": {
388
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
389
- },
390
- },
391
- "Type": "AWS::EC2::Subnet",
392
- },
393
- "vpcSnapshotTestDefaultVpcVPCGWCONSTRUCT_ID_PLACEHOLDER": {
394
- "Properties": {
395
- "InternetGatewayId": {
396
- "Ref": "vpcSnapshotTestDefaultVpcIGWCONSTRUCT_ID_PLACEHOLDER",
397
- },
398
- "VpcId": {
399
- "Ref": "vpcSnapshotTestDefaultVpcCONSTRUCT_ID_PLACEHOLDER",
400
- },
401
- },
402
- "Type": "AWS::EC2::VPCGatewayAttachment",
403
- },
404
- },
405
- "Rules": {
406
- "CheckBootstrapVersion": {
407
- "Assertions": [
408
- {
409
- "Assert": {
410
- "Fn::Not": [
411
- {
412
- "Fn::Contains": [
413
- [
414
- "1",
415
- "2",
416
- "3",
417
- "4",
418
- "5",
419
- ],
420
- {
421
- "Ref": "BootstrapVersion",
422
- },
423
- ],
424
- },
425
- ],
426
- },
427
- "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.",
428
- },
429
- ],
430
- },
431
- },
432
- }
433
- `;
@@ -1 +0,0 @@
1
- export {};
@@ -1,137 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const setup_1 = require("../setup");
4
- const app_1 = require("../../app");
5
- describe("Infrastructure Testing", () => {
6
- let app;
7
- let stack;
8
- beforeEach(() => {
9
- // Set up clean test environment for each test
10
- app = setup_1.TestUtils.createTestApp();
11
- stack = setup_1.TestUtils.createTestStack(app);
12
- // Reset App singleton for each test
13
- app_1.default.instance = null;
14
- });
15
- describe("Basic Infrastructure", () => {
16
- it("should create a simple stack", () => {
17
- // Simple test to validate our setup works
18
- const template = setup_1.TestUtils.getTemplate(stack);
19
- expect(template.toJSON()).toHaveProperty("AWSTemplateFormatVersion");
20
- });
21
- it("should create App with default stacks", () => {
22
- // Test the App singleton with default stacks
23
- const fjallApp = app_1.default.getApp("TestApp");
24
- // Create the default stacks
25
- const networkStack = fjallApp.getDefaultNetworkStack();
26
- const storageStack = fjallApp.getDefaultStorageStack();
27
- const computeStack = fjallApp.getDefaultComputeStack();
28
- // Verify stacks exist
29
- expect(networkStack).toBeDefined();
30
- expect(storageStack).toBeDefined();
31
- expect(computeStack).toBeDefined();
32
- // Verify stack names
33
- expect(networkStack.getStack().stackName).toBe("TestAppNetwork");
34
- expect(storageStack.getStack().stackName).toBe("TestAppStorage");
35
- expect(computeStack.getStack().stackName).toBe("TestAppCompute");
36
- });
37
- it("should create VPC in network stack", () => {
38
- const fjallApp = app_1.default.getApp("VpcTest");
39
- const vpc = fjallApp.getDefaultVpc();
40
- expect(vpc).toBeDefined();
41
- // Get the network stack template
42
- const networkStack = fjallApp.getDefaultNetworkStack();
43
- const template = setup_1.TestUtils.getTemplate(networkStack.getStack());
44
- // Verify VPC resources are created
45
- template.hasResourceProperties("AWS::EC2::VPC", {
46
- EnableDnsHostnames: true,
47
- EnableDnsSupport: true
48
- });
49
- });
50
- it("should match network stack snapshot", () => {
51
- const fjallApp = app_1.default.getApp("SnapshotTest");
52
- fjallApp.getDefaultVpc(); // Trigger VPC creation
53
- const networkStack = fjallApp.getDefaultNetworkStack();
54
- const template = setup_1.TestUtils.getSnapshotTemplate(networkStack.getStack());
55
- const sanitisedTemplate = setup_1.TestUtils.sanitiseTemplate(template);
56
- expect(sanitisedTemplate).toMatchSnapshot("network-stack.json");
57
- });
58
- it("should create ECR repository", () => {
59
- const fjallApp = app_1.default.getApp("EcrTest");
60
- const ecr = fjallApp.getDefaultContainerRegistry();
61
- expect(ecr).toBeDefined();
62
- // Get the network stack (where ECR is created)
63
- const networkStack = fjallApp.getDefaultNetworkStack();
64
- const template = setup_1.TestUtils.getTemplate(networkStack.getStack());
65
- // Verify ECR repository is created
66
- template.hasResourceProperties("AWS::ECR::Repository", {
67
- RepositoryName: "EcrTestEcr"
68
- });
69
- });
70
- });
71
- describe("App Class", () => {
72
- it("should be a singleton", () => {
73
- const app1 = app_1.default.getApp("SingletonTest");
74
- const app2 = app_1.default.getApp("SingletonTest");
75
- expect(app1).toBe(app2);
76
- });
77
- it("should handle existing VPC configuration", () => {
78
- const fjallApp = app_1.default.getApp("ExistingVpcTest");
79
- // Configure to use existing VPC
80
- fjallApp.useExistingVpc("vpc-existing123");
81
- // This should not throw an error
82
- expect(() => fjallApp.getDefaultVpc()).not.toThrow();
83
- });
84
- it("should create stacks with proper dependencies", () => {
85
- const fjallApp = app_1.default.getApp("DependencyTest");
86
- const networkStack = fjallApp.getDefaultNetworkStack();
87
- const storageStack = fjallApp.getDefaultStorageStack();
88
- const computeStack = fjallApp.getDefaultComputeStack();
89
- // Storage should depend on network
90
- expect(storageStack.getStack().dependencies).toContain(networkStack.getStack());
91
- // Compute should depend on both network and storage
92
- expect(computeStack.getStack().dependencies).toContain(networkStack.getStack());
93
- expect(computeStack.getStack().dependencies).toContain(storageStack.getStack());
94
- });
95
- });
96
- describe("Snapshot Tests", () => {
97
- it("should match complete app infrastructure snapshot", () => {
98
- const fjallApp = app_1.default.getApp("CompleteTest");
99
- // Create all default infrastructure
100
- fjallApp.getDefaultVpc();
101
- fjallApp.getDefaultContainerRegistry();
102
- const networkStack = fjallApp.getDefaultNetworkStack();
103
- const storageStack = fjallApp.getDefaultStorageStack();
104
- const computeStack = fjallApp.getDefaultComputeStack();
105
- // Snapshot each stack
106
- const networkTemplate = setup_1.TestUtils.sanitiseTemplate(setup_1.TestUtils.getSnapshotTemplate(networkStack.getStack()));
107
- const storageTemplate = setup_1.TestUtils.sanitiseTemplate(setup_1.TestUtils.getSnapshotTemplate(storageStack.getStack()));
108
- const computeTemplate = setup_1.TestUtils.sanitiseTemplate(setup_1.TestUtils.getSnapshotTemplate(computeStack.getStack()));
109
- expect(networkTemplate).toMatchSnapshot("complete-network-stack.json");
110
- expect(storageTemplate).toMatchSnapshot("complete-storage-stack.json");
111
- expect(computeTemplate).toMatchSnapshot("complete-compute-stack.json");
112
- });
113
- });
114
- describe("Integration Tests", () => {
115
- it("should handle multiple apps without conflicts", () => {
116
- // Reset singleton to test multiple apps
117
- app_1.default.instance = null;
118
- const app1 = app_1.default.getApp("App1");
119
- const app2 = app_1.default.getApp("App2");
120
- // Should be the same instance (singleton)
121
- expect(app1).toBe(app2);
122
- // But name should be from first creation
123
- const vpc1 = app1.getDefaultVpc();
124
- expect(vpc1).toBeDefined();
125
- });
126
- it("should apply tags correctly to resources", () => {
127
- const fjallApp = app_1.default.getApp("TagTest");
128
- fjallApp.getDefaultVpc();
129
- const networkStack = fjallApp.getDefaultNetworkStack();
130
- const template = setup_1.TestUtils.getTemplate(networkStack.getStack());
131
- // Resources should be created (tags verified in snapshots)
132
- const resources = template.toJSON().Resources;
133
- expect(Object.keys(resources).length).toBeGreaterThan(0);
134
- });
135
- });
136
- });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL19fdGVzdHNfXy9wYXR0ZXJucy9jb21wdXRlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxvQ0FBK0M7QUFDL0MsbUNBQTRCO0FBRTVCLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7SUFDdEMsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxLQUFZLENBQUM7SUFFakIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLDhDQUE4QztRQUM5QyxHQUFHLEdBQUcsaUJBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoQyxLQUFLLEdBQUcsaUJBQVMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkMsb0NBQW9DO1FBQ25DLGFBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLDBDQUEwQztZQUMxQyxNQUFNLFFBQVEsR0FBRyxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1lBQy9DLDZDQUE2QztZQUM3QyxNQUFNLFFBQVEsR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXZDLDRCQUE0QjtZQUM1QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUN2RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUs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QzNELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcCBhcyBDZGtBcHAsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5pbXBvcnQgeyBUZXN0VXRpbHMsIFRlc3REYXRhIH0gZnJvbSBcIi4uL3NldHVwXCI7XG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcblxuZGVzY3JpYmUoXCJJbmZyYXN0cnVjdHVyZSBUZXN0aW5nXCIsICgpID0+IHtcbiAgbGV0IGFwcDogQ2RrQXBwO1xuICBsZXQgc3RhY2s6IFN0YWNrO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIC8vIFNldCB1cCBjbGVhbiB0ZXN0IGVudmlyb25tZW50IGZvciBlYWNoIHRlc3RcbiAgICBhcHAgPSBUZXN0VXRpbHMuY3JlYXRlVGVzdEFwcCgpO1xuICAgIHN0YWNrID0gVGVzdFV0aWxzLmNyZWF0ZVRlc3RTdGFjayhhcHApO1xuXG4gICAgLy8gUmVzZXQgQXBwIHNpbmdsZXRvbiBmb3IgZWFjaCB0ZXN0XG4gICAgKEFwcCBhcyBhbnkpLmluc3RhbmNlID0gbnVsbDtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYXNpYyBJbmZyYXN0cnVjdHVyZVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGEgc2ltcGxlIHN0YWNrXCIsICgpID0+IHtcbiAgICAgIC8vIFNpbXBsZSB0ZXN0IHRvIHZhbGlkYXRlIG91ciBzZXR1cCB3b3Jrc1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBUZXN0VXRpbHMuZ2V0VGVtcGxhdGUoc3RhY2spO1xuICAgICAgZXhwZWN0KHRlbXBsYXRlLnRvSlNPTigpKS50b0hhdmVQcm9wZXJ0eShcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvblwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBBcHAgd2l0aCBkZWZhdWx0IHN0YWNrc1wiLCAoKSA9PiB7XG4gICAgICAvLyBUZXN0IHRoZSBBcHAgc2luZ2xldG9uIHdpdGggZGVmYXVsdCBzdGFja3NcbiAgICAgIGNvbnN0IGZqYWxsQXBwID0gQXBwLmdldEFwcChcIlRlc3RBcHBcIik7XG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgZGVmYXVsdCBzdGFja3NcbiAgICAgIGNvbnN0IG5ldHdvcmtTdGFjayA9IGZqYWxsQXBwLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VTdGFjayA9IGZqYWxsQXBwLmdldERlZmF1bHRTdG9yYWdlU3RhY2soKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVTdGFjayA9IGZqYWxsQXBwLmdldERlZmF1bHRDb21wdXRlU3RhY2soKTtcblxuICAgICAgLy8gVmVyaWZ5IHN0YWNrcyBleGlzdFxuICAgICAgZXhwZWN0KG5ldHdvcmtTdGFjaykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdG9yYWdlU3RhY2spLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoY29tcHV0ZVN0YWNrKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBWZXJpZnkgc3RhY2sgbmFtZXNcbiAgICAgIGV4cGVjdChuZXR3b3JrU3RhY2suZ2V0U3RhY2soKS5zdGFja05hbWUpLnRvQmUoXCJUZXN0QXBwTmV0d29ya1wiKTtcbiAgICAgIGV4cGVjdChzdG9yYWdlU3RhY2suZ2V0U3RhY2soKS5zdGFja05hbWUpLnRvQmUoXCJUZXN0QXBwU3RvcmFnZVwiKTtcbiAgICAgIGV4cGVjdChjb21wdXRlU3RhY2suZ2V0U3RhY2soKS5zdGFja05hbWUpLnRvQmUoXCJUZXN0QXBwQ29tcHV0ZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBWUEMgaW4gbmV0d29yayBzdGFja1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBmamFsbEFwcCA9IEFwcC5nZXRBcHAoXCJWcGNUZXN0XCIpO1xuICAgICAgY29uc3QgdnBjID0gZmphbGxBcHAuZ2V0RGVmYXVsdFZwYygpO1xuXG4gICAgICBleHBlY3QodnBjKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBHZXQgdGhlIG5ldHdvcmsgc3RhY2sgdGVtcGxhdGVcbiAgICAgIGNvbnN0IG5ldHdvcmtTdGFjayA9IGZqYWxsQXBwLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVzdFV0aWxzLmdldFRlbXBsYXRlKG5ldHdvcmtTdGFjay5nZXRTdGFjaygpKTtcblxuICAgICAgLy8gVmVyaWZ5IFZQQyByZXNvdXJjZXMgYXJlIGNyZWF0ZWRcbiAgICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6RUMyOjpWUENcIiwge1xuICAgICAgICBFbmFibGVEbnNIb3N0bmFtZXM6IHRydWUsXG4gICAgICAgIEVuYWJsZURuc1N1cHBvcnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbWF0Y2ggbmV0d29yayBzdGFjayBzbmFwc2hvdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBmamFsbEFwcCA9IEFwcC5nZXRBcHAoXCJTbmFwc2hvdFRlc3RcIik7XG4gICAgICBmamFsbEFwcC5nZXREZWZhdWx0VnBjKCk7IC8vIFRyaWdnZXIgVlBDIGNyZWF0aW9uXG5cbiAgICAgIGNvbnN0IG5ldHdvcmtTdGFjayA9IGZqYWxsQXBwLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVzdFV0aWxzLmdldFNuYXBzaG90VGVtcGxhdGUobmV0d29ya1N0YWNrLmdldFN0YWNrKCkpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVGVtcGxhdGUgPSBUZXN0VXRpbHMuc2FuaXRpc2VUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgICAgIGV4cGVjdChzYW5pdGlzZWRUZW1wbGF0ZSkudG9NYXRjaFNuYXBzaG90KFwibmV0d29yay1zdGFjay5qc29uXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIEVDUiByZXBvc2l0b3J5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGZqYWxsQXBwID0gQXBwLmdldEFwcChcIkVjclRlc3RcIik7XG4gICAgICBjb25zdCBlY3IgPSBmamFsbEFwcC5nZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKTtcblxuICAgICAgZXhwZWN0KGVjcikudG9CZURlZmluZWQoKTtcblxuICAgICAgLy8gR2V0IHRoZSBuZXR3b3JrIHN0YWNrICh3aGVyZSBFQ1IgaXMgY3JlYXRlZClcbiAgICAgIGNvbnN0IG5ldHdvcmtTdGFjayA9IGZqYWxsQXBwLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVzdFV0aWxzLmdldFRlbXBsYXRlKG5ldHdvcmtTdGFjay5nZXRTdGFjaygpKTtcblxuICAgICAgLy8gVmVyaWZ5IEVDUiByZXBvc2l0b3J5IGlzIGNyZWF0ZWRcbiAgICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6RUNSOjpSZXBvc2l0b3J5XCIsIHtcbiAgICAgICAgUmVwb3NpdG9yeU5hbWU6IFwiRWNyVGVzdEVjclwiXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJBcHAgQ2xhc3NcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGJlIGEgc2luZ2xldG9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcDEgPSBBcHAuZ2V0QXBwKFwiU2luZ2xldG9uVGVzdFwiKTtcbiAgICAgIGNvbnN0IGFwcDIgPSBBcHAuZ2V0QXBwKFwiU2luZ2xldG9uVGVzdFwiKTtcblxuICAgICAgZXhwZWN0KGFwcDEpLnRvQmUoYXBwMik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgZXhpc3RpbmcgVlBDIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgZmphbGxBcHAgPSBBcHAuZ2V0QXBwKFwiRXhpc3RpbmdWcGNUZXN0XCIpO1xuXG4gICAgICAvLyBDb25maWd1cmUgdG8gdXNlIGV4aXN0aW5nIFZQQ1xuICAgICAgZmphbGxBcHAudXNlRXhpc3RpbmdWcGMoXCJ2cGMtZXhpc3RpbmcxMjNcIik7XG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvclxuICAgICAgZXhwZWN0KCgpID0+IGZqYWxsQXBwLmdldERlZmF1bHRWcGMoKSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBzdGFja3Mgd2l0aCBwcm9wZXIgZGVwZW5kZW5jaWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGZqYWxsQXBwID0gQXBwLmdldEFwcChcIkRlcGVuZGVuY3lUZXN0XCIpO1xuXG4gICAgICBjb25zdCBuZXR3b3JrU3RhY2sgPSBmamFsbEFwcC5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG4gICAgICBjb25zdCBzdG9yYWdlU3RhY2sgPSBmamFsbEFwcC5nZXREZWZhdWx0U3RvcmFnZVN0YWNrKCk7XG4gICAgICBjb25zdCBjb21wdXRlU3RhY2sgPSBmamFsbEFwcC5nZXREZWZhdWx0Q29tcHV0ZVN0YWNrKCk7XG5cbiAgICAgIC8vIFN0b3JhZ2Ugc2hvdWxkIGRlcGVuZCBvbiBuZXR3b3JrXG4gICAgICBleHBlY3Qoc3RvcmFnZVN0YWNrLmdldFN0YWNrKCkuZGVwZW5kZW5jaWVzKS50b0NvbnRhaW4oXG4gICAgICAgIG5ldHdvcmtTdGFjay5nZXRTdGFjaygpXG4gICAgICApO1xuXG4gICAgICAvLyBDb21wdXRlIHNob3VsZCBkZXBlbmQgb24gYm90aCBuZXR3b3JrIGFuZCBzdG9yYWdlXG4gICAgICBleHBlY3QoY29tcHV0ZVN0YWNrLmdldFN0YWNrKCkuZGVwZW5kZW5jaWVzKS50b0NvbnRhaW4oXG4gICAgICAgIG5ldHdvcmtTdGFjay5nZXRTdGFjaygpXG4gICAgICApO1xuICAgICAgZXhwZWN0KGNvbXB1dGVTdGFjay5nZXRTdGFjaygpLmRlcGVuZGVuY2llcykudG9Db250YWluKFxuICAgICAgICBzdG9yYWdlU3RhY2suZ2V0U3RhY2soKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJTbmFwc2hvdCBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgbWF0Y2ggY29tcGxldGUgYXBwIGluZnJhc3RydWN0dXJlIHNuYXBzaG90XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGZqYWxsQXBwID0gQXBwLmdldEFwcChcIkNvbXBsZXRlVGVzdFwiKTtcblxuICAgICAgLy8gQ3JlYXRlIGFsbCBkZWZhdWx0IGluZnJhc3RydWN0dXJlXG4gICAgICBmamFsbEFwcC5nZXREZWZhdWx0VnBjKCk7XG4gICAgICBmamFsbEFwcC5nZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKTtcblxuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gZmphbGxBcHAuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpO1xuICAgICAgY29uc3Qgc3RvcmFnZVN0YWNrID0gZmphbGxBcHAuZ2V0RGVmYXVsdFN0b3JhZ2VTdGFjaygpO1xuICAgICAgY29uc3QgY29tcHV0ZVN0YWNrID0gZmphbGxBcHAuZ2V0RGVmYXVsdENvbXB1dGVTdGFjaygpO1xuXG4gICAgICAvLyBTbmFwc2hvdCBlYWNoIHN0YWNrXG4gICAgICBjb25zdCBuZXR3b3JrVGVtcGxhdGUgPSBUZXN0VXRpbHMuc2FuaXRpc2VUZW1wbGF0ZShcbiAgICAgICAgVGVzdFV0aWxzLmdldFNuYXBzaG90VGVtcGxhdGUobmV0d29ya1N0YWNrLmdldFN0YWNrKCkpXG4gICAgICApO1xuICAgICAgY29uc3Qgc3RvcmFnZVRlbXBsYXRlID0gVGVzdFV0aWxzLnNhbml0aXNlVGVtcGxhdGUoXG4gICAgICAgIFRlc3RVdGlscy5nZXRTbmFwc2hvdFRlbXBsYXRlKHN0b3JhZ2VTdGFjay5nZXRTdGFjaygpKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVUZW1wbGF0ZSA9IFRlc3RVdGlscy5zYW5pdGlzZVRlbXBsYXRlKFxuICAgICAgICBUZXN0VXRpbHMuZ2V0U25hcHNob3RUZW1wbGF0ZShjb21wdXRlU3RhY2suZ2V0U3RhY2soKSlcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChuZXR3b3JrVGVtcGxhdGUpLnRvTWF0Y2hTbmFwc2hvdChcImNvbXBsZXRlLW5ldHdvcmstc3RhY2suanNvblwiKTtcbiAgICAgIGV4cGVjdChzdG9yYWdlVGVtcGxhdGUpLnRvTWF0Y2hTbmFwc2hvdChcImNvbXBsZXRlLXN0b3JhZ2Utc3RhY2suanNvblwiKTtcbiAgICAgIGV4cGVjdChjb21wdXRlVGVtcGxhdGUpLnRvTWF0Y2hTbmFwc2hvdChcImNvbXBsZXRlLWNvbXB1dGUtc3RhY2suanNvblwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJJbnRlZ3JhdGlvbiBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGFwcHMgd2l0aG91dCBjb25mbGljdHNcIiwgKCkgPT4ge1xuICAgICAgLy8gUmVzZXQgc2luZ2xldG9uIHRvIHRlc3QgbXVsdGlwbGUgYXBwc1xuICAgICAgKEFwcCBhcyBhbnkpLmluc3RhbmNlID0gbnVsbDtcblxuICAgICAgY29uc3QgYXBwMSA9IEFwcC5nZXRBcHAoXCJBcHAxXCIpO1xuICAgICAgY29uc3QgYXBwMiA9IEFwcC5nZXRBcHAoXCJBcHAyXCIpO1xuXG4gICAgICAvLyBTaG91bGQgYmUgdGhlIHNhbWUgaW5zdGFuY2UgKHNpbmdsZXRvbilcbiAgICAgIGV4cGVjdChhcHAxKS50b0JlKGFwcDIpO1xuXG4gICAgICAvLyBCdXQgbmFtZSBzaG91bGQgYmUgZnJvbSBmaXJzdCBjcmVhdGlvblxuICAgICAgY29uc3QgdnBjMSA9IGFwcDEuZ2V0RGVmYXVsdFZwYygpO1xuICAgICAgZXhwZWN0KHZwYzEpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBhcHBseSB0YWdzIGNvcnJlY3RseSB0byByZXNvdXJjZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgZmphbGxBcHAgPSBBcHAuZ2V0QXBwKFwiVGFnVGVzdFwiKTtcbiAgICAgIGZqYWxsQXBwLmdldERlZmF1bHRWcGMoKTtcblxuICAgICAgY29uc3QgbmV0d29ya1N0YWNrID0gZmphbGxBcHAuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpO1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBUZXN0VXRpbHMuZ2V0VGVtcGxhdGUobmV0d29ya1N0YWNrLmdldFN0YWNrKCkpO1xuXG4gICAgICAvLyBSZXNvdXJjZXMgc2hvdWxkIGJlIGNyZWF0ZWQgKHRhZ3MgdmVyaWZpZWQgaW4gc25hcHNob3RzKVxuICAgICAgY29uc3QgcmVzb3VyY2VzID0gdGVtcGxhdGUudG9KU09OKCkuUmVzb3VyY2VzO1xuICAgICAgZXhwZWN0KE9iamVjdC5rZXlzKHJlc291cmNlcykubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
File without changes
@@ -1,12 +0,0 @@
1
- "use strict";
2
- describe("Simple Test", () => {
3
- it("should pass basic test", () => {
4
- expect(1 + 1).toBe(2);
5
- });
6
- it("should handle basic CDK imports", () => {
7
- const { App } = require("aws-cdk-lib");
8
- const app = new App();
9
- expect(app).toBeDefined();
10
- });
11
- });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvX190ZXN0c19fL3NpbXBsZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixFQUFFLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJkZXNjcmliZShcIlNpbXBsZSBUZXN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgcGFzcyBiYXNpYyB0ZXN0XCIsICgpID0+IHtcbiAgICBleHBlY3QoMSArIDEpLnRvQmUoMik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBiYXNpYyBDREsgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgY29uc3QgeyBBcHAgfSA9IHJlcXVpcmUoXCJhd3MtY2RrLWxpYlwiKTtcbiAgICBjb25zdCBhcHAgPSBuZXcgQXBwKCk7XG4gICAgZXhwZWN0KGFwcCkudG9CZURlZmluZWQoKTtcbiAgfSk7XG59KTtcbiJdfQ==
File without changes