@microsoft/terraform-cdk-constructs 0.0.3-pre.6

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 (929) hide show
  1. package/.devcontainer/devcontainer.json +62 -0
  2. package/.jsii +17693 -0
  3. package/API.md +17465 -0
  4. package/CODE_OF_CONDUCT.md +9 -0
  5. package/CONTRIBUTING.md +85 -0
  6. package/LICENSE +21 -0
  7. package/README.md +58 -0
  8. package/SECURITY.md +41 -0
  9. package/SUPPORT.md +25 -0
  10. package/cdktf.json +11 -0
  11. package/cdktf.out/manifest.json +13 -0
  12. package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +111 -0
  13. package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +588 -0
  14. package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +245 -0
  15. package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +179 -0
  16. package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +236 -0
  17. package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +436 -0
  18. package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +152 -0
  19. package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +209 -0
  20. package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +439 -0
  21. package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +283 -0
  22. package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +261 -0
  23. package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +309 -0
  24. package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +161 -0
  25. package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +271 -0
  26. package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +122 -0
  27. package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +88 -0
  28. package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +339 -0
  29. package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +264 -0
  30. package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +261 -0
  31. package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +280 -0
  32. package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +167 -0
  33. package/docs/design_guide.md +309 -0
  34. package/docs/testing.md +347 -0
  35. package/go.mod +73 -0
  36. package/go.sum +1006 -0
  37. package/help +51 -0
  38. package/jest.config.js.old +187 -0
  39. package/lib/azure-actiongroup/index.d.ts +1 -0
  40. package/lib/azure-actiongroup/index.js +18 -0
  41. package/lib/azure-actiongroup/lib/actiongroup.d.ts +10 -0
  42. package/lib/azure-actiongroup/lib/actiongroup.js +46 -0
  43. package/lib/azure-actiongroup/lib/index.d.ts +1 -0
  44. package/lib/azure-actiongroup/lib/index.js +18 -0
  45. package/lib/azure-actiongroup/model/action-group-props.d.ts +47 -0
  46. package/lib/azure-actiongroup/model/action-group-props.js +3 -0
  47. package/lib/azure-actiongroup/model/arm-role-receiver-props.d.ts +20 -0
  48. package/lib/azure-actiongroup/model/arm-role-receiver-props.js +3 -0
  49. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.d.ts +14 -0
  50. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.js +3 -0
  51. package/lib/azure-actiongroup/model/email-receiver-props.d.ts +19 -0
  52. package/lib/azure-actiongroup/model/email-receiver-props.js +3 -0
  53. package/lib/azure-actiongroup/model/eventhub-receiver-props.d.ts +23 -0
  54. package/lib/azure-actiongroup/model/eventhub-receiver-props.js +3 -0
  55. package/lib/azure-actiongroup/model/function.d.ts +40 -0
  56. package/lib/azure-actiongroup/model/function.js +118 -0
  57. package/lib/azure-actiongroup/model/index.d.ts +10 -0
  58. package/lib/azure-actiongroup/model/index.js +27 -0
  59. package/lib/azure-actiongroup/model/logic-app-receiver-props.d.ts +23 -0
  60. package/lib/azure-actiongroup/model/logic-app-receiver-props.js +3 -0
  61. package/lib/azure-actiongroup/model/sms-receiver-props.d.ts +18 -0
  62. package/lib/azure-actiongroup/model/sms-receiver-props.js +3 -0
  63. package/lib/azure-actiongroup/model/voice-receiver-props.d.ts +18 -0
  64. package/lib/azure-actiongroup/model/voice-receiver-props.js +3 -0
  65. package/lib/azure-actiongroup/model/webhook-receiver-props.d.ts +18 -0
  66. package/lib/azure-actiongroup/model/webhook-receiver-props.js +3 -0
  67. package/lib/azure-actiongroup/test/AzureActionGroup.spec.d.ts +1 -0
  68. package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +294 -0
  69. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +5 -0
  70. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +66 -0
  71. package/lib/azure-applicationgateway/index.d.ts +1 -0
  72. package/lib/azure-applicationgateway/index.js +18 -0
  73. package/lib/azure-applicationgateway/lib/gateway.d.ts +172 -0
  74. package/lib/azure-applicationgateway/lib/gateway.js +123 -0
  75. package/lib/azure-applicationgateway/lib/index.d.ts +1 -0
  76. package/lib/azure-applicationgateway/lib/index.js +18 -0
  77. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.d.ts +1 -0
  78. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +106 -0
  79. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +5 -0
  80. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +267 -0
  81. package/lib/azure-applicationinsights/index.d.ts +1 -0
  82. package/lib/azure-applicationinsights/index.js +18 -0
  83. package/lib/azure-applicationinsights/lib/appinsights.d.ts +60 -0
  84. package/lib/azure-applicationinsights/lib/appinsights.js +85 -0
  85. package/lib/azure-applicationinsights/lib/index.d.ts +1 -0
  86. package/lib/azure-applicationinsights/lib/index.js +18 -0
  87. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.d.ts +1 -0
  88. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +55 -0
  89. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +5 -0
  90. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +87 -0
  91. package/lib/azure-containerregistry/index.d.ts +1 -0
  92. package/lib/azure-containerregistry/index.js +18 -0
  93. package/lib/azure-containerregistry/lib/index.d.ts +1 -0
  94. package/lib/azure-containerregistry/lib/index.js +18 -0
  95. package/lib/azure-containerregistry/lib/registry.d.ts +41 -0
  96. package/lib/azure-containerregistry/lib/registry.js +47 -0
  97. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.d.ts +1 -0
  98. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +50 -0
  99. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +5 -0
  100. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +57 -0
  101. package/lib/azure-datalake/index.d.ts +1 -0
  102. package/lib/azure-datalake/index.js +18 -0
  103. package/lib/azure-datalake/lib/datalake.d.ts +14 -0
  104. package/lib/azure-datalake/lib/datalake.js +42 -0
  105. package/lib/azure-datalake/lib/filesystem.d.ts +19 -0
  106. package/lib/azure-datalake/lib/filesystem.js +32 -0
  107. package/lib/azure-datalake/lib/index.d.ts +3 -0
  108. package/lib/azure-datalake/lib/index.js +20 -0
  109. package/lib/azure-datalake/lib/path.d.ts +12 -0
  110. package/lib/azure-datalake/lib/path.js +14 -0
  111. package/lib/azure-eventhub/index.d.ts +1 -0
  112. package/lib/azure-eventhub/index.js +18 -0
  113. package/lib/azure-eventhub/lib/authorization.d.ts +28 -0
  114. package/lib/azure-eventhub/lib/authorization.js +54 -0
  115. package/lib/azure-eventhub/lib/cluster.d.ts +27 -0
  116. package/lib/azure-eventhub/lib/cluster.js +35 -0
  117. package/lib/azure-eventhub/lib/consumer.d.ts +26 -0
  118. package/lib/azure-eventhub/lib/consumer.js +31 -0
  119. package/lib/azure-eventhub/lib/index.d.ts +6 -0
  120. package/lib/azure-eventhub/lib/index.js +23 -0
  121. package/lib/azure-eventhub/lib/instance.d.ts +46 -0
  122. package/lib/azure-eventhub/lib/instance.js +66 -0
  123. package/lib/azure-eventhub/lib/kusto-connection.d.ts +68 -0
  124. package/lib/azure-eventhub/lib/kusto-connection.js +35 -0
  125. package/lib/azure-eventhub/lib/namespace.d.ts +77 -0
  126. package/lib/azure-eventhub/lib/namespace.js +58 -0
  127. package/lib/azure-eventhub/test/AzureEventhub.spec.d.ts +1 -0
  128. package/lib/azure-eventhub/test/AzureEventhub.spec.js +56 -0
  129. package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +5 -0
  130. package/lib/azure-eventhub/test/ExampleAzureEventhub.js +72 -0
  131. package/lib/azure-functionapp/index.d.ts +1 -0
  132. package/lib/azure-functionapp/index.js +18 -0
  133. package/lib/azure-functionapp/lib/functionapplinux.d.ts +211 -0
  134. package/lib/azure-functionapp/lib/functionapplinux.js +141 -0
  135. package/lib/azure-functionapp/lib/index.d.ts +1 -0
  136. package/lib/azure-functionapp/lib/index.js +18 -0
  137. package/lib/azure-functionapp/serviceplanskus.d.ts +70 -0
  138. package/lib/azure-functionapp/serviceplanskus.js +81 -0
  139. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.d.ts +1 -0
  140. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +48 -0
  141. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +5 -0
  142. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +123 -0
  143. package/lib/azure-keyvault/index.d.ts +1 -0
  144. package/lib/azure-keyvault/index.js +18 -0
  145. package/lib/azure-keyvault/lib/certificate.d.ts +39 -0
  146. package/lib/azure-keyvault/lib/certificate.js +94 -0
  147. package/lib/azure-keyvault/lib/index.d.ts +5 -0
  148. package/lib/azure-keyvault/lib/index.js +22 -0
  149. package/lib/azure-keyvault/lib/key.d.ts +36 -0
  150. package/lib/azure-keyvault/lib/key.js +33 -0
  151. package/lib/azure-keyvault/lib/policy.d.ts +46 -0
  152. package/lib/azure-keyvault/lib/policy.js +26 -0
  153. package/lib/azure-keyvault/lib/secret.d.ts +39 -0
  154. package/lib/azure-keyvault/lib/secret.js +33 -0
  155. package/lib/azure-keyvault/lib/vault.d.ts +94 -0
  156. package/lib/azure-keyvault/lib/vault.js +208 -0
  157. package/lib/azure-keyvault/test/AzureKeyVault.spec.d.ts +1 -0
  158. package/lib/azure-keyvault/test/AzureKeyVault.spec.js +63 -0
  159. package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +5 -0
  160. package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +112 -0
  161. package/lib/azure-kubernetes/index.d.ts +1 -0
  162. package/lib/azure-kubernetes/index.js +18 -0
  163. package/lib/azure-kubernetes/lib/cluster.d.ts +72 -0
  164. package/lib/azure-kubernetes/lib/cluster.js +42 -0
  165. package/lib/azure-kubernetes/lib/index.d.ts +1 -0
  166. package/lib/azure-kubernetes/lib/index.js +18 -0
  167. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.d.ts +1 -0
  168. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +56 -0
  169. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +5 -0
  170. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +65 -0
  171. package/lib/azure-kusto/index.d.ts +1 -0
  172. package/lib/azure-kusto/index.js +18 -0
  173. package/lib/azure-kusto/lib/cluster.d.ts +83 -0
  174. package/lib/azure-kusto/lib/cluster.js +85 -0
  175. package/lib/azure-kusto/lib/compute-specification.d.ts +71 -0
  176. package/lib/azure-kusto/lib/compute-specification.js +651 -0
  177. package/lib/azure-kusto/lib/database.d.ts +59 -0
  178. package/lib/azure-kusto/lib/database.js +77 -0
  179. package/lib/azure-kusto/lib/index.d.ts +3 -0
  180. package/lib/azure-kusto/lib/index.js +20 -0
  181. package/lib/azure-kusto/test/AzureKusto.spec.d.ts +1 -0
  182. package/lib/azure-kusto/test/AzureKusto.spec.js +50 -0
  183. package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +5 -0
  184. package/lib/azure-kusto/test/ExampleAzureKusto.js +71 -0
  185. package/lib/azure-loganalytics/index.d.ts +1 -0
  186. package/lib/azure-loganalytics/index.js +18 -0
  187. package/lib/azure-loganalytics/lib/index.d.ts +1 -0
  188. package/lib/azure-loganalytics/lib/index.js +18 -0
  189. package/lib/azure-loganalytics/lib/workspace.d.ts +116 -0
  190. package/lib/azure-loganalytics/lib/workspace.js +79 -0
  191. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.d.ts +1 -0
  192. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +50 -0
  193. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +5 -0
  194. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +115 -0
  195. package/lib/azure-metricalert/index.d.ts +2 -0
  196. package/lib/azure-metricalert/index.js +19 -0
  197. package/lib/azure-metricalert/lib/index.d.ts +1 -0
  198. package/lib/azure-metricalert/lib/index.js +18 -0
  199. package/lib/azure-metricalert/lib/metric-alert.d.ts +17 -0
  200. package/lib/azure-metricalert/lib/metric-alert.js +89 -0
  201. package/lib/azure-metricalert/model/action-props.d.ts +11 -0
  202. package/lib/azure-metricalert/model/action-props.js +3 -0
  203. package/lib/azure-metricalert/model/criteria-base-props.d.ts +38 -0
  204. package/lib/azure-metricalert/model/criteria-base-props.js +3 -0
  205. package/lib/azure-metricalert/model/criteria-dimension-props.d.ts +21 -0
  206. package/lib/azure-metricalert/model/criteria-dimension-props.js +3 -0
  207. package/lib/azure-metricalert/model/criteria-props.d.ts +12 -0
  208. package/lib/azure-metricalert/model/criteria-props.js +3 -0
  209. package/lib/azure-metricalert/model/dynamic-criteria-props.d.ts +29 -0
  210. package/lib/azure-metricalert/model/dynamic-criteria-props.js +3 -0
  211. package/lib/azure-metricalert/model/function.d.ts +28 -0
  212. package/lib/azure-metricalert/model/function.js +78 -0
  213. package/lib/azure-metricalert/model/index.d.ts +7 -0
  214. package/lib/azure-metricalert/model/index.js +24 -0
  215. package/lib/azure-metricalert/model/metric-alert-props.d.ts +86 -0
  216. package/lib/azure-metricalert/model/metric-alert-props.js +3 -0
  217. package/lib/azure-metricalert/test/AzureMetricAlert.spec.d.ts +1 -0
  218. package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +63 -0
  219. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +5 -0
  220. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +81 -0
  221. package/lib/azure-networksecuritygroup/index.d.ts +1 -0
  222. package/lib/azure-networksecuritygroup/index.js +18 -0
  223. package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -0
  224. package/lib/azure-networksecuritygroup/lib/index.js +19 -0
  225. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.d.ts +77 -0
  226. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +608 -0
  227. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +98 -0
  228. package/lib/azure-networksecuritygroup/lib/securitygroup.js +82 -0
  229. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.d.ts +1 -0
  230. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +54 -0
  231. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +5 -0
  232. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +97 -0
  233. package/lib/azure-queryrulealert/index.d.ts +1 -0
  234. package/lib/azure-queryrulealert/index.js +18 -0
  235. package/lib/azure-queryrulealert/lib/index.d.ts +1 -0
  236. package/lib/azure-queryrulealert/lib/index.js +18 -0
  237. package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +144 -0
  238. package/lib/azure-queryrulealert/lib/query-rule-alert.js +174 -0
  239. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.d.ts +1 -0
  240. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +67 -0
  241. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +5 -0
  242. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +67 -0
  243. package/lib/azure-resourcegroup/index.d.ts +1 -0
  244. package/lib/azure-resourcegroup/index.js +18 -0
  245. package/lib/azure-resourcegroup/lib/index.d.ts +1 -0
  246. package/lib/azure-resourcegroup/lib/index.js +18 -0
  247. package/lib/azure-resourcegroup/lib/resource-group.d.ts +38 -0
  248. package/lib/azure-resourcegroup/lib/resource-group.js +49 -0
  249. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.d.ts +1 -0
  250. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +41 -0
  251. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +5 -0
  252. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +29 -0
  253. package/lib/azure-storageaccount/index.d.ts +1 -0
  254. package/lib/azure-storageaccount/index.js +18 -0
  255. package/lib/azure-storageaccount/lib/account.d.ts +205 -0
  256. package/lib/azure-storageaccount/lib/account.js +198 -0
  257. package/lib/azure-storageaccount/lib/container.d.ts +40 -0
  258. package/lib/azure-storageaccount/lib/container.js +85 -0
  259. package/lib/azure-storageaccount/lib/fileshare.d.ts +69 -0
  260. package/lib/azure-storageaccount/lib/fileshare.js +90 -0
  261. package/lib/azure-storageaccount/lib/index.d.ts +5 -0
  262. package/lib/azure-storageaccount/lib/index.js +22 -0
  263. package/lib/azure-storageaccount/lib/queue.d.ts +6 -0
  264. package/lib/azure-storageaccount/lib/queue.js +23 -0
  265. package/lib/azure-storageaccount/lib/table.d.ts +6 -0
  266. package/lib/azure-storageaccount/lib/table.js +23 -0
  267. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.d.ts +1 -0
  268. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +45 -0
  269. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +5 -0
  270. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +102 -0
  271. package/lib/azure-virtualmachine/index.d.ts +1 -0
  272. package/lib/azure-virtualmachine/index.js +18 -0
  273. package/lib/azure-virtualmachine/lib/image-references.d.ts +22 -0
  274. package/lib/azure-virtualmachine/lib/image-references.js +128 -0
  275. package/lib/azure-virtualmachine/lib/index.d.ts +2 -0
  276. package/lib/azure-virtualmachine/lib/index.js +19 -0
  277. package/lib/azure-virtualmachine/lib/vm.d.ts +205 -0
  278. package/lib/azure-virtualmachine/lib/vm.js +207 -0
  279. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.d.ts +1 -0
  280. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +48 -0
  281. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.d.ts +1 -0
  282. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +50 -0
  283. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +5 -0
  284. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +106 -0
  285. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +5 -0
  286. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +102 -0
  287. package/lib/azure-virtualmachinescaleset/index.d.ts +1 -0
  288. package/lib/azure-virtualmachinescaleset/index.js +18 -0
  289. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +234 -0
  290. package/lib/azure-virtualmachinescaleset/lib/cluster.js +174 -0
  291. package/lib/azure-virtualmachinescaleset/lib/index.d.ts +1 -0
  292. package/lib/azure-virtualmachinescaleset/lib/index.js +18 -0
  293. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.d.ts +1 -0
  294. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +48 -0
  295. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.d.ts +1 -0
  296. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +50 -0
  297. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +5 -0
  298. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +107 -0
  299. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +5 -0
  300. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +103 -0
  301. package/lib/azure-virtualnetwork/index.d.ts +1 -0
  302. package/lib/azure-virtualnetwork/index.js +18 -0
  303. package/lib/azure-virtualnetwork/lib/index.d.ts +2 -0
  304. package/lib/azure-virtualnetwork/lib/index.js +19 -0
  305. package/lib/azure-virtualnetwork/lib/network.d.ts +61 -0
  306. package/lib/azure-virtualnetwork/lib/network.js +60 -0
  307. package/lib/azure-virtualnetwork/lib/peering.d.ts +51 -0
  308. package/lib/azure-virtualnetwork/lib/peering.js +32 -0
  309. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.d.ts +1 -0
  310. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +48 -0
  311. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +5 -0
  312. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +88 -0
  313. package/lib/core-azure/index.d.ts +1 -0
  314. package/lib/core-azure/index.js +18 -0
  315. package/lib/core-azure/lib/diagsettings.d.ts +52 -0
  316. package/lib/core-azure/lib/diagsettings.js +46 -0
  317. package/lib/core-azure/lib/index.d.ts +3 -0
  318. package/lib/core-azure/lib/index.js +20 -0
  319. package/lib/core-azure/lib/rbac.d.ts +32 -0
  320. package/lib/core-azure/lib/rbac.js +30 -0
  321. package/lib/core-azure/lib/resource.d.ts +17 -0
  322. package/lib/core-azure/lib/resource.js +74 -0
  323. package/lib/core-azure/test/AzureResource.spec.d.ts +1 -0
  324. package/lib/core-azure/test/AzureResource.spec.js +19 -0
  325. package/lib/core-azure/test/ExampleAzureResource.d.ts +5 -0
  326. package/lib/core-azure/test/ExampleAzureResource.js +67 -0
  327. package/lib/index.d.ts +18 -0
  328. package/lib/index.js +22 -0
  329. package/lib/testing/index.d.ts +6 -0
  330. package/lib/testing/index.js +18 -0
  331. package/lib/util/azureTenantIdHelpers.d.ts +2 -0
  332. package/lib/util/azureTenantIdHelpers.js +34 -0
  333. package/lib/util/randomName.d.ts +1 -0
  334. package/lib/util/randomName.js +13 -0
  335. package/node_modules/moment/CHANGELOG.md +996 -0
  336. package/node_modules/moment/LICENSE +22 -0
  337. package/node_modules/moment/README.md +55 -0
  338. package/node_modules/moment/dist/locale/af.js +71 -0
  339. package/node_modules/moment/dist/locale/ar-dz.js +156 -0
  340. package/node_modules/moment/dist/locale/ar-kw.js +55 -0
  341. package/node_modules/moment/dist/locale/ar-ly.js +171 -0
  342. package/node_modules/moment/dist/locale/ar-ma.js +56 -0
  343. package/node_modules/moment/dist/locale/ar-ps.js +112 -0
  344. package/node_modules/moment/dist/locale/ar-sa.js +105 -0
  345. package/node_modules/moment/dist/locale/ar-tn.js +55 -0
  346. package/node_modules/moment/dist/locale/ar.js +189 -0
  347. package/node_modules/moment/dist/locale/az.js +102 -0
  348. package/node_modules/moment/dist/locale/be.js +142 -0
  349. package/node_modules/moment/dist/locale/bg.js +87 -0
  350. package/node_modules/moment/dist/locale/bm.js +52 -0
  351. package/node_modules/moment/dist/locale/bn-bd.js +129 -0
  352. package/node_modules/moment/dist/locale/bn.js +119 -0
  353. package/node_modules/moment/dist/locale/bo.js +124 -0
  354. package/node_modules/moment/dist/locale/br.js +168 -0
  355. package/node_modules/moment/dist/locale/bs.js +160 -0
  356. package/node_modules/moment/dist/locale/ca.js +100 -0
  357. package/node_modules/moment/dist/locale/cs.js +181 -0
  358. package/node_modules/moment/dist/locale/cv.js +63 -0
  359. package/node_modules/moment/dist/locale/cy.js +98 -0
  360. package/node_modules/moment/dist/locale/da.js +53 -0
  361. package/node_modules/moment/dist/locale/de-at.js +79 -0
  362. package/node_modules/moment/dist/locale/de-ch.js +78 -0
  363. package/node_modules/moment/dist/locale/de.js +78 -0
  364. package/node_modules/moment/dist/locale/dv.js +90 -0
  365. package/node_modules/moment/dist/locale/el.js +106 -0
  366. package/node_modules/moment/dist/locale/en-au.js +68 -0
  367. package/node_modules/moment/dist/locale/en-ca.js +64 -0
  368. package/node_modules/moment/dist/locale/en-gb.js +68 -0
  369. package/node_modules/moment/dist/locale/en-ie.js +68 -0
  370. package/node_modules/moment/dist/locale/en-il.js +64 -0
  371. package/node_modules/moment/dist/locale/en-in.js +68 -0
  372. package/node_modules/moment/dist/locale/en-nz.js +68 -0
  373. package/node_modules/moment/dist/locale/en-sg.js +68 -0
  374. package/node_modules/moment/dist/locale/eo.js +68 -0
  375. package/node_modules/moment/dist/locale/es-do.js +108 -0
  376. package/node_modules/moment/dist/locale/es-mx.js +110 -0
  377. package/node_modules/moment/dist/locale/es-us.js +110 -0
  378. package/node_modules/moment/dist/locale/es.js +110 -0
  379. package/node_modules/moment/dist/locale/et.js +78 -0
  380. package/node_modules/moment/dist/locale/eu.js +65 -0
  381. package/node_modules/moment/dist/locale/fa.js +113 -0
  382. package/node_modules/moment/dist/locale/fi.js +124 -0
  383. package/node_modules/moment/dist/locale/fil.js +58 -0
  384. package/node_modules/moment/dist/locale/fo.js +57 -0
  385. package/node_modules/moment/dist/locale/fr-ca.js +70 -0
  386. package/node_modules/moment/dist/locale/fr-ch.js +74 -0
  387. package/node_modules/moment/dist/locale/fr.js +108 -0
  388. package/node_modules/moment/dist/locale/fy.js +75 -0
  389. package/node_modules/moment/dist/locale/ga.js +95 -0
  390. package/node_modules/moment/dist/locale/gd.js +95 -0
  391. package/node_modules/moment/dist/locale/gl.js +75 -0
  392. package/node_modules/moment/dist/locale/gom-deva.js +126 -0
  393. package/node_modules/moment/dist/locale/gom-latn.js +124 -0
  394. package/node_modules/moment/dist/locale/gu.js +122 -0
  395. package/node_modules/moment/dist/locale/he.js +94 -0
  396. package/node_modules/moment/dist/locale/hi.js +168 -0
  397. package/node_modules/moment/dist/locale/hr.js +156 -0
  398. package/node_modules/moment/dist/locale/hu.js +118 -0
  399. package/node_modules/moment/dist/locale/hy-am.js +94 -0
  400. package/node_modules/moment/dist/locale/id.js +76 -0
  401. package/node_modules/moment/dist/locale/is.js +140 -0
  402. package/node_modules/moment/dist/locale/it-ch.js +64 -0
  403. package/node_modules/moment/dist/locale/it.js +106 -0
  404. package/node_modules/moment/dist/locale/ja.js +148 -0
  405. package/node_modules/moment/dist/locale/jv.js +76 -0
  406. package/node_modules/moment/dist/locale/ka.js +92 -0
  407. package/node_modules/moment/dist/locale/kk.js +82 -0
  408. package/node_modules/moment/dist/locale/km.js +103 -0
  409. package/node_modules/moment/dist/locale/kn.js +124 -0
  410. package/node_modules/moment/dist/locale/ko.js +75 -0
  411. package/node_modules/moment/dist/locale/ku-kmr.js +121 -0
  412. package/node_modules/moment/dist/locale/ku.js +118 -0
  413. package/node_modules/moment/dist/locale/ky.js +84 -0
  414. package/node_modules/moment/dist/locale/lb.js +137 -0
  415. package/node_modules/moment/dist/locale/lo.js +66 -0
  416. package/node_modules/moment/dist/locale/lt.js +125 -0
  417. package/node_modules/moment/dist/locale/lv.js +94 -0
  418. package/node_modules/moment/dist/locale/me.js +117 -0
  419. package/node_modules/moment/dist/locale/mi.js +60 -0
  420. package/node_modules/moment/dist/locale/mk.js +85 -0
  421. package/node_modules/moment/dist/locale/ml.js +82 -0
  422. package/node_modules/moment/dist/locale/mn.js +100 -0
  423. package/node_modules/moment/dist/locale/mr.js +203 -0
  424. package/node_modules/moment/dist/locale/ms-my.js +76 -0
  425. package/node_modules/moment/dist/locale/ms.js +75 -0
  426. package/node_modules/moment/dist/locale/mt.js +56 -0
  427. package/node_modules/moment/dist/locale/my.js +91 -0
  428. package/node_modules/moment/dist/locale/nb.js +60 -0
  429. package/node_modules/moment/dist/locale/ne.js +121 -0
  430. package/node_modules/moment/dist/locale/nl-be.js +102 -0
  431. package/node_modules/moment/dist/locale/nl.js +104 -0
  432. package/node_modules/moment/dist/locale/nn.js +59 -0
  433. package/node_modules/moment/dist/locale/oc-lnc.js +85 -0
  434. package/node_modules/moment/dist/locale/pa-in.js +122 -0
  435. package/node_modules/moment/dist/locale/pl.js +140 -0
  436. package/node_modules/moment/dist/locale/pt-br.js +58 -0
  437. package/node_modules/moment/dist/locale/pt.js +63 -0
  438. package/node_modules/moment/dist/locale/ro.js +76 -0
  439. package/node_modules/moment/dist/locale/ru.js +213 -0
  440. package/node_modules/moment/dist/locale/sd.js +81 -0
  441. package/node_modules/moment/dist/locale/se.js +57 -0
  442. package/node_modules/moment/dist/locale/si.js +69 -0
  443. package/node_modules/moment/dist/locale/sk.js +145 -0
  444. package/node_modules/moment/dist/locale/sl.js +171 -0
  445. package/node_modules/moment/dist/locale/sq.js +65 -0
  446. package/node_modules/moment/dist/locale/sr-cyrl.js +127 -0
  447. package/node_modules/moment/dist/locale/sr.js +129 -0
  448. package/node_modules/moment/dist/locale/ss.js +84 -0
  449. package/node_modules/moment/dist/locale/sv.js +68 -0
  450. package/node_modules/moment/dist/locale/sw.js +55 -0
  451. package/node_modules/moment/dist/locale/ta.js +131 -0
  452. package/node_modules/moment/dist/locale/te.js +88 -0
  453. package/node_modules/moment/dist/locale/tet.js +68 -0
  454. package/node_modules/moment/dist/locale/tg.js +117 -0
  455. package/node_modules/moment/dist/locale/th.js +65 -0
  456. package/node_modules/moment/dist/locale/tk.js +91 -0
  457. package/node_modules/moment/dist/locale/tl-ph.js +57 -0
  458. package/node_modules/moment/dist/locale/tlh.js +124 -0
  459. package/node_modules/moment/dist/locale/tr.js +106 -0
  460. package/node_modules/moment/dist/locale/tzl.js +89 -0
  461. package/node_modules/moment/dist/locale/tzm-latn.js +54 -0
  462. package/node_modules/moment/dist/locale/tzm.js +54 -0
  463. package/node_modules/moment/dist/locale/ug-cn.js +111 -0
  464. package/node_modules/moment/dist/locale/uk.js +167 -0
  465. package/node_modules/moment/dist/locale/ur.js +82 -0
  466. package/node_modules/moment/dist/locale/uz-latn.js +54 -0
  467. package/node_modules/moment/dist/locale/uz.js +51 -0
  468. package/node_modules/moment/dist/locale/vi.js +80 -0
  469. package/node_modules/moment/dist/locale/x-pseudo.js +73 -0
  470. package/node_modules/moment/dist/locale/yo.js +53 -0
  471. package/node_modules/moment/dist/locale/zh-cn.js +120 -0
  472. package/node_modules/moment/dist/locale/zh-hk.js +101 -0
  473. package/node_modules/moment/dist/locale/zh-mo.js +100 -0
  474. package/node_modules/moment/dist/locale/zh-tw.js +99 -0
  475. package/node_modules/moment/dist/moment.js +5680 -0
  476. package/node_modules/moment/ender.js +1 -0
  477. package/node_modules/moment/locale/af.js +82 -0
  478. package/node_modules/moment/locale/ar-dz.js +167 -0
  479. package/node_modules/moment/locale/ar-kw.js +66 -0
  480. package/node_modules/moment/locale/ar-ly.js +182 -0
  481. package/node_modules/moment/locale/ar-ma.js +67 -0
  482. package/node_modules/moment/locale/ar-ps.js +123 -0
  483. package/node_modules/moment/locale/ar-sa.js +116 -0
  484. package/node_modules/moment/locale/ar-tn.js +66 -0
  485. package/node_modules/moment/locale/ar.js +200 -0
  486. package/node_modules/moment/locale/az.js +113 -0
  487. package/node_modules/moment/locale/be.js +153 -0
  488. package/node_modules/moment/locale/bg.js +98 -0
  489. package/node_modules/moment/locale/bm.js +62 -0
  490. package/node_modules/moment/locale/bn-bd.js +140 -0
  491. package/node_modules/moment/locale/bn.js +130 -0
  492. package/node_modules/moment/locale/bo.js +135 -0
  493. package/node_modules/moment/locale/br.js +179 -0
  494. package/node_modules/moment/locale/bs.js +171 -0
  495. package/node_modules/moment/locale/ca.js +111 -0
  496. package/node_modules/moment/locale/cs.js +192 -0
  497. package/node_modules/moment/locale/cv.js +74 -0
  498. package/node_modules/moment/locale/cy.js +109 -0
  499. package/node_modules/moment/locale/da.js +64 -0
  500. package/node_modules/moment/locale/de-at.js +90 -0
  501. package/node_modules/moment/locale/de-ch.js +87 -0
  502. package/node_modules/moment/locale/de.js +89 -0
  503. package/node_modules/moment/locale/dv.js +101 -0
  504. package/node_modules/moment/locale/el.js +117 -0
  505. package/node_modules/moment/locale/en-au.js +79 -0
  506. package/node_modules/moment/locale/en-ca.js +75 -0
  507. package/node_modules/moment/locale/en-gb.js +79 -0
  508. package/node_modules/moment/locale/en-ie.js +79 -0
  509. package/node_modules/moment/locale/en-il.js +75 -0
  510. package/node_modules/moment/locale/en-in.js +79 -0
  511. package/node_modules/moment/locale/en-nz.js +79 -0
  512. package/node_modules/moment/locale/en-sg.js +79 -0
  513. package/node_modules/moment/locale/eo.js +79 -0
  514. package/node_modules/moment/locale/es-do.js +119 -0
  515. package/node_modules/moment/locale/es-mx.js +121 -0
  516. package/node_modules/moment/locale/es-us.js +121 -0
  517. package/node_modules/moment/locale/es.js +121 -0
  518. package/node_modules/moment/locale/et.js +89 -0
  519. package/node_modules/moment/locale/eu.js +76 -0
  520. package/node_modules/moment/locale/fa.js +124 -0
  521. package/node_modules/moment/locale/fi.js +135 -0
  522. package/node_modules/moment/locale/fil.js +69 -0
  523. package/node_modules/moment/locale/fo.js +68 -0
  524. package/node_modules/moment/locale/fr-ca.js +81 -0
  525. package/node_modules/moment/locale/fr-ch.js +85 -0
  526. package/node_modules/moment/locale/fr.js +119 -0
  527. package/node_modules/moment/locale/fy.js +86 -0
  528. package/node_modules/moment/locale/ga.js +106 -0
  529. package/node_modules/moment/locale/gd.js +106 -0
  530. package/node_modules/moment/locale/gl.js +86 -0
  531. package/node_modules/moment/locale/gom-deva.js +137 -0
  532. package/node_modules/moment/locale/gom-latn.js +135 -0
  533. package/node_modules/moment/locale/gu.js +133 -0
  534. package/node_modules/moment/locale/he.js +105 -0
  535. package/node_modules/moment/locale/hi.js +179 -0
  536. package/node_modules/moment/locale/hr.js +167 -0
  537. package/node_modules/moment/locale/hu.js +129 -0
  538. package/node_modules/moment/locale/hy-am.js +105 -0
  539. package/node_modules/moment/locale/id.js +87 -0
  540. package/node_modules/moment/locale/is.js +151 -0
  541. package/node_modules/moment/locale/it-ch.js +75 -0
  542. package/node_modules/moment/locale/it.js +117 -0
  543. package/node_modules/moment/locale/ja.js +159 -0
  544. package/node_modules/moment/locale/jv.js +87 -0
  545. package/node_modules/moment/locale/ka.js +103 -0
  546. package/node_modules/moment/locale/kk.js +93 -0
  547. package/node_modules/moment/locale/km.js +114 -0
  548. package/node_modules/moment/locale/kn.js +135 -0
  549. package/node_modules/moment/locale/ko.js +86 -0
  550. package/node_modules/moment/locale/ku-kmr.js +125 -0
  551. package/node_modules/moment/locale/ku.js +129 -0
  552. package/node_modules/moment/locale/ky.js +95 -0
  553. package/node_modules/moment/locale/lb.js +148 -0
  554. package/node_modules/moment/locale/lo.js +77 -0
  555. package/node_modules/moment/locale/lt.js +136 -0
  556. package/node_modules/moment/locale/lv.js +105 -0
  557. package/node_modules/moment/locale/me.js +128 -0
  558. package/node_modules/moment/locale/mi.js +71 -0
  559. package/node_modules/moment/locale/mk.js +97 -0
  560. package/node_modules/moment/locale/ml.js +93 -0
  561. package/node_modules/moment/locale/mn.js +111 -0
  562. package/node_modules/moment/locale/mr.js +214 -0
  563. package/node_modules/moment/locale/ms-my.js +87 -0
  564. package/node_modules/moment/locale/ms.js +86 -0
  565. package/node_modules/moment/locale/mt.js +67 -0
  566. package/node_modules/moment/locale/my.js +102 -0
  567. package/node_modules/moment/locale/nb.js +71 -0
  568. package/node_modules/moment/locale/ne.js +132 -0
  569. package/node_modules/moment/locale/nl-be.js +113 -0
  570. package/node_modules/moment/locale/nl.js +115 -0
  571. package/node_modules/moment/locale/nn.js +70 -0
  572. package/node_modules/moment/locale/oc-lnc.js +96 -0
  573. package/node_modules/moment/locale/pa-in.js +133 -0
  574. package/node_modules/moment/locale/pl.js +151 -0
  575. package/node_modules/moment/locale/pt-br.js +69 -0
  576. package/node_modules/moment/locale/pt.js +74 -0
  577. package/node_modules/moment/locale/ro.js +87 -0
  578. package/node_modules/moment/locale/ru.js +224 -0
  579. package/node_modules/moment/locale/sd.js +92 -0
  580. package/node_modules/moment/locale/se.js +68 -0
  581. package/node_modules/moment/locale/si.js +80 -0
  582. package/node_modules/moment/locale/sk.js +156 -0
  583. package/node_modules/moment/locale/sl.js +182 -0
  584. package/node_modules/moment/locale/sq.js +76 -0
  585. package/node_modules/moment/locale/sr-cyrl.js +138 -0
  586. package/node_modules/moment/locale/sr.js +140 -0
  587. package/node_modules/moment/locale/ss.js +95 -0
  588. package/node_modules/moment/locale/sv.js +79 -0
  589. package/node_modules/moment/locale/sw.js +66 -0
  590. package/node_modules/moment/locale/ta.js +142 -0
  591. package/node_modules/moment/locale/te.js +99 -0
  592. package/node_modules/moment/locale/tet.js +79 -0
  593. package/node_modules/moment/locale/tg.js +128 -0
  594. package/node_modules/moment/locale/th.js +76 -0
  595. package/node_modules/moment/locale/tk.js +102 -0
  596. package/node_modules/moment/locale/tl-ph.js +68 -0
  597. package/node_modules/moment/locale/tlh.js +135 -0
  598. package/node_modules/moment/locale/tr.js +117 -0
  599. package/node_modules/moment/locale/tzl.js +100 -0
  600. package/node_modules/moment/locale/tzm-latn.js +65 -0
  601. package/node_modules/moment/locale/tzm.js +65 -0
  602. package/node_modules/moment/locale/ug-cn.js +122 -0
  603. package/node_modules/moment/locale/uk.js +178 -0
  604. package/node_modules/moment/locale/ur.js +93 -0
  605. package/node_modules/moment/locale/uz-latn.js +65 -0
  606. package/node_modules/moment/locale/uz.js +62 -0
  607. package/node_modules/moment/locale/vi.js +91 -0
  608. package/node_modules/moment/locale/x-pseudo.js +84 -0
  609. package/node_modules/moment/locale/yo.js +64 -0
  610. package/node_modules/moment/locale/zh-cn.js +131 -0
  611. package/node_modules/moment/locale/zh-hk.js +112 -0
  612. package/node_modules/moment/locale/zh-mo.js +111 -0
  613. package/node_modules/moment/locale/zh-tw.js +110 -0
  614. package/node_modules/moment/min/locales.js +12800 -0
  615. package/node_modules/moment/min/locales.min.js +2 -0
  616. package/node_modules/moment/min/locales.min.js.map +1 -0
  617. package/node_modules/moment/min/moment-with-locales.js +18472 -0
  618. package/node_modules/moment/min/moment-with-locales.min.js +2 -0
  619. package/node_modules/moment/min/moment-with-locales.min.js.map +1 -0
  620. package/node_modules/moment/min/moment.min.js +2 -0
  621. package/node_modules/moment/min/moment.min.js.map +1 -0
  622. package/node_modules/moment/moment.d.ts +796 -0
  623. package/node_modules/moment/moment.js +5688 -0
  624. package/node_modules/moment/package.js +11 -0
  625. package/node_modules/moment/package.json +116 -0
  626. package/node_modules/moment/src/lib/create/check-overflow.js +57 -0
  627. package/node_modules/moment/src/lib/create/date-from-array.js +35 -0
  628. package/node_modules/moment/src/lib/create/from-anything.js +117 -0
  629. package/node_modules/moment/src/lib/create/from-array.js +187 -0
  630. package/node_modules/moment/src/lib/create/from-object.js +20 -0
  631. package/node_modules/moment/src/lib/create/from-string-and-array.js +67 -0
  632. package/node_modules/moment/src/lib/create/from-string-and-format.js +135 -0
  633. package/node_modules/moment/src/lib/create/from-string.js +258 -0
  634. package/node_modules/moment/src/lib/create/local.js +5 -0
  635. package/node_modules/moment/src/lib/create/parsing-flags.js +28 -0
  636. package/node_modules/moment/src/lib/create/utc.js +5 -0
  637. package/node_modules/moment/src/lib/create/valid.js +51 -0
  638. package/node_modules/moment/src/lib/duration/abs.js +18 -0
  639. package/node_modules/moment/src/lib/duration/add-subtract.js +21 -0
  640. package/node_modules/moment/src/lib/duration/as.js +76 -0
  641. package/node_modules/moment/src/lib/duration/bubble.js +68 -0
  642. package/node_modules/moment/src/lib/duration/clone.js +5 -0
  643. package/node_modules/moment/src/lib/duration/constructor.js +42 -0
  644. package/node_modules/moment/src/lib/duration/create.js +133 -0
  645. package/node_modules/moment/src/lib/duration/duration.js +16 -0
  646. package/node_modules/moment/src/lib/duration/get.js +27 -0
  647. package/node_modules/moment/src/lib/duration/humanize.js +114 -0
  648. package/node_modules/moment/src/lib/duration/iso-string.js +68 -0
  649. package/node_modules/moment/src/lib/duration/prototype.js +78 -0
  650. package/node_modules/moment/src/lib/duration/valid.js +55 -0
  651. package/node_modules/moment/src/lib/format/format.js +104 -0
  652. package/node_modules/moment/src/lib/locale/base-config.js +41 -0
  653. package/node_modules/moment/src/lib/locale/calendar.js +15 -0
  654. package/node_modules/moment/src/lib/locale/constructor.js +5 -0
  655. package/node_modules/moment/src/lib/locale/en.js +39 -0
  656. package/node_modules/moment/src/lib/locale/formats.js +36 -0
  657. package/node_modules/moment/src/lib/locale/invalid.js +5 -0
  658. package/node_modules/moment/src/lib/locale/lists.js +93 -0
  659. package/node_modules/moment/src/lib/locale/locale.js +45 -0
  660. package/node_modules/moment/src/lib/locale/locales.js +249 -0
  661. package/node_modules/moment/src/lib/locale/ordinal.js +8 -0
  662. package/node_modules/moment/src/lib/locale/pre-post-format.js +3 -0
  663. package/node_modules/moment/src/lib/locale/prototype.js +88 -0
  664. package/node_modules/moment/src/lib/locale/relative.js +32 -0
  665. package/node_modules/moment/src/lib/locale/set.js +56 -0
  666. package/node_modules/moment/src/lib/moment/add-subtract.js +61 -0
  667. package/node_modules/moment/src/lib/moment/calendar.js +53 -0
  668. package/node_modules/moment/src/lib/moment/clone.js +5 -0
  669. package/node_modules/moment/src/lib/moment/compare.js +72 -0
  670. package/node_modules/moment/src/lib/moment/constructor.js +80 -0
  671. package/node_modules/moment/src/lib/moment/creation-data.js +9 -0
  672. package/node_modules/moment/src/lib/moment/diff.js +79 -0
  673. package/node_modules/moment/src/lib/moment/format.js +78 -0
  674. package/node_modules/moment/src/lib/moment/from.js +20 -0
  675. package/node_modules/moment/src/lib/moment/get-set.js +117 -0
  676. package/node_modules/moment/src/lib/moment/locale.js +34 -0
  677. package/node_modules/moment/src/lib/moment/min-max.js +62 -0
  678. package/node_modules/moment/src/lib/moment/moment.js +28 -0
  679. package/node_modules/moment/src/lib/moment/now.js +3 -0
  680. package/node_modules/moment/src/lib/moment/prototype.js +197 -0
  681. package/node_modules/moment/src/lib/moment/start-end-of.js +164 -0
  682. package/node_modules/moment/src/lib/moment/to-type.js +42 -0
  683. package/node_modules/moment/src/lib/moment/to.js +20 -0
  684. package/node_modules/moment/src/lib/moment/valid.js +15 -0
  685. package/node_modules/moment/src/lib/parse/regex.js +84 -0
  686. package/node_modules/moment/src/lib/parse/token.js +36 -0
  687. package/node_modules/moment/src/lib/units/aliases.js +75 -0
  688. package/node_modules/moment/src/lib/units/constants.js +9 -0
  689. package/node_modules/moment/src/lib/units/day-of-month.js +35 -0
  690. package/node_modules/moment/src/lib/units/day-of-week.js +432 -0
  691. package/node_modules/moment/src/lib/units/day-of-year.js +28 -0
  692. package/node_modules/moment/src/lib/units/era.js +293 -0
  693. package/node_modules/moment/src/lib/units/hour.js +152 -0
  694. package/node_modules/moment/src/lib/units/millisecond.js +66 -0
  695. package/node_modules/moment/src/lib/units/minute.js +24 -0
  696. package/node_modules/moment/src/lib/units/month.js +340 -0
  697. package/node_modules/moment/src/lib/units/offset.js +249 -0
  698. package/node_modules/moment/src/lib/units/priorities.js +34 -0
  699. package/node_modules/moment/src/lib/units/quarter.js +24 -0
  700. package/node_modules/moment/src/lib/units/second.js +24 -0
  701. package/node_modules/moment/src/lib/units/timestamp.js +20 -0
  702. package/node_modules/moment/src/lib/units/timezone.js +16 -0
  703. package/node_modules/moment/src/lib/units/units.js +20 -0
  704. package/node_modules/moment/src/lib/units/week-calendar-utils.js +66 -0
  705. package/node_modules/moment/src/lib/units/week-year.js +128 -0
  706. package/node_modules/moment/src/lib/units/week.js +62 -0
  707. package/node_modules/moment/src/lib/units/year.js +75 -0
  708. package/node_modules/moment/src/lib/utils/abs-ceil.js +7 -0
  709. package/node_modules/moment/src/lib/utils/abs-floor.js +8 -0
  710. package/node_modules/moment/src/lib/utils/abs-round.js +7 -0
  711. package/node_modules/moment/src/lib/utils/compare-arrays.js +18 -0
  712. package/node_modules/moment/src/lib/utils/defaults.js +10 -0
  713. package/node_modules/moment/src/lib/utils/deprecate.js +69 -0
  714. package/node_modules/moment/src/lib/utils/extend.js +19 -0
  715. package/node_modules/moment/src/lib/utils/has-own-prop.js +3 -0
  716. package/node_modules/moment/src/lib/utils/hooks.js +13 -0
  717. package/node_modules/moment/src/lib/utils/index-of.js +18 -0
  718. package/node_modules/moment/src/lib/utils/is-array.js +6 -0
  719. package/node_modules/moment/src/lib/utils/is-calendar-spec.js +25 -0
  720. package/node_modules/moment/src/lib/utils/is-date.js +6 -0
  721. package/node_modules/moment/src/lib/utils/is-function.js +6 -0
  722. package/node_modules/moment/src/lib/utils/is-leap-year.js +3 -0
  723. package/node_modules/moment/src/lib/utils/is-moment-input.js +75 -0
  724. package/node_modules/moment/src/lib/utils/is-number.js +6 -0
  725. package/node_modules/moment/src/lib/utils/is-object-empty.js +15 -0
  726. package/node_modules/moment/src/lib/utils/is-object.js +8 -0
  727. package/node_modules/moment/src/lib/utils/is-string.js +3 -0
  728. package/node_modules/moment/src/lib/utils/is-undefined.js +3 -0
  729. package/node_modules/moment/src/lib/utils/keys.js +20 -0
  730. package/node_modules/moment/src/lib/utils/map.js +9 -0
  731. package/node_modules/moment/src/lib/utils/mod.js +3 -0
  732. package/node_modules/moment/src/lib/utils/some.js +20 -0
  733. package/node_modules/moment/src/lib/utils/to-int.js +12 -0
  734. package/node_modules/moment/src/lib/utils/zero-fill.js +10 -0
  735. package/node_modules/moment/src/locale/af.js +71 -0
  736. package/node_modules/moment/src/locale/ar-dz.js +156 -0
  737. package/node_modules/moment/src/locale/ar-kw.js +55 -0
  738. package/node_modules/moment/src/locale/ar-ly.js +171 -0
  739. package/node_modules/moment/src/locale/ar-ma.js +56 -0
  740. package/node_modules/moment/src/locale/ar-ps.js +112 -0
  741. package/node_modules/moment/src/locale/ar-sa.js +105 -0
  742. package/node_modules/moment/src/locale/ar-tn.js +55 -0
  743. package/node_modules/moment/src/locale/ar.js +189 -0
  744. package/node_modules/moment/src/locale/az.js +102 -0
  745. package/node_modules/moment/src/locale/be.js +142 -0
  746. package/node_modules/moment/src/locale/bg.js +87 -0
  747. package/node_modules/moment/src/locale/bm.js +52 -0
  748. package/node_modules/moment/src/locale/bn-bd.js +129 -0
  749. package/node_modules/moment/src/locale/bn.js +119 -0
  750. package/node_modules/moment/src/locale/bo.js +124 -0
  751. package/node_modules/moment/src/locale/br.js +168 -0
  752. package/node_modules/moment/src/locale/bs.js +160 -0
  753. package/node_modules/moment/src/locale/ca.js +100 -0
  754. package/node_modules/moment/src/locale/cs.js +181 -0
  755. package/node_modules/moment/src/locale/cv.js +63 -0
  756. package/node_modules/moment/src/locale/cy.js +98 -0
  757. package/node_modules/moment/src/locale/da.js +53 -0
  758. package/node_modules/moment/src/locale/de-at.js +79 -0
  759. package/node_modules/moment/src/locale/de-ch.js +78 -0
  760. package/node_modules/moment/src/locale/de.js +78 -0
  761. package/node_modules/moment/src/locale/dv.js +90 -0
  762. package/node_modules/moment/src/locale/el.js +106 -0
  763. package/node_modules/moment/src/locale/en-au.js +68 -0
  764. package/node_modules/moment/src/locale/en-ca.js +64 -0
  765. package/node_modules/moment/src/locale/en-gb.js +68 -0
  766. package/node_modules/moment/src/locale/en-ie.js +68 -0
  767. package/node_modules/moment/src/locale/en-il.js +64 -0
  768. package/node_modules/moment/src/locale/en-in.js +68 -0
  769. package/node_modules/moment/src/locale/en-nz.js +68 -0
  770. package/node_modules/moment/src/locale/en-sg.js +68 -0
  771. package/node_modules/moment/src/locale/eo.js +68 -0
  772. package/node_modules/moment/src/locale/es-do.js +108 -0
  773. package/node_modules/moment/src/locale/es-mx.js +110 -0
  774. package/node_modules/moment/src/locale/es-us.js +110 -0
  775. package/node_modules/moment/src/locale/es.js +110 -0
  776. package/node_modules/moment/src/locale/et.js +78 -0
  777. package/node_modules/moment/src/locale/eu.js +65 -0
  778. package/node_modules/moment/src/locale/fa.js +113 -0
  779. package/node_modules/moment/src/locale/fi.js +124 -0
  780. package/node_modules/moment/src/locale/fil.js +58 -0
  781. package/node_modules/moment/src/locale/fo.js +57 -0
  782. package/node_modules/moment/src/locale/fr-ca.js +70 -0
  783. package/node_modules/moment/src/locale/fr-ch.js +74 -0
  784. package/node_modules/moment/src/locale/fr.js +108 -0
  785. package/node_modules/moment/src/locale/fy.js +75 -0
  786. package/node_modules/moment/src/locale/ga.js +95 -0
  787. package/node_modules/moment/src/locale/gd.js +95 -0
  788. package/node_modules/moment/src/locale/gl.js +75 -0
  789. package/node_modules/moment/src/locale/gom-deva.js +126 -0
  790. package/node_modules/moment/src/locale/gom-latn.js +124 -0
  791. package/node_modules/moment/src/locale/gu.js +122 -0
  792. package/node_modules/moment/src/locale/he.js +94 -0
  793. package/node_modules/moment/src/locale/hi.js +168 -0
  794. package/node_modules/moment/src/locale/hr.js +156 -0
  795. package/node_modules/moment/src/locale/hu.js +118 -0
  796. package/node_modules/moment/src/locale/hy-am.js +94 -0
  797. package/node_modules/moment/src/locale/id.js +76 -0
  798. package/node_modules/moment/src/locale/is.js +140 -0
  799. package/node_modules/moment/src/locale/it-ch.js +64 -0
  800. package/node_modules/moment/src/locale/it.js +106 -0
  801. package/node_modules/moment/src/locale/ja.js +148 -0
  802. package/node_modules/moment/src/locale/jv.js +76 -0
  803. package/node_modules/moment/src/locale/ka.js +92 -0
  804. package/node_modules/moment/src/locale/kk.js +82 -0
  805. package/node_modules/moment/src/locale/km.js +103 -0
  806. package/node_modules/moment/src/locale/kn.js +124 -0
  807. package/node_modules/moment/src/locale/ko.js +75 -0
  808. package/node_modules/moment/src/locale/ku-kmr.js +121 -0
  809. package/node_modules/moment/src/locale/ku.js +118 -0
  810. package/node_modules/moment/src/locale/ky.js +84 -0
  811. package/node_modules/moment/src/locale/lb.js +137 -0
  812. package/node_modules/moment/src/locale/lo.js +66 -0
  813. package/node_modules/moment/src/locale/lt.js +125 -0
  814. package/node_modules/moment/src/locale/lv.js +94 -0
  815. package/node_modules/moment/src/locale/me.js +117 -0
  816. package/node_modules/moment/src/locale/mi.js +60 -0
  817. package/node_modules/moment/src/locale/mk.js +85 -0
  818. package/node_modules/moment/src/locale/ml.js +82 -0
  819. package/node_modules/moment/src/locale/mn.js +100 -0
  820. package/node_modules/moment/src/locale/mr.js +203 -0
  821. package/node_modules/moment/src/locale/ms-my.js +76 -0
  822. package/node_modules/moment/src/locale/ms.js +75 -0
  823. package/node_modules/moment/src/locale/mt.js +56 -0
  824. package/node_modules/moment/src/locale/my.js +91 -0
  825. package/node_modules/moment/src/locale/nb.js +60 -0
  826. package/node_modules/moment/src/locale/ne.js +121 -0
  827. package/node_modules/moment/src/locale/nl-be.js +102 -0
  828. package/node_modules/moment/src/locale/nl.js +104 -0
  829. package/node_modules/moment/src/locale/nn.js +59 -0
  830. package/node_modules/moment/src/locale/oc-lnc.js +85 -0
  831. package/node_modules/moment/src/locale/pa-in.js +122 -0
  832. package/node_modules/moment/src/locale/pl.js +140 -0
  833. package/node_modules/moment/src/locale/pt-br.js +58 -0
  834. package/node_modules/moment/src/locale/pt.js +63 -0
  835. package/node_modules/moment/src/locale/ro.js +76 -0
  836. package/node_modules/moment/src/locale/ru.js +213 -0
  837. package/node_modules/moment/src/locale/sd.js +81 -0
  838. package/node_modules/moment/src/locale/se.js +57 -0
  839. package/node_modules/moment/src/locale/si.js +69 -0
  840. package/node_modules/moment/src/locale/sk.js +145 -0
  841. package/node_modules/moment/src/locale/sl.js +171 -0
  842. package/node_modules/moment/src/locale/sq.js +65 -0
  843. package/node_modules/moment/src/locale/sr-cyrl.js +127 -0
  844. package/node_modules/moment/src/locale/sr.js +129 -0
  845. package/node_modules/moment/src/locale/ss.js +84 -0
  846. package/node_modules/moment/src/locale/sv.js +68 -0
  847. package/node_modules/moment/src/locale/sw.js +55 -0
  848. package/node_modules/moment/src/locale/ta.js +131 -0
  849. package/node_modules/moment/src/locale/te.js +88 -0
  850. package/node_modules/moment/src/locale/tet.js +68 -0
  851. package/node_modules/moment/src/locale/tg.js +117 -0
  852. package/node_modules/moment/src/locale/th.js +65 -0
  853. package/node_modules/moment/src/locale/tk.js +91 -0
  854. package/node_modules/moment/src/locale/tl-ph.js +57 -0
  855. package/node_modules/moment/src/locale/tlh.js +124 -0
  856. package/node_modules/moment/src/locale/tr.js +106 -0
  857. package/node_modules/moment/src/locale/tzl.js +89 -0
  858. package/node_modules/moment/src/locale/tzm-latn.js +54 -0
  859. package/node_modules/moment/src/locale/tzm.js +54 -0
  860. package/node_modules/moment/src/locale/ug-cn.js +111 -0
  861. package/node_modules/moment/src/locale/uk.js +167 -0
  862. package/node_modules/moment/src/locale/ur.js +82 -0
  863. package/node_modules/moment/src/locale/uz-latn.js +54 -0
  864. package/node_modules/moment/src/locale/uz.js +51 -0
  865. package/node_modules/moment/src/locale/vi.js +80 -0
  866. package/node_modules/moment/src/locale/x-pseudo.js +73 -0
  867. package/node_modules/moment/src/locale/yo.js +53 -0
  868. package/node_modules/moment/src/locale/zh-cn.js +120 -0
  869. package/node_modules/moment/src/locale/zh-hk.js +101 -0
  870. package/node_modules/moment/src/locale/zh-mo.js +100 -0
  871. package/node_modules/moment/src/locale/zh-tw.js +99 -0
  872. package/node_modules/moment/src/moment.js +93 -0
  873. package/node_modules/moment/ts3.1-typings/moment.d.ts +785 -0
  874. package/node_modules/nanoid/LICENSE +20 -0
  875. package/node_modules/nanoid/README.md +38 -0
  876. package/node_modules/nanoid/async/index.browser.js +33 -0
  877. package/node_modules/nanoid/async/index.d.ts +56 -0
  878. package/node_modules/nanoid/async/index.js +34 -0
  879. package/node_modules/nanoid/async/index.native.js +25 -0
  880. package/node_modules/nanoid/bin/nanoid.js +46 -0
  881. package/node_modules/nanoid/index.browser.js +33 -0
  882. package/node_modules/nanoid/index.d.ts +91 -0
  883. package/node_modules/nanoid/index.js +45 -0
  884. package/node_modules/nanoid/nanoid.js +1 -0
  885. package/node_modules/nanoid/non-secure/index.d.ts +33 -0
  886. package/node_modules/nanoid/non-secure/index.js +20 -0
  887. package/node_modules/nanoid/package.json +46 -0
  888. package/node_modules/nanoid/url-alphabet/index.js +2 -0
  889. package/node_modules/ts-md5/LICENSE +21 -0
  890. package/node_modules/ts-md5/README.md +101 -0
  891. package/node_modules/ts-md5/dist/cjs/index.d.ts +3 -0
  892. package/node_modules/ts-md5/dist/cjs/index.js +10 -0
  893. package/node_modules/ts-md5/dist/cjs/index.js.map +1 -0
  894. package/node_modules/ts-md5/dist/cjs/md5.d.ts +70 -0
  895. package/node_modules/ts-md5/dist/cjs/md5.js +429 -0
  896. package/node_modules/ts-md5/dist/cjs/md5.js.map +1 -0
  897. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.d.ts +25 -0
  898. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js +96 -0
  899. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js.map +1 -0
  900. package/node_modules/ts-md5/dist/cjs/parallel_hasher.d.ts +22 -0
  901. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js +69 -0
  902. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js.map +1 -0
  903. package/node_modules/ts-md5/dist/esm/index.d.ts +3 -0
  904. package/node_modules/ts-md5/dist/esm/index.js +4 -0
  905. package/node_modules/ts-md5/dist/esm/index.js.map +1 -0
  906. package/node_modules/ts-md5/dist/esm/md5.d.ts +70 -0
  907. package/node_modules/ts-md5/dist/esm/md5.js +421 -0
  908. package/node_modules/ts-md5/dist/esm/md5.js.map +1 -0
  909. package/node_modules/ts-md5/dist/esm/md5_file_hasher.d.ts +25 -0
  910. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js +89 -0
  911. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js.map +1 -0
  912. package/node_modules/ts-md5/dist/esm/parallel_hasher.d.ts +22 -0
  913. package/node_modules/ts-md5/dist/esm/parallel_hasher.js +64 -0
  914. package/node_modules/ts-md5/dist/esm/parallel_hasher.js.map +1 -0
  915. package/node_modules/ts-md5/dist/md5.js +429 -0
  916. package/node_modules/ts-md5/dist/md5_worker.js +523 -0
  917. package/node_modules/ts-md5/package.json +82 -0
  918. package/node_modules/ts-md5/src/index.ts +4 -0
  919. package/node_modules/ts-md5/src/md5.ts +473 -0
  920. package/node_modules/ts-md5/src/md5_file_hasher.ts +110 -0
  921. package/node_modules/ts-md5/src/parallel_hasher.ts +90 -0
  922. package/node_modules/ts-md5/src/worker.js +20 -0
  923. package/package.json +159 -0
  924. package/scripts/generate-index.js +52 -0
  925. package/setup.js +2 -0
  926. package/tfsec.json +4 -0
  927. package/util/compute.go +106 -0
  928. package/util/terraform.go +213 -0
  929. package/util/util.go +100 -0
@@ -0,0 +1,347 @@
1
+ # CDK Testing Guidelines
2
+
3
+ The purpose of this document is to provide guidelines for writing tests in the CDK library to ensure all modules are of highest quality and reliability standards.
4
+
5
+
6
+ - [Writing Tests](#writing-tests)
7
+ - [Unit Tests](#unit-tests)
8
+ - [Integration Tests](#integration-tests)
9
+ - [End-to-End Tests](#end-to-end-tests)
10
+ - [Testing Pyramid](#testing-pyramid)
11
+ - [Authentication for Tests](#authentication-for-tests)
12
+ - [How to Write Unit Tests](#how-to-write-unit-tests)
13
+ - [Running the Unit Tests](#running-the-unit-tests)
14
+ - [Snapshots](#snapshots)
15
+ - [Integration Tests](#integration-tests-1)
16
+ - [Running the Integration Tests](#running-the-integration-tests)
17
+ - [Further Troubleshooting of Tests](#further-troubleshooting-of-tests)
18
+ - [Randomizing Globally Unique Resource Names](#randomizing-globally-unique-resource-names)
19
+ - [End to End Tests](#end-to-end-tests-1)
20
+
21
+
22
+ ## Writing Tests
23
+
24
+ In the realm of infrastructure development, testing is paramount to ensure that infrastructure code is reliable, maintainable, and scalable. Just like in software development, there are different levels of testing, each with its own purpose and scope. The three primary levels are: Unit Tests, Integration Tests, and End-to-End Tests.
25
+
26
+ ### Unit Tests
27
+ - **Purpose**: Validate individual pieces of infrastructure code in isolation. Unit tests are written in typescript using Jest.
28
+ - **Terraform Commands**:
29
+ - *terraform validate*: Checks syntax and basic semantics.
30
+ - *terraform plan*: Creates an execution plan to verify expected changes.
31
+ - **Snapshot Testing**: Capture the current state or configuration of a module as a "snapshot". On subsequent tests, compare the current state against the saved snapshot to detect any unexpected changes. Useful for catching unintended modifications.
32
+ - **Advantages**:
33
+ Fast execution.
34
+ No interaction with real infrastructure, thus cost-effective.
35
+
36
+ ### Integration Tests
37
+ - **Purpose**: Ensure the construct can be effectively deployed and destroyed within the Cloud provider environment without issues. Integration tests are written in Golang using the Terratest library.
38
+ - **Terraform Commands**:
39
+ - *terraform apply*: Provisions or modifies resources.
40
+ - *Idempotency Check*: Ensures configuration is idempotent by re-running terraform apply.
41
+ - *terraform destroy*: Removes provisioned resources.
42
+ - **Advantages**: Interacts with real infrastructure. Validates real-world scenarios.
43
+
44
+ ### End-to-End Tests
45
+ - **Purpose**: Validate the behavior of an entire infrastructure environment.End-to-End tests are written in Golang using the Terratest library.
46
+ - **Terraform Implementation**:
47
+ Combine multiple modules to build a larger environment. Provision using terraform apply and test the entire setup. Clean up with terraform destroy.
48
+ - **Advantages**: Provides a comprehensive view of the entire infrastructure. Ensures cohesive and functional infrastructure setup.
49
+
50
+ ### Testing Pyramid
51
+
52
+ ![testing pyramid](https://global-uploads.webflow.com/619e15d781b21202de206fb5/6316d9e765cd53d9937e2b6a_The-Testing-Pyramid-Simplified-for-One-and-All.webp)
53
+
54
+ As depicted in the testing pyramid, it's recommended to have:
55
+
56
+ **Many Unit Tests**: They are quick, cheap, and can catch a majority of the issues early in the development cycle.
57
+
58
+ **Fewer Integration Tests**: While they provide valuable insights by interacting with real infrastructure, they are slower and can be costlier.
59
+
60
+ **Very Few End-to-End Tests**: These are the most expensive and time-consuming tests, but they provide a comprehensive view of the entire infrastructure environment.
61
+
62
+ By adhering to this pyramid structure, teams can ensure efficient and effective testing, catching issues early and ensuring robust infrastructure code
63
+
64
+ ## Authentication for Tests
65
+ The tests will use AZ CLI for authentication. Make sure to set the Azure subscription to a dev environment:
66
+ ```
67
+ az account set -s MySubscription
68
+ ```
69
+
70
+ ## How to Write Unit Tests
71
+ Unit tests are written in Typescript using Jest. They consist of a `spec` test file within the module folder under the `test` folder:
72
+
73
+ ```plaintext
74
+ src
75
+ └── modules
76
+ └── azure-resourcegroup
77
+ ├── test
78
+ │ ├── ResourceGroup.test.ts # spec test file
79
+ └── index.ts
80
+ ```
81
+
82
+ Below is a spec test for the resource group construct:
83
+
84
+ ```
85
+ # index.ts
86
+ import { Testing, TerraformStack} from 'cdktf';
87
+ import 'cdktf/lib/testing/adapters/jest';
88
+ import { AzureResourceGroup } from '../';
89
+ import {AzurermProvider} from "@cdktf/provider-azurerm/lib/provider";
90
+
91
+
92
+ describe('Resource Group With Defaults', () => {
93
+ let stack: TerraformStack;
94
+ let fullSynthResult: any;
95
+
96
+ beforeEach(() => {
97
+ const app = Testing.app();
98
+ stack = new TerraformStack(app, "test");
99
+
100
+ new AzurermProvider(stack, "azureFeature", {features: {}});
101
+ new AzureResourceGroup(stack, 'testRG');
102
+
103
+ fullSynthResult = Testing.fullSynth(stack); // Save the result for reuse
104
+ });
105
+
106
+ it("renders a Resource Group with defaults and checks snapshot", () => {
107
+ expect(
108
+ Testing.synth(stack)
109
+ ).toMatchSnapshot(); // Compare the already prepared stack
110
+ });
111
+
112
+ it("check if the produced terraform configuration is valid", () => {
113
+ expect(fullSynthResult).toBeValidTerraform(); // Use the saved result
114
+ });
115
+
116
+ it("check if this can be planned", () => {
117
+ expect(fullSynthResult).toPlanSuccessfully(); // Use the saved result
118
+ });
119
+ });
120
+ ```
121
+ Before each test, a new instance of the `AzureResourceGroup` is created. The stack is then fully synthesized, and the result is stored in `fullSynthResult` to be used for each test. The synthesize process turns the Typescript code into a Terraform JSON configuration that can be deployed with the Terraform cli. The following minimum tests are run for each module:
122
+
123
+ - **Snapshot Test**: The test checks if the rendered Resource Group matches a previously saved snapshot. This ensures that any changes to the stack's output are intentional and reviewed.
124
+ - **Terraform Validate**: Runs the `terraform validate` command against the synthesized Terraform configuration. Verifies that the synthesized result produces a valid Terraform configuration.
125
+ - **Terraform Plan**: Runs the `terraform plan` command against the synthesized Terraform configuration. Ensures that the Terraform configuration can be successfully planned, indicating that the resources can be provisioned without errors.
126
+
127
+ Its good practice to write at least one test that contains all defaults, meaning only specifying the required inputs. This provides a visualization of how minimal the abstraction can be for the module being tested. The goal is to be able to have as few required inputs as possible for each module to create the best experience for developers.
128
+
129
+ ### Running the Unit Tests
130
+
131
+ You can run all unit tests in the project using the command:
132
+ ```
133
+ npm test
134
+ ```
135
+
136
+ This will run all unit tests for all modules:
137
+ ```
138
+ @lukeorellana_microsoft ➜ /workspaces/terraform-cdk-modules$ npm test
139
+
140
+ > terraform-modules@1.0.0 test
141
+ > jest
142
+
143
+ RUNS src/azure-alerts/test/AzureAlerts.test.ts
144
+ RUNS src/azure-aks-core/test/AzureAksCore.test.ts
145
+ RUNS src/azure-alerts/test/AzureAlerts.test.ts
146
+ RUNS src/azure-aks-core/test/AzureAksCore.test.ts
147
+ RUNS src/azure-alerts/test/AzureAlerts.test.ts
148
+ RUNS src/azure-aks-core/test/AzureAksCore.test.ts
149
+ PASS src/azuredevops-pipelines/__tests__/pipelines.test.ts (11.077 s)
150
+
151
+ Test Suites: 1 passed, 1 of 11 total
152
+ Tests: 1 todo, 6 passed, 7 total
153
+ Snapshots: 0 total
154
+ Time: 16 s
155
+ ```
156
+
157
+
158
+
159
+ Alternatively add the test file to the end of the command to only run the tests in that file:
160
+ ```
161
+ npm test src/azure-resourcegroup/test/AzureResourceGroup.spec.ts
162
+ ```
163
+ This allows for fast iteration upon one module in development:
164
+
165
+ ```
166
+ > terraform-core-modules@7.3.0-rc.44 test
167
+ > jest src/azure-resourcegroup/test/AzureResourceGroup.spec.ts
168
+
169
+ PASS src/azure-resourcegroup/test/AzureResourceGroup.spec.ts (23.914 s)
170
+ Resource Group With Defaults
171
+ ✓ renders an Resource Group with defaults and checks snapshot (22 ms)
172
+ ✓ check if the produced terraform configuration is valid (5465 ms)
173
+ ✓ check if this can be planned (14608 ms)
174
+
175
+ Test Suites: 1 passed, 1 total
176
+ Tests: 3 passed, 3 total
177
+ Snapshots: 1 passed, 1 total
178
+ Time: 23.955 s, estimated 32 s
179
+ ```
180
+
181
+ ### Snapshots
182
+
183
+ When the test runs, a snapshot file is created in the __snapshots__ folder:
184
+
185
+ ```plaintext
186
+ src
187
+ └── azure-resourcegroup
188
+ ├── test
189
+ │ ├── AzureResourceGroup.spec.ts
190
+ │ └── __snapshots__
191
+ │ └── AzureResourceGroup.test.ts.snap
192
+ └── index.ts
193
+ ```
194
+ All `npm tests` after, will now check the syntheszied configuration against the previously stored snapshot. The test will fail if it doesnt match. In order to update a snapshot type the following command:
195
+ ```
196
+ npm test src/azure-resourcegroup/test/AzureResourceGroup.spec.ts -- -u
197
+ ```
198
+
199
+
200
+
201
+ ## Integration Tests
202
+ Integration tests are written in Golang using the Terratest library. The golang test ends in `_test.go`. An example file is used by the integration test to deploy an example of the construct and test that it works:
203
+
204
+
205
+ ```plaintext
206
+ src
207
+ └── azure-resourcegroup
208
+ ├── test
209
+ │ ├── AzureResourceGroup_test.go
210
+ │ └── ExampleAzureResourceGroup.ts
211
+
212
+ └── index.ts
213
+ ```
214
+
215
+ The integration test will perform the following against the example file:
216
+
217
+ 1. **terraform apply**: The integration test starts by executing a terraform apply using the Example file to set up the infrastructure.
218
+ 2. **terraform plan**: After setup, a terraform plan is run to:
219
+ - Confirm there are no additional changes needed.
220
+ - Ensure the setup is stable and consistent (idempotent).
221
+ - This step is crucial to detect issues like looping bugs, which can arise due to Terraform's declarative nature.
222
+ 3. **terraform destroy**: At the end of the test, terraform destroy is executed.
223
+ - This step removes the test environment and ensures the infrastructure can be cleanly deleted.
224
+ - It's designed to catch common problems that occur when removing infrastructure, especially those related to resource dependencies.
225
+
226
+ You may also checkout the [Terratest](https://github.com/gruntwork-io/terratest/tree/master/test/azure) library for test examples to use against the Azure resources.
227
+
228
+ ### Running the Integration Tests
229
+
230
+ To run integration tests, use the following command in the test directory:
231
+ ```
232
+ /workspaces/…/azure-resourcegroup/test$ go test -v .
233
+ ```
234
+
235
+ This will kick off the integration test to synthesize the example file into Terraform configuration files within the `.tempstacks` folder in the module directory:
236
+
237
+ ```plaintext
238
+ src
239
+ └── azure-resourcegroup
240
+ ├── test
241
+ │ ├── .tempstacks
242
+ │ │ └── stacks
243
+ │ │ └── testAzureResourceGroup
244
+ │ │ └── cdk.tf.json
245
+ │ ├── ExampleAzureResourceGroupStack.ts
246
+ │ └── AzureResourceGroup_test.go
247
+ └── index.ts
248
+ ```
249
+
250
+ The test will then run `tfcdk deploy *` to deploy all stacks, then it will run any API checks to validate the deployed resource followed by a `tfcdk destroy` to clean up all the resources.
251
+
252
+ After the test runs, the `.tempstacks` directory is automatically deleted.
253
+
254
+ #### Further Troubleshooting of Tests
255
+
256
+ If there is a need to troubleshoot the stacks, you can comment out the `defer` block within the Go test and re-run the test:
257
+
258
+ ```
259
+ // Comment this out to stop .tempstacks from being deleted
260
+ defer func() {
261
+ util.CdkTFDestroyAll(t, terraformOptions, example_file)
262
+ os.RemoveAll("./.tempstacks")
263
+ }()
264
+ ```
265
+
266
+
267
+ ### Randomizing Globally Unique Resource Names
268
+
269
+ **Goal**: Ensure each resource has a unique name to prevent conflicts, especially useful in test environments or when deploying multiple instances of the same infrastructure.
270
+
271
+ **Method**: Use a base class in TypeScript to set up a naming pattern, and then use Golang to generate a random name for each test run.
272
+
273
+ **Step 1**: Create a Base Class in TypeScript
274
+ First, you'll need a base class, BaseTestStack, which includes a variable for the resource name. This class sets up a default name, which you can later override with a random value.
275
+
276
+ ```typescript
277
+ import {BaseTestStack} from "../../testing";
278
+
279
+ const app = new App();
280
+
281
+ export class exampleAzureResourceGroup extends BaseTestStack {
282
+ constructor(scope: Construct, id: string) {
283
+ super(scope, id);
284
+
285
+ new AzurermProvider(this, "azure", {
286
+ features: {},
287
+ });
288
+
289
+ new AzureResourceGroup(this, 'testRG', {
290
+ name: `rg-${this.name}`,
291
+ location: 'eastus',
292
+ tags: {
293
+ name: 'test',
294
+ Env: "NonProd",
295
+ },
296
+ ignoreChanges: ['tags["Environment"]'],
297
+
298
+ });
299
+
300
+ }
301
+ }
302
+
303
+ ```
304
+ **Step 2**: Extend the Base Class for Specific Resources
305
+ When creating specific resources, extend the BaseTestStack class. Use this.name to create a unique name for each resource.
306
+
307
+
308
+ ```typescript
309
+ import {BaseTestStack} from "../../testing";
310
+
311
+ export class exampleAzureResourceGroup extends BaseTestStack {
312
+ constructor(scope: Construct, id: string) {
313
+ super(scope, id);
314
+
315
+ new AzureResourceGroup(this, 'testRG', {
316
+ name: `rg-${this.name}`, // Unique name for the resource
317
+ // ... other configurations ...
318
+ });
319
+ }
320
+ }
321
+ ```
322
+
323
+ **Step 3**: Use Golang to Generate a Random Name During Tests
324
+ In your Golang tests, generate a random string to use as the resource name. This ensures that every test run has a different name for its resources.
325
+ ```typescript
326
+ // Randomize System Name
327
+ rndName := strings.ToLower(random.UniqueId())
328
+
329
+ terraformOptions := &terraform.Options{
330
+ TerraformBinary: "cdktf",
331
+ //Terraform Variables
332
+ Vars: map[string]interface{}{
333
+ "name": rndName,
334
+ },
335
+ TerraformDir: "../../../",
336
+ }
337
+
338
+
339
+ ```
340
+
341
+ When the test kicks off it will perform a `terraform -var=name=<RandomString>` to randomize the names of all the resources.
342
+
343
+
344
+
345
+ ## End to End Tests
346
+
347
+ End to End tests are used when testing a class that contains multiple stacks. The workflow is the same as with integration tests, however the test will take much longer.
package/go.mod ADDED
@@ -0,0 +1,73 @@
1
+ module github.com/microsoft/azure-terraform-cdk-modules
2
+
3
+ go 1.19
4
+
5
+ require (
6
+ github.com/Azure/azure-sdk-for-go v51.0.0+incompatible
7
+ github.com/gruntwork-io/terratest v0.43.2
8
+ github.com/stretchr/testify v1.8.4
9
+ )
10
+
11
+ require (
12
+ cloud.google.com/go v0.110.0 // indirect
13
+ cloud.google.com/go/compute v1.19.1 // indirect
14
+ cloud.google.com/go/compute/metadata v0.2.3 // indirect
15
+ cloud.google.com/go/iam v0.13.0 // indirect
16
+ cloud.google.com/go/storage v1.28.1 // indirect
17
+ github.com/Azure/go-autorest v14.2.0+incompatible // indirect
18
+ github.com/Azure/go-autorest/autorest v0.11.20 // indirect
19
+ github.com/Azure/go-autorest/autorest/adal v0.9.13 // indirect
20
+ github.com/Azure/go-autorest/autorest/azure/auth v0.5.8 // indirect
21
+ github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 // indirect
22
+ github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
23
+ github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
24
+ github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
25
+ github.com/Azure/go-autorest/logger v0.2.1 // indirect
26
+ github.com/Azure/go-autorest/tracing v0.6.0 // indirect
27
+ github.com/agext/levenshtein v1.2.3 // indirect
28
+ github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
29
+ github.com/aws/aws-sdk-go v1.44.122 // indirect
30
+ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
31
+ github.com/davecgh/go-spew v1.1.1 // indirect
32
+ github.com/dimchansky/utfbom v1.1.1 // indirect
33
+ github.com/form3tech-oss/jwt-go v3.2.2+incompatible // indirect
34
+ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
35
+ github.com/golang/protobuf v1.5.3 // indirect
36
+ github.com/google/go-cmp v0.5.9 // indirect
37
+ github.com/google/uuid v1.3.0 // indirect
38
+ github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
39
+ github.com/googleapis/gax-go/v2 v2.7.1 // indirect
40
+ github.com/hashicorp/errwrap v1.0.0 // indirect
41
+ github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
42
+ github.com/hashicorp/go-getter v1.7.1 // indirect
43
+ github.com/hashicorp/go-multierror v1.1.0 // indirect
44
+ github.com/hashicorp/go-safetemp v1.0.0 // indirect
45
+ github.com/hashicorp/go-version v1.6.0 // indirect
46
+ github.com/hashicorp/hcl/v2 v2.9.1 // indirect
47
+ github.com/hashicorp/terraform-json v0.13.0 // indirect
48
+ github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a // indirect
49
+ github.com/jmespath/go-jmespath v0.4.0 // indirect
50
+ github.com/klauspost/compress v1.15.11 // indirect
51
+ github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 // indirect
52
+ github.com/mitchellh/go-homedir v1.1.0 // indirect
53
+ github.com/mitchellh/go-testing-interface v1.14.1 // indirect
54
+ github.com/mitchellh/go-wordwrap v1.0.1 // indirect
55
+ github.com/pmezard/go-difflib v1.0.0 // indirect
56
+ github.com/satori/go.uuid v1.2.0 // indirect
57
+ github.com/tmccombs/hcl2json v0.3.3 // indirect
58
+ github.com/ulikunitz/xz v0.5.10 // indirect
59
+ github.com/zclconf/go-cty v1.9.1 // indirect
60
+ go.opencensus.io v0.24.0 // indirect
61
+ golang.org/x/crypto v0.14.0 // indirect
62
+ golang.org/x/net v0.17.0 // indirect
63
+ golang.org/x/oauth2 v0.7.0 // indirect
64
+ golang.org/x/sys v0.13.0 // indirect
65
+ golang.org/x/text v0.13.0 // indirect
66
+ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
67
+ google.golang.org/api v0.114.0 // indirect
68
+ google.golang.org/appengine v1.6.7 // indirect
69
+ google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
70
+ google.golang.org/grpc v1.56.3 // indirect
71
+ google.golang.org/protobuf v1.31.0 // indirect
72
+ gopkg.in/yaml.v3 v3.0.1 // indirect
73
+ )