@datadog/datadog-ci 2.40.2 → 2.41.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 (268) hide show
  1. package/README.md +1 -0
  2. package/dist/commands/deployment/cli.js +2 -1
  3. package/dist/commands/deployment/cli.js.map +1 -1
  4. package/dist/commands/deployment/correlate.d.ts +18 -0
  5. package/dist/commands/deployment/correlate.js +154 -0
  6. package/dist/commands/deployment/correlate.js.map +1 -0
  7. package/dist/commands/dsyms/upload.js +3 -3
  8. package/dist/commands/dsyms/upload.js.map +1 -1
  9. package/dist/commands/dsyms/utils.js +2 -4
  10. package/dist/commands/dsyms/utils.js.map +1 -1
  11. package/dist/commands/elf-symbols/upload.js +3 -2
  12. package/dist/commands/elf-symbols/upload.js.map +1 -1
  13. package/dist/commands/flutter-symbols/upload.js +2 -2
  14. package/dist/commands/flutter-symbols/upload.js.map +1 -1
  15. package/dist/commands/junit/upload.js +3 -5
  16. package/dist/commands/junit/upload.js.map +1 -1
  17. package/dist/commands/sarif/upload.js +2 -2
  18. package/dist/commands/sarif/upload.js.map +1 -1
  19. package/dist/commands/sourcemaps/upload.js +2 -2
  20. package/dist/commands/sourcemaps/upload.js.map +1 -1
  21. package/dist/commands/synthetics/utils/public.js +2 -2
  22. package/dist/commands/synthetics/utils/public.js.map +1 -1
  23. package/dist/commands/unity-symbols/upload.js +2 -2
  24. package/dist/commands/unity-symbols/upload.js.map +1 -1
  25. package/dist/helpers/git/get-git-data.d.ts +2 -0
  26. package/dist/helpers/git/get-git-data.js +11 -1
  27. package/dist/helpers/git/get-git-data.js.map +1 -1
  28. package/package.json +5 -4
  29. package/dist/__tests__/cli.test.d.ts +0 -1
  30. package/dist/__tests__/cli.test.js +0 -41
  31. package/dist/__tests__/cli.test.js.map +0 -1
  32. package/dist/commands/cloud-run/__tests__/fixtures.d.ts +0 -2
  33. package/dist/commands/cloud-run/__tests__/fixtures.js +0 -12
  34. package/dist/commands/cloud-run/__tests__/fixtures.js.map +0 -1
  35. package/dist/commands/cloud-run/__tests__/flare.test.d.ts +0 -1
  36. package/dist/commands/cloud-run/__tests__/flare.test.js +0 -557
  37. package/dist/commands/cloud-run/__tests__/flare.test.js.map +0 -1
  38. package/dist/commands/deployment/__tests__/mark.test.d.ts +0 -1
  39. package/dist/commands/deployment/__tests__/mark.test.js +0 -47
  40. package/dist/commands/deployment/__tests__/mark.test.js.map +0 -1
  41. package/dist/commands/dora/__tests__/deployment.test.d.ts +0 -1
  42. package/dist/commands/dora/__tests__/deployment.test.js +0 -201
  43. package/dist/commands/dora/__tests__/deployment.test.js.map +0 -1
  44. package/dist/commands/dsyms/__tests__/upload.test.d.ts +0 -1
  45. package/dist/commands/dsyms/__tests__/upload.test.js +0 -346
  46. package/dist/commands/dsyms/__tests__/upload.test.js.map +0 -1
  47. package/dist/commands/dsyms/__tests__/utils.test.d.ts +0 -1
  48. package/dist/commands/dsyms/__tests__/utils.test.js +0 -100
  49. package/dist/commands/dsyms/__tests__/utils.test.js.map +0 -1
  50. package/dist/commands/elf-symbols/__tests__/elf.test.d.ts +0 -1
  51. package/dist/commands/elf-symbols/__tests__/elf.test.js +0 -813
  52. package/dist/commands/elf-symbols/__tests__/elf.test.js.map +0 -1
  53. package/dist/commands/elf-symbols/__tests__/upload.test.d.ts +0 -1
  54. package/dist/commands/elf-symbols/__tests__/upload.test.js +0 -249
  55. package/dist/commands/elf-symbols/__tests__/upload.test.js.map +0 -1
  56. package/dist/commands/flutter-symbols/__tests__/upload.test.d.ts +0 -1
  57. package/dist/commands/flutter-symbols/__tests__/upload.test.js +0 -617
  58. package/dist/commands/flutter-symbols/__tests__/upload.test.js.map +0 -1
  59. package/dist/commands/gate/__tests__/evaluate.test.d.ts +0 -1
  60. package/dist/commands/gate/__tests__/evaluate.test.js +0 -398
  61. package/dist/commands/gate/__tests__/evaluate.test.js.map +0 -1
  62. package/dist/commands/gate/__tests__/scope.test.d.ts +0 -1
  63. package/dist/commands/gate/__tests__/scope.test.js +0 -29
  64. package/dist/commands/gate/__tests__/scope.test.js.map +0 -1
  65. package/dist/commands/git-metadata/__tests__/git.test.d.ts +0 -1
  66. package/dist/commands/git-metadata/__tests__/git.test.js +0 -132
  67. package/dist/commands/git-metadata/__tests__/git.test.js.map +0 -1
  68. package/dist/commands/git-metadata/__tests__/gitdb.test.d.ts +0 -1
  69. package/dist/commands/git-metadata/__tests__/gitdb.test.js +0 -1386
  70. package/dist/commands/git-metadata/__tests__/gitdb.test.js.map +0 -1
  71. package/dist/commands/git-metadata/__tests__/library.test.d.ts +0 -1
  72. package/dist/commands/git-metadata/__tests__/library.test.js +0 -118
  73. package/dist/commands/git-metadata/__tests__/library.test.js.map +0 -1
  74. package/dist/commands/git-metadata/__tests__/upload.test.d.ts +0 -1
  75. package/dist/commands/git-metadata/__tests__/upload.test.js +0 -52
  76. package/dist/commands/git-metadata/__tests__/upload.test.js.map +0 -1
  77. package/dist/commands/junit/__tests__/id.test.d.ts +0 -1
  78. package/dist/commands/junit/__tests__/id.test.js +0 -24
  79. package/dist/commands/junit/__tests__/id.test.js.map +0 -1
  80. package/dist/commands/junit/__tests__/upload.test.d.ts +0 -1
  81. package/dist/commands/junit/__tests__/upload.test.js +0 -495
  82. package/dist/commands/junit/__tests__/upload.test.js.map +0 -1
  83. package/dist/commands/lambda/__tests__/fixtures.d.ts +0 -51
  84. package/dist/commands/lambda/__tests__/fixtures.js +0 -146
  85. package/dist/commands/lambda/__tests__/fixtures.js.map +0 -1
  86. package/dist/commands/lambda/__tests__/flare.test.d.ts +0 -1
  87. package/dist/commands/lambda/__tests__/flare.test.js +0 -730
  88. package/dist/commands/lambda/__tests__/flare.test.js.map +0 -1
  89. package/dist/commands/lambda/__tests__/functions/commons.test.d.ts +0 -1
  90. package/dist/commands/lambda/__tests__/functions/commons.test.js +0 -791
  91. package/dist/commands/lambda/__tests__/functions/commons.test.js.map +0 -1
  92. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.d.ts +0 -1
  93. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js +0 -386
  94. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js.map +0 -1
  95. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.d.ts +0 -1
  96. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js +0 -721
  97. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js.map +0 -1
  98. package/dist/commands/lambda/__tests__/functions/uninstrument.test.d.ts +0 -1
  99. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js +0 -513
  100. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js.map +0 -1
  101. package/dist/commands/lambda/__tests__/functions/versionChecker.test.d.ts +0 -1
  102. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js +0 -33
  103. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js.map +0 -1
  104. package/dist/commands/lambda/__tests__/instrument.test.d.ts +0 -1
  105. package/dist/commands/lambda/__tests__/instrument.test.js +0 -1511
  106. package/dist/commands/lambda/__tests__/instrument.test.js.map +0 -1
  107. package/dist/commands/lambda/__tests__/loggroup.test.d.ts +0 -1
  108. package/dist/commands/lambda/__tests__/loggroup.test.js +0 -340
  109. package/dist/commands/lambda/__tests__/loggroup.test.js.map +0 -1
  110. package/dist/commands/lambda/__tests__/prompt.test.d.ts +0 -1
  111. package/dist/commands/lambda/__tests__/prompt.test.js +0 -206
  112. package/dist/commands/lambda/__tests__/prompt.test.js.map +0 -1
  113. package/dist/commands/lambda/__tests__/tags.test.d.ts +0 -1
  114. package/dist/commands/lambda/__tests__/tags.test.js +0 -305
  115. package/dist/commands/lambda/__tests__/tags.test.js.map +0 -1
  116. package/dist/commands/lambda/__tests__/uninstrument.test.d.ts +0 -1
  117. package/dist/commands/lambda/__tests__/uninstrument.test.js +0 -722
  118. package/dist/commands/lambda/__tests__/uninstrument.test.js.map +0 -1
  119. package/dist/commands/measure/__tests__/measure.test.d.ts +0 -1
  120. package/dist/commands/measure/__tests__/measure.test.js +0 -110
  121. package/dist/commands/measure/__tests__/measure.test.js.map +0 -1
  122. package/dist/commands/react-native/__tests__/codepush.test.d.ts +0 -1
  123. package/dist/commands/react-native/__tests__/codepush.test.js +0 -161
  124. package/dist/commands/react-native/__tests__/codepush.test.js.map +0 -1
  125. package/dist/commands/react-native/__tests__/interfaces.test.d.ts +0 -1
  126. package/dist/commands/react-native/__tests__/interfaces.test.js +0 -33
  127. package/dist/commands/react-native/__tests__/interfaces.test.js.map +0 -1
  128. package/dist/commands/react-native/__tests__/upload.test.d.ts +0 -1
  129. package/dist/commands/react-native/__tests__/upload.test.js +0 -238
  130. package/dist/commands/react-native/__tests__/upload.test.js.map +0 -1
  131. package/dist/commands/react-native/__tests__/utils.test.d.ts +0 -1
  132. package/dist/commands/react-native/__tests__/utils.test.js +0 -27
  133. package/dist/commands/react-native/__tests__/utils.test.js.map +0 -1
  134. package/dist/commands/react-native/__tests__/xcode.test.d.ts +0 -1
  135. package/dist/commands/react-native/__tests__/xcode.test.js +0 -465
  136. package/dist/commands/react-native/__tests__/xcode.test.js.map +0 -1
  137. package/dist/commands/sarif/__tests__/upload.test.d.ts +0 -1
  138. package/dist/commands/sarif/__tests__/upload.test.js +0 -228
  139. package/dist/commands/sarif/__tests__/upload.test.js.map +0 -1
  140. package/dist/commands/sbom/__tests__/payload.test.d.ts +0 -1
  141. package/dist/commands/sbom/__tests__/payload.test.js +0 -262
  142. package/dist/commands/sbom/__tests__/payload.test.js.map +0 -1
  143. package/dist/commands/sbom/__tests__/validation.test.d.ts +0 -1
  144. package/dist/commands/sbom/__tests__/validation.test.js +0 -41
  145. package/dist/commands/sbom/__tests__/validation.test.js.map +0 -1
  146. package/dist/commands/sourcemaps/__tests__/upload.test.d.ts +0 -1
  147. package/dist/commands/sourcemaps/__tests__/upload.test.js +0 -270
  148. package/dist/commands/sourcemaps/__tests__/upload.test.js.map +0 -1
  149. package/dist/commands/sourcemaps/__tests__/utils.test.d.ts +0 -1
  150. package/dist/commands/sourcemaps/__tests__/utils.test.js +0 -31
  151. package/dist/commands/sourcemaps/__tests__/utils.test.js.map +0 -1
  152. package/dist/commands/stepfunctions/__tests__/awsCommands.test.d.ts +0 -1
  153. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js +0 -192
  154. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js.map +0 -1
  155. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.d.ts +0 -6
  156. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js +0 -45
  157. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js.map +0 -1
  158. package/dist/commands/stepfunctions/__tests__/fixtures/cli.d.ts +0 -5
  159. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js +0 -19
  160. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js.map +0 -1
  161. package/dist/commands/stepfunctions/__tests__/helpers.test.d.ts +0 -1
  162. package/dist/commands/stepfunctions/__tests__/helpers.test.js +0 -205
  163. package/dist/commands/stepfunctions/__tests__/helpers.test.js.map +0 -1
  164. package/dist/commands/stepfunctions/__tests__/instrument.test.d.ts +0 -1
  165. package/dist/commands/stepfunctions/__tests__/instrument.test.js +0 -431
  166. package/dist/commands/stepfunctions/__tests__/instrument.test.js.map +0 -1
  167. package/dist/commands/stepfunctions/__tests__/uninstrument.test.d.ts +0 -1
  168. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js +0 -166
  169. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js.map +0 -1
  170. package/dist/commands/synthetics/__tests__/api.test.d.ts +0 -1
  171. package/dist/commands/synthetics/__tests__/api.test.js +0 -422
  172. package/dist/commands/synthetics/__tests__/api.test.js.map +0 -1
  173. package/dist/commands/synthetics/__tests__/cli.test.d.ts +0 -1
  174. package/dist/commands/synthetics/__tests__/cli.test.js +0 -1325
  175. package/dist/commands/synthetics/__tests__/cli.test.js.map +0 -1
  176. package/dist/commands/synthetics/__tests__/fixtures.d.ts +0 -149
  177. package/dist/commands/synthetics/__tests__/fixtures.js +0 -507
  178. package/dist/commands/synthetics/__tests__/fixtures.js.map +0 -1
  179. package/dist/commands/synthetics/__tests__/mobile.test.d.ts +0 -1
  180. package/dist/commands/synthetics/__tests__/mobile.test.js +0 -376
  181. package/dist/commands/synthetics/__tests__/mobile.test.js.map +0 -1
  182. package/dist/commands/synthetics/__tests__/reporters/default.test.d.ts +0 -1
  183. package/dist/commands/synthetics/__tests__/reporters/default.test.js +0 -354
  184. package/dist/commands/synthetics/__tests__/reporters/default.test.js.map +0 -1
  185. package/dist/commands/synthetics/__tests__/reporters/junit.test.d.ts +0 -1
  186. package/dist/commands/synthetics/__tests__/reporters/junit.test.js +0 -353
  187. package/dist/commands/synthetics/__tests__/reporters/junit.test.js.map +0 -1
  188. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.d.ts +0 -1
  189. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js +0 -232
  190. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js.map +0 -1
  191. package/dist/commands/synthetics/__tests__/run-tests-lib.test.d.ts +0 -1
  192. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js +0 -735
  193. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js.map +0 -1
  194. package/dist/commands/synthetics/__tests__/test.test.d.ts +0 -1
  195. package/dist/commands/synthetics/__tests__/test.test.js +0 -33
  196. package/dist/commands/synthetics/__tests__/test.test.js.map +0 -1
  197. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.d.ts +0 -1
  198. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js +0 -21
  199. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js.map +0 -1
  200. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.d.ts +0 -1
  201. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js +0 -80
  202. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js.map +0 -1
  203. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.d.ts +0 -1
  204. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js +0 -109
  205. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js.map +0 -1
  206. package/dist/commands/synthetics/__tests__/utils/internal.test.d.ts +0 -1
  207. package/dist/commands/synthetics/__tests__/utils/internal.test.js +0 -186
  208. package/dist/commands/synthetics/__tests__/utils/internal.test.js.map +0 -1
  209. package/dist/commands/synthetics/__tests__/utils/public.test.d.ts +0 -1
  210. package/dist/commands/synthetics/__tests__/utils/public.test.js +0 -1526
  211. package/dist/commands/synthetics/__tests__/utils/public.test.js.map +0 -1
  212. package/dist/commands/tag/__tests__/tag.test.d.ts +0 -1
  213. package/dist/commands/tag/__tests__/tag.test.js +0 -75
  214. package/dist/commands/tag/__tests__/tag.test.js.map +0 -1
  215. package/dist/commands/trace/__tests__/trace.test.d.ts +0 -1
  216. package/dist/commands/trace/__tests__/trace.test.js +0 -145
  217. package/dist/commands/trace/__tests__/trace.test.js.map +0 -1
  218. package/dist/commands/unity-symbols/__tests__/upload.test.d.ts +0 -1
  219. package/dist/commands/unity-symbols/__tests__/upload.test.js +0 -369
  220. package/dist/commands/unity-symbols/__tests__/upload.test.js.map +0 -1
  221. package/dist/helpers/__tests__/app.test.d.ts +0 -1
  222. package/dist/helpers/__tests__/app.test.js +0 -31
  223. package/dist/helpers/__tests__/app.test.js.map +0 -1
  224. package/dist/helpers/__tests__/ci.test.d.ts +0 -1
  225. package/dist/helpers/__tests__/ci.test.js +0 -252
  226. package/dist/helpers/__tests__/ci.test.js.map +0 -1
  227. package/dist/helpers/__tests__/fixtures.d.ts +0 -33
  228. package/dist/helpers/__tests__/fixtures.js +0 -71
  229. package/dist/helpers/__tests__/fixtures.js.map +0 -1
  230. package/dist/helpers/__tests__/flare.test.d.ts +0 -1
  231. package/dist/helpers/__tests__/flare.test.js +0 -226
  232. package/dist/helpers/__tests__/flare.test.js.map +0 -1
  233. package/dist/helpers/__tests__/fs.test.d.ts +0 -1
  234. package/dist/helpers/__tests__/fs.test.js +0 -189
  235. package/dist/helpers/__tests__/fs.test.js.map +0 -1
  236. package/dist/helpers/__tests__/plist.test.d.ts +0 -1
  237. package/dist/helpers/__tests__/plist.test.js +0 -43
  238. package/dist/helpers/__tests__/plist.test.js.map +0 -1
  239. package/dist/helpers/__tests__/prompt.test.d.ts +0 -1
  240. package/dist/helpers/__tests__/prompt.test.js +0 -71
  241. package/dist/helpers/__tests__/prompt.test.js.map +0 -1
  242. package/dist/helpers/__tests__/retry.test.d.ts +0 -1
  243. package/dist/helpers/__tests__/retry.test.js +0 -99
  244. package/dist/helpers/__tests__/retry.test.js.map +0 -1
  245. package/dist/helpers/__tests__/tags.test.d.ts +0 -1
  246. package/dist/helpers/__tests__/tags.test.js +0 -71
  247. package/dist/helpers/__tests__/tags.test.js.map +0 -1
  248. package/dist/helpers/__tests__/upload.test.d.ts +0 -1
  249. package/dist/helpers/__tests__/upload.test.js +0 -231
  250. package/dist/helpers/__tests__/upload.test.js.map +0 -1
  251. package/dist/helpers/__tests__/user-provided-git.test.d.ts +0 -1
  252. package/dist/helpers/__tests__/user-provided-git.test.js +0 -119
  253. package/dist/helpers/__tests__/user-provided-git.test.js.map +0 -1
  254. package/dist/helpers/__tests__/utils.test.d.ts +0 -1
  255. package/dist/helpers/__tests__/utils.test.js +0 -429
  256. package/dist/helpers/__tests__/utils.test.js.map +0 -1
  257. package/dist/helpers/__tests__/validation.test.d.ts +0 -1
  258. package/dist/helpers/__tests__/validation.test.js +0 -25
  259. package/dist/helpers/__tests__/validation.test.js.map +0 -1
  260. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.d.ts +0 -1
  261. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js +0 -103
  262. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js.map +0 -1
  263. package/dist/helpers/git/__tests__/format-git-span-data.test.d.ts +0 -1
  264. package/dist/helpers/git/__tests__/format-git-span-data.test.js +0 -121
  265. package/dist/helpers/git/__tests__/format-git-span-data.test.js.map +0 -1
  266. package/dist/helpers/git/__tests__/get-git-data.test.d.ts +0 -1
  267. package/dist/helpers/git/__tests__/get-git-data.test.js +0 -72
  268. package/dist/helpers/git/__tests__/get-git-data.test.js.map +0 -1
@@ -1,791 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- jest.mock('fs');
36
- jest.mock('@aws-sdk/credential-providers');
37
- jest.mock('../../renderers/instrument-uninstrument-renderer');
38
- const fs = __importStar(require("fs"));
39
- const client_cloudwatch_logs_1 = require("@aws-sdk/client-cloudwatch-logs");
40
- const client_lambda_1 = require("@aws-sdk/client-lambda");
41
- const credential_providers_1 = require("@aws-sdk/credential-providers");
42
- const aws_sdk_client_mock_1 = require("aws-sdk-client-mock");
43
- require("aws-sdk-client-mock-jest");
44
- const constants_1 = require("../../../../constants");
45
- const fixtures_1 = require("../../../../helpers/__tests__/fixtures");
46
- const constants_2 = require("../../constants");
47
- const commons_1 = require("../../functions/commons");
48
- const instrument_1 = require("../../instrument");
49
- const fixtures_2 = require("../fixtures");
50
- describe('commons', () => {
51
- const cloudWatchLogsClientMock = (0, aws_sdk_client_mock_1.mockClient)(client_cloudwatch_logs_1.CloudWatchLogsClient);
52
- const lambdaClientMock = (0, aws_sdk_client_mock_1.mockClient)(client_lambda_1.LambdaClient);
53
- beforeEach(() => {
54
- cloudWatchLogsClientMock.reset();
55
- lambdaClientMock.reset();
56
- (0, fixtures_2.mockLambdaClientCommands)(lambdaClientMock);
57
- });
58
- describe('addLayerArn', () => {
59
- test('adds layers and removes previous versions', () => {
60
- const runtime = 'python3.9';
61
- const config = {
62
- Runtime: runtime,
63
- };
64
- let layerARNs = [
65
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39:48',
66
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension:10',
67
- ];
68
- const region = 'sa-east-1';
69
- const lambdaLibraryLayerName = constants_2.LAYER_LOOKUP[runtime];
70
- const fullLambdaLibraryLayerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region) + ':49';
71
- const fullExtensionLayerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region) + ':11';
72
- layerARNs = (0, commons_1.addLayerArn)(fullLambdaLibraryLayerArn, lambdaLibraryLayerName, layerARNs);
73
- layerARNs = (0, commons_1.addLayerArn)(fullExtensionLayerArn, constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME, layerARNs);
74
- expect(layerARNs).toEqual([
75
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39:49',
76
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension:11',
77
- ]);
78
- });
79
- test('swaps layers if architecture is arm64', () => {
80
- const runtime = client_lambda_1.Runtime.python39;
81
- const config = {
82
- Architectures: [client_lambda_1.Architecture.arm64],
83
- Runtime: runtime,
84
- };
85
- let layerARNs = [
86
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39:49',
87
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension:11',
88
- ];
89
- const region = 'sa-east-1';
90
- const lambdaLibraryLayerName = constants_2.LAYER_LOOKUP[runtime];
91
- const fullLambdaLibraryLayerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region) + ':49';
92
- const fullExtensionLayerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region) + ':11';
93
- layerARNs = (0, commons_1.addLayerArn)(fullLambdaLibraryLayerArn, lambdaLibraryLayerName, layerARNs);
94
- layerARNs = (0, commons_1.addLayerArn)(fullExtensionLayerArn, constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME, layerARNs);
95
- expect(layerARNs).toEqual([
96
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39-ARM:49',
97
- 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension-ARM:11',
98
- ]);
99
- });
100
- });
101
- describe('coerceBoolean', () => {
102
- test('return fallback when none of the values provided can be parsed to boolean', () => {
103
- expect((0, commons_1.coerceBoolean)(true, 'NotBoolean', 123, [], {})).toBe(true);
104
- expect((0, commons_1.coerceBoolean)(false, 'NotBooleanEither', 456, ['An array'], { booleanInObject: true })).toBe(false);
105
- });
106
- test('return the first boolean when one of the values provided can be parsed to boolean', () => {
107
- expect((0, commons_1.coerceBoolean)(true, 'false', 'true')).toBe(false);
108
- expect((0, commons_1.coerceBoolean)(false, 'true', 'False')).toBe(true);
109
- });
110
- test('return the first boolean when one of the values provided is boolean', () => {
111
- expect((0, commons_1.coerceBoolean)(true, false, 'truE', true)).toBe(false);
112
- expect((0, commons_1.coerceBoolean)(false, true, 'False', false)).toBe(true);
113
- });
114
- });
115
- describe('collectFunctionsByRegion', () => {
116
- test('groups functions with region read from arn', () => {
117
- process.env = {};
118
- const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
119
- const region = 'us-east-1';
120
- command['functions'] = [
121
- 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
122
- 'arn:aws:lambda:us-east-1:123456789012:function:another',
123
- 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
124
- ];
125
- expect((0, commons_1.collectFunctionsByRegion)(command['functions'], region)).toEqual({
126
- 'us-east-1': [
127
- 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
128
- 'arn:aws:lambda:us-east-1:123456789012:function:another',
129
- ],
130
- 'us-east-2': ['arn:aws:lambda:us-east-2:123456789012:function:third-func'],
131
- });
132
- });
133
- test('groups functions in the config object', () => {
134
- process.env = {};
135
- const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
136
- const region = 'us-east-1';
137
- command['config']['functions'] = [
138
- 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
139
- 'arn:aws:lambda:us-east-1:123456789012:function:another',
140
- 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
141
- ];
142
- expect((0, commons_1.collectFunctionsByRegion)(command['config']['functions'], region)).toEqual({
143
- 'us-east-1': [
144
- 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
145
- 'arn:aws:lambda:us-east-1:123456789012:function:another',
146
- ],
147
- 'us-east-2': ['arn:aws:lambda:us-east-2:123456789012:function:third-func'],
148
- });
149
- });
150
- test('uses default region for functions not in arn format', () => {
151
- process.env = {};
152
- const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
153
- command['functions'] = [
154
- 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
155
- 'arn:aws:lambda:*:123456789012:function:func-with-wildcard',
156
- 'func-without-region',
157
- 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
158
- ];
159
- command['region'] = 'ap-south-1';
160
- expect((0, commons_1.collectFunctionsByRegion)(command['functions'], command['region'])).toEqual({
161
- 'ap-south-1': ['arn:aws:lambda:*:123456789012:function:func-with-wildcard', 'func-without-region'],
162
- 'us-east-1': ['arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world'],
163
- 'us-east-2': ['arn:aws:lambda:us-east-2:123456789012:function:third-func'],
164
- });
165
- });
166
- test('fails to collect when there are regionless functions and no default region is set', () => {
167
- process.env = {};
168
- const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
169
- command['functions'] = [
170
- 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
171
- 'arn:aws:lambda:*:123456789012:function:func-with-wildcard',
172
- 'func-without-region',
173
- 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
174
- ];
175
- command['region'] = undefined;
176
- command['config']['region'] = undefined;
177
- let functionsGroup;
178
- try {
179
- functionsGroup = (0, commons_1.collectFunctionsByRegion)(command['functions'], command['region']);
180
- }
181
- catch (err) {
182
- // Do nothing
183
- }
184
- expect(functionsGroup).toBeUndefined();
185
- });
186
- });
187
- describe('findLatestLayerVersion', () => {
188
- beforeEach(() => {
189
- lambdaClientMock.reset();
190
- (0, fixtures_2.mockLambdaClientCommands)(lambdaClientMock);
191
- });
192
- test('finds latests version for Python39', () => __awaiter(void 0, void 0, void 0, function* () {
193
- const layer = `arn:aws:lambda:sa-east-1:${constants_2.DEFAULT_LAYER_AWS_ACCOUNT}:layer:Datadog-Python39`;
194
- (0, fixtures_2.mockLambdaLayers)(lambdaClientMock, {
195
- [`${layer}:1`]: {
196
- LayerName: layer,
197
- VersionNumber: 1,
198
- },
199
- [`${layer}:2`]: {
200
- LayerName: layer,
201
- VersionNumber: 2,
202
- },
203
- [`${layer}:10`]: {
204
- LayerName: layer,
205
- VersionNumber: 10,
206
- },
207
- [`${layer}:20`]: {
208
- LayerName: layer,
209
- VersionNumber: 20,
210
- },
211
- [`${layer}:30`]: {
212
- LayerName: layer,
213
- VersionNumber: 30,
214
- },
215
- [`${layer}:31`]: {
216
- LayerName: layer,
217
- VersionNumber: 31,
218
- },
219
- [`${layer}:32`]: {
220
- LayerName: layer,
221
- VersionNumber: 32,
222
- },
223
- });
224
- const runtime = 'python3.9';
225
- const region = 'sa-east-1';
226
- const expectedLatestVersion = 32;
227
- const latestVersionFound = yield (0, commons_1.findLatestLayerVersion)(runtime, region);
228
- expect(latestVersionFound).toBe(expectedLatestVersion);
229
- }));
230
- test('finds latests version for Node20', () => __awaiter(void 0, void 0, void 0, function* () {
231
- const layer = `arn:aws:lambda:us-east-1:${constants_2.DEFAULT_LAYER_AWS_ACCOUNT}:layer:Datadog-Node20-x`;
232
- (0, fixtures_2.mockLambdaLayers)(lambdaClientMock, {
233
- [`${layer}:1`]: {
234
- LayerName: layer,
235
- VersionNumber: 1,
236
- },
237
- [`${layer}:2`]: {
238
- LayerName: layer,
239
- VersionNumber: 2,
240
- },
241
- [`${layer}:10`]: {
242
- LayerName: layer,
243
- VersionNumber: 10,
244
- },
245
- [`${layer}:20`]: {
246
- LayerName: layer,
247
- VersionNumber: 20,
248
- },
249
- [`${layer}:30`]: {
250
- LayerName: layer,
251
- VersionNumber: 30,
252
- },
253
- [`${layer}:40`]: {
254
- LayerName: layer,
255
- VersionNumber: 40,
256
- },
257
- [`${layer}:41`]: {
258
- LayerName: layer,
259
- VersionNumber: 41,
260
- },
261
- });
262
- const runtime = 'nodejs20.x';
263
- const region = 'us-east-1';
264
- const expectedLatestVersion = 41;
265
- const latestVersionFound = yield (0, commons_1.findLatestLayerVersion)(runtime, region);
266
- expect(latestVersionFound).toBe(expectedLatestVersion);
267
- }));
268
- test('returns 0 when no layer can be found', () => __awaiter(void 0, void 0, void 0, function* () {
269
- const runtime = 'python3.12';
270
- const region = 'us-east-1';
271
- const expectedLatestVersion = 0;
272
- const latestVersionFound = yield (0, commons_1.findLatestLayerVersion)(runtime, region);
273
- expect(latestVersionFound).toBe(expectedLatestVersion);
274
- }));
275
- });
276
- describe('getAWSCredentials', () => {
277
- const OLD_ENV = process.env;
278
- beforeEach(() => {
279
- jest.resetModules();
280
- process.env = {};
281
- });
282
- afterEach(() => {
283
- process.env = OLD_ENV;
284
- });
285
- fs.readFile.mockImplementation((a, b, callback) => callback({ code: 'ENOENT' }));
286
- test('returns credentials when `fromNodeProviderChain` returns a succesful promise', () => __awaiter(void 0, void 0, void 0, function* () {
287
- ;
288
- credential_providers_1.fromNodeProviderChain.mockImplementation(() => () => Promise.resolve({
289
- accessKeyId: fixtures_2.mockAwsAccessKeyId,
290
- secretAccessKey: fixtures_2.mockAwsSecretAccessKey,
291
- }));
292
- const credentials = yield (0, commons_1.getAWSCredentials)();
293
- expect(credentials).toStrictEqual({
294
- accessKeyId: fixtures_2.mockAwsAccessKeyId,
295
- secretAccessKey: fixtures_2.mockAwsSecretAccessKey,
296
- });
297
- }));
298
- test('throws an error when `fromNodeProviderChain` fails when fetching credentials', () => __awaiter(void 0, void 0, void 0, function* () {
299
- ;
300
- credential_providers_1.fromNodeProviderChain.mockImplementation(() => () => Promise.reject(new Error('Unexpected error')));
301
- let error;
302
- try {
303
- yield (0, commons_1.getAWSCredentials)();
304
- }
305
- catch (e) {
306
- if (e instanceof Error) {
307
- error = e;
308
- }
309
- }
310
- expect(error === null || error === void 0 ? void 0 : error.message).toBe("Couldn't fetch AWS credentials. Unexpected error");
311
- }));
312
- });
313
- describe('isMissingDatadogEnvVars', () => {
314
- const OLD_ENV = process.env;
315
- beforeEach(() => {
316
- jest.resetModules();
317
- process.env = {};
318
- });
319
- afterAll(() => {
320
- process.env = OLD_ENV;
321
- });
322
- test('returns true when any Datadog Env Var is missing', () => {
323
- process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
324
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
325
- // Reset env
326
- process.env = {};
327
- process.env[constants_1.CI_API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
328
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
329
- process.env = {};
330
- process.env[constants_1.API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
331
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
332
- process.env = {};
333
- process.env[constants_2.CI_KMS_API_KEY_ENV_VAR] = 'SOME-AWS-KMS-API-KEY-CONTAINING-DATADOG-API-KEY';
334
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
335
- process.env = {};
336
- process.env[constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR] = 'SOME-AWS-SECRET-ARN-CONTAINING-DATADOG-API-KEY';
337
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
338
- });
339
- test('returns false when Datadog Env Vars are set with DATADOG_API_KEY', () => {
340
- process.env[constants_1.CI_API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
341
- process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
342
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
343
- });
344
- test('returns false when Datadog Env Vars are set with DD_API_KEY', () => {
345
- process.env[constants_1.API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
346
- process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
347
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
348
- });
349
- test('returns false when Datadog Env Vars are set with DATADOG_KMS_API_KEY', () => {
350
- process.env[constants_2.CI_KMS_API_KEY_ENV_VAR] = 'SOME-AWS-KMS-API-KEY-CONTAINING-DATADOG-API-KEY';
351
- process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
352
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
353
- });
354
- test('returns false when Datadog Env Vars are set with DATADOG_API_KEY_SECRET_ARN', () => {
355
- process.env[constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR] = 'SOME-AWS-SECRET-ARN-CONTAINING-DATADOG-API-KEY';
356
- process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
357
- expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
358
- });
359
- });
360
- describe('isMissingAnyDatadogApiKeyEnvVar', () => {
361
- const OLD_ENV = process.env;
362
- beforeEach(() => {
363
- jest.resetModules();
364
- process.env = {};
365
- });
366
- afterAll(() => {
367
- process.env = OLD_ENV;
368
- });
369
- test('returns true when no Datadog Api Key is set', () => {
370
- expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(true);
371
- });
372
- test('returns false when DATADOG_API_KEY is set', () => {
373
- process.env[constants_1.CI_API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
374
- expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
375
- });
376
- test('returns false when DD_API_KEY is set', () => {
377
- process.env[constants_1.API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
378
- expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
379
- });
380
- test('returns false when DATADOG_KMS_API_KEY is set', () => {
381
- process.env[constants_2.CI_KMS_API_KEY_ENV_VAR] = 'SOME-AWS-KMS-API-KEY-CONTAINING-DATADOG-API-KEY';
382
- expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
383
- });
384
- test('returns false when DATADOG_API_KEY_SECRET_ARN is set', () => {
385
- process.env[constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR] = 'SOME-AWS-SECRET-ARN-CONTAINING-DATADOG-API-KEY';
386
- expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
387
- });
388
- });
389
- describe('getLayerArn', () => {
390
- const OLD_ENV = process.env;
391
- beforeEach(() => {
392
- jest.resetModules();
393
- process.env = {};
394
- });
395
- afterAll(() => {
396
- process.env = OLD_ENV;
397
- });
398
- test('gets sa-east-1 Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
399
- const settings = {
400
- flushMetricsToLogs: false,
401
- layerAWSAccount: fixtures_2.mockAwsAccount,
402
- mergeXrayTraces: false,
403
- tracingEnabled: false,
404
- };
405
- const region = 'sa-east-1';
406
- const layerArn = (0, commons_1.getLayerArn)({}, constants_2.EXTENSION_LAYER_KEY, region, settings);
407
- expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Extension`);
408
- }));
409
- test('gets sa-east-1 arm64 Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
410
- const config = {
411
- Architectures: [client_lambda_1.Architecture.arm64],
412
- };
413
- const settings = {
414
- flushMetricsToLogs: false,
415
- layerAWSAccount: fixtures_2.mockAwsAccount,
416
- mergeXrayTraces: false,
417
- tracingEnabled: false,
418
- };
419
- const region = 'sa-east-1';
420
- const layerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region, settings);
421
- expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Extension-ARM`);
422
- }));
423
- test('gets us-gov-1 gov cloud Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
424
- const settings = {
425
- flushMetricsToLogs: false,
426
- layerAWSAccount: fixtures_2.mockAwsAccount,
427
- mergeXrayTraces: false,
428
- tracingEnabled: false,
429
- };
430
- const region = 'us-gov-1';
431
- const layerArn = (0, commons_1.getLayerArn)({}, constants_2.EXTENSION_LAYER_KEY, region, settings);
432
- expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Extension`);
433
- }));
434
- test('gets us-gov-1 gov cloud arm64 Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
435
- const config = {
436
- Architectures: [client_lambda_1.Architecture.arm64],
437
- };
438
- const settings = {
439
- flushMetricsToLogs: false,
440
- layerAWSAccount: fixtures_2.mockAwsAccount,
441
- mergeXrayTraces: false,
442
- tracingEnabled: false,
443
- };
444
- const region = 'us-gov-1';
445
- const layerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region, settings);
446
- expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Extension-ARM`);
447
- }));
448
- test('gets sa-east-1 Node20 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
449
- const runtime = client_lambda_1.Runtime.nodejs20x;
450
- const config = {
451
- Runtime: runtime,
452
- };
453
- const settings = {
454
- flushMetricsToLogs: false,
455
- layerAWSAccount: fixtures_2.mockAwsAccount,
456
- mergeXrayTraces: false,
457
- tracingEnabled: false,
458
- };
459
- const region = 'sa-east-1';
460
- const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
461
- expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Node20-x`);
462
- }));
463
- test('gets sa-east-1 Python39 arm64 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
464
- const runtime = client_lambda_1.Runtime.python39;
465
- const config = {
466
- Architectures: [client_lambda_1.Architecture.arm64],
467
- Runtime: runtime,
468
- };
469
- const settings = {
470
- flushMetricsToLogs: false,
471
- layerAWSAccount: fixtures_2.mockAwsAccount,
472
- mergeXrayTraces: false,
473
- tracingEnabled: false,
474
- };
475
- const region = 'sa-east-1';
476
- const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
477
- expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Python39-ARM`);
478
- }));
479
- test('gets us-gov-1 Python312 gov cloud Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
480
- const runtime = client_lambda_1.Runtime.python312;
481
- const config = {
482
- Runtime: runtime,
483
- };
484
- const settings = {
485
- flushMetricsToLogs: false,
486
- layerAWSAccount: fixtures_2.mockAwsAccount,
487
- mergeXrayTraces: false,
488
- tracingEnabled: false,
489
- };
490
- const region = 'us-gov-1';
491
- const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
492
- expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Python312`);
493
- }));
494
- test('gets us-gov-1 Python39 gov cloud arm64 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
495
- const runtime = client_lambda_1.Runtime.python39;
496
- const config = {
497
- Architectures: [client_lambda_1.Architecture.arm64],
498
- Runtime: runtime,
499
- };
500
- const settings = {
501
- flushMetricsToLogs: false,
502
- layerAWSAccount: fixtures_2.mockAwsAccount,
503
- mergeXrayTraces: false,
504
- tracingEnabled: false,
505
- };
506
- const region = 'us-gov-1';
507
- const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
508
- expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Python39-ARM`);
509
- }));
510
- test('gets dotnet6 arm64 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
511
- const runtime = client_lambda_1.Runtime.dotnet6;
512
- const config = {
513
- Runtime: runtime,
514
- Architectures: [client_lambda_1.Architecture.arm64],
515
- };
516
- const settings = {
517
- flushMetricsToLogs: false,
518
- layerAWSAccount: fixtures_2.mockAwsAccount,
519
- mergeXrayTraces: false,
520
- tracingEnabled: false,
521
- };
522
- const region = 'us-east-1';
523
- const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
524
- expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:dd-trace-dotnet-ARM`);
525
- }));
526
- });
527
- describe('getLayerNameWithVersion', () => {
528
- const OLD_ENV = process.env;
529
- beforeEach(() => {
530
- jest.resetModules();
531
- process.env = {};
532
- });
533
- afterAll(() => {
534
- process.env = OLD_ENV;
535
- });
536
- test('returns the correct name and version given an extension layer arn', () => {
537
- const layerName = constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME;
538
- const version = '16';
539
- const layerNameWithVersion = `${layerName}:${version}`;
540
- const layerArn = `arn:aws:lambda:sa-east-1:${fixtures_2.mockAwsAccount}:layer:${layerNameWithVersion}`;
541
- expect((0, commons_1.getLayerNameWithVersion)(layerArn)).toBe(layerNameWithVersion);
542
- });
543
- test('returns the correct name and version given a library layer arn', () => {
544
- const layerName = 'Datadog-Python39';
545
- const version = '59';
546
- const layerNameWithVersion = `${layerName}:${version}`;
547
- const layerArn = `arn:aws:lambda:sa-east-1:${fixtures_2.mockAwsAccount}:layer:${layerNameWithVersion}`;
548
- expect((0, commons_1.getLayerNameWithVersion)(layerArn)).toBe(layerNameWithVersion);
549
- });
550
- test('returns undefined if arn is incomplete', () => {
551
- const layerArn = `arn:aws:lambda:sa-east-1:${fixtures_2.mockAwsAccount}:layer:Datadog-Python39`;
552
- expect((0, commons_1.getLayerNameWithVersion)(layerArn)).toBe(undefined);
553
- });
554
- });
555
- describe('getRegion', () => {
556
- test('should return the expected region', () => {
557
- const functionARN = 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world';
558
- const expectedRegion = 'us-east-1';
559
- const region = (0, commons_1.getRegion)(functionARN);
560
- expect(region).toBe(expectedRegion);
561
- });
562
- test('should return undefined if Function ARN does not contain the region', () => {
563
- const functionName = 'lambda-hello-world';
564
- const region = (0, commons_1.getRegion)(functionName);
565
- expect(region).toBe(undefined);
566
- });
567
- });
568
- describe('sentenceMatchesRegEx', () => {
569
- const tags = [
570
- ['not@complying:regex-should-fail', false],
571
- ['1first-char-is-number:should-fail', false],
572
- ['_also-not-complying:should-fail', false],
573
- ['complying_tag:accepted/with/slashes.and.dots,but-empty-tag', false],
574
- ['also_complying:success,1but_is_illegal:should-fail', false],
575
- ['this:complies,also_this_one:yes,numb3r_in_name:should-succeed,dots:al.lo.wed', true],
576
- ['complying_ip_address_4:192.342.3134.231', true],
577
- ['complying:alone', true],
578
- ['one_divided_by_two:1/2,one_divided_by_four:0.25,three_minus_one_half:3-1/2', true],
579
- ['this_is_a_valid_t4g:yes/it.is-42', true],
580
- // multiple colons, periods in tag, slashes in tag
581
- ['env-staging:east:staging,version.minor:1,version.major:3.4/v3,category/service:not/defined', true],
582
- ['email:user@email.com,numb3r:t', true],
583
- ];
584
- test.each(tags)('check if the tags match the expected result from the regex', (tag, expectedResult) => {
585
- const result = !!(0, commons_1.sentenceMatchesRegEx)(tag, constants_2.EXTRA_TAGS_REG_EXP);
586
- expect(result).toEqual(expectedResult);
587
- });
588
- });
589
- describe('updateLambdaFunctionConfig', () => {
590
- const OLD_ENV = process.env;
591
- beforeEach(() => {
592
- cloudWatchLogsClientMock.reset();
593
- lambdaClientMock.reset();
594
- jest.resetModules();
595
- process.env = {};
596
- });
597
- afterAll(() => {
598
- process.env = OLD_ENV;
599
- });
600
- test('updates every lambda', () => __awaiter(void 0, void 0, void 0, function* () {
601
- const configs = [
602
- {
603
- functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
604
- lambdaConfig: {
605
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
606
- Handler: 'index.handler',
607
- Runtime: client_lambda_1.Runtime.nodejs20x,
608
- },
609
- lambdaLibraryLayerArn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x',
610
- updateFunctionConfigurationCommandInput: {
611
- Environment: {
612
- Variables: {
613
- [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
614
- [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
615
- [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
616
- },
617
- },
618
- FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
619
- Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
620
- Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:22'],
621
- },
622
- },
623
- ];
624
- yield Promise.all(configs.map((config) => __awaiter(void 0, void 0, void 0, function* () { return (0, commons_1.updateLambdaFunctionConfig)(lambdaClientMock, cloudWatchLogsClientMock, config); })));
625
- expect(lambdaClientMock).toHaveReceivedCommandWith(client_lambda_1.UpdateFunctionConfigurationCommand, {
626
- Environment: {
627
- Variables: {
628
- [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
629
- [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
630
- [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
631
- },
632
- },
633
- FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
634
- Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
635
- Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:22'],
636
- });
637
- }));
638
- });
639
- describe('handleLambdaFunctionUpdates', () => {
640
- const OLD_ENV = process.env;
641
- beforeEach(() => {
642
- cloudWatchLogsClientMock.reset();
643
- lambdaClientMock.reset();
644
- jest.resetModules();
645
- process.env = {};
646
- });
647
- afterAll(() => {
648
- process.env = OLD_ENV;
649
- });
650
- const stdout = { write: (_) => jest.fn() };
651
- const getConfigs = (lambdaClient) => [
652
- {
653
- lambdaClient,
654
- cloudWatchLogsClientMock,
655
- configs: [
656
- {
657
- functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
658
- lambdaConfig: {
659
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
660
- Handler: 'index.handler',
661
- Runtime: 'nodejs20.x',
662
- },
663
- lambdaLibraryLayerArn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x',
664
- updateFunctionConfigurationCommandInput: {
665
- Environment: {
666
- Variables: {
667
- [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
668
- [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
669
- [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
670
- },
671
- },
672
- FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
673
- Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
674
- Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:XX'],
675
- },
676
- },
677
- ],
678
- region: 'us-east-1',
679
- },
680
- {
681
- lambdaClient,
682
- cloudWatchLogsClientMock,
683
- configs: [
684
- {
685
- functionARN: 'arn:aws:lambda:us-east-2:000000000000:function:autoinstrument',
686
- lambdaConfig: {
687
- FunctionArn: 'arn:aws:lambda:us-east-2:000000000000:function:autoinstrument',
688
- Handler: 'index.handler',
689
- Runtime: 'nodejs20.x',
690
- },
691
- lambdaLibraryLayerArn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x',
692
- updateFunctionConfigurationCommandInput: {
693
- Environment: {
694
- Variables: {
695
- [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
696
- [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
697
- [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
698
- },
699
- },
700
- FunctionName: 'arn:aws:lambda:us-east-2:000000000000:function:autoinstrument',
701
- Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
702
- Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:XX'],
703
- },
704
- },
705
- ],
706
- region: 'us-east-2',
707
- },
708
- ];
709
- test('throws an error when all functions from every region fail to update', () => __awaiter(void 0, void 0, void 0, function* () {
710
- lambdaClientMock.on(client_lambda_1.UpdateFunctionConfigurationCommand).rejects();
711
- const configs = getConfigs(lambdaClientMock);
712
- yield expect((0, commons_1.handleLambdaFunctionUpdates)(configs, stdout)).rejects.toThrow();
713
- }));
714
- test('to not throw an error when at least one function is updated', () => __awaiter(void 0, void 0, void 0, function* () {
715
- lambdaClientMock
716
- .on(client_lambda_1.UpdateFunctionConfigurationCommand, {
717
- FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
718
- })
719
- .rejects();
720
- const configs = getConfigs(lambdaClientMock);
721
- // when sucessful, the function doesnt do anything
722
- const result = yield (0, commons_1.handleLambdaFunctionUpdates)(configs, stdout);
723
- expect(result).toBe(undefined);
724
- }));
725
- });
726
- describe('handles multiple runtimes', () => {
727
- test('returns true if all runtimes are uniform', () => __awaiter(void 0, void 0, void 0, function* () {
728
- const configs = [
729
- {
730
- functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func3',
731
- lambdaConfig: {
732
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func3',
733
- Handler: 'index.handler',
734
- Runtime: 'nodejs16.x',
735
- },
736
- },
737
- {
738
- functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func4',
739
- lambdaConfig: {
740
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func4',
741
- Handler: 'index.handler',
742
- Runtime: 'nodejs18.x',
743
- },
744
- },
745
- {
746
- functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func5',
747
- lambdaConfig: {
748
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func5',
749
- Handler: 'index.handler',
750
- Runtime: 'nodejs20.x',
751
- },
752
- },
753
- ];
754
- expect((0, commons_1.checkRuntimeTypesAreUniform)(configs)).toBe(true);
755
- }));
756
- test('returns false if runtimes are not uniform', () => __awaiter(void 0, void 0, void 0, function* () {
757
- const configs = [
758
- {
759
- functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func1',
760
- lambdaConfig: {
761
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func1',
762
- Handler: 'index.handler',
763
- Runtime: 'nodejs20.x',
764
- },
765
- },
766
- {
767
- functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func2',
768
- lambdaConfig: {
769
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func2',
770
- Handler: 'index.handler',
771
- Runtime: 'python3.9',
772
- },
773
- },
774
- ];
775
- expect((0, commons_1.checkRuntimeTypesAreUniform)(configs)).toBe(false);
776
- }));
777
- });
778
- describe('maskConfig', () => {
779
- it('should mask a Lambda config correctly', () => {
780
- const maskedConfig = (0, commons_1.maskConfig)(fixtures_2.MOCK_LAMBDA_CONFIG);
781
- expect(maskedConfig).toMatchSnapshot();
782
- });
783
- it('should not modify config if env vars are missing', () => {
784
- const lambdaConfigCopy = JSON.parse(JSON.stringify(fixtures_2.MOCK_LAMBDA_CONFIG));
785
- delete lambdaConfigCopy.Environment.Variables;
786
- const maskedConfig = (0, commons_1.maskConfig)(lambdaConfigCopy);
787
- expect(maskedConfig).toMatchSnapshot();
788
- });
789
- });
790
- });
791
- //# sourceMappingURL=commons.test.js.map