@datadog/datadog-ci 2.40.3 → 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 (252) 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/utils.js +2 -4
  8. package/dist/commands/dsyms/utils.js.map +1 -1
  9. package/dist/helpers/git/get-git-data.d.ts +2 -0
  10. package/dist/helpers/git/get-git-data.js +11 -1
  11. package/dist/helpers/git/get-git-data.js.map +1 -1
  12. package/package.json +3 -2
  13. package/dist/__tests__/cli.test.d.ts +0 -1
  14. package/dist/__tests__/cli.test.js +0 -41
  15. package/dist/__tests__/cli.test.js.map +0 -1
  16. package/dist/commands/cloud-run/__tests__/fixtures.d.ts +0 -2
  17. package/dist/commands/cloud-run/__tests__/fixtures.js +0 -12
  18. package/dist/commands/cloud-run/__tests__/fixtures.js.map +0 -1
  19. package/dist/commands/cloud-run/__tests__/flare.test.d.ts +0 -1
  20. package/dist/commands/cloud-run/__tests__/flare.test.js +0 -557
  21. package/dist/commands/cloud-run/__tests__/flare.test.js.map +0 -1
  22. package/dist/commands/deployment/__tests__/mark.test.d.ts +0 -1
  23. package/dist/commands/deployment/__tests__/mark.test.js +0 -47
  24. package/dist/commands/deployment/__tests__/mark.test.js.map +0 -1
  25. package/dist/commands/dora/__tests__/deployment.test.d.ts +0 -1
  26. package/dist/commands/dora/__tests__/deployment.test.js +0 -201
  27. package/dist/commands/dora/__tests__/deployment.test.js.map +0 -1
  28. package/dist/commands/dsyms/__tests__/upload.test.d.ts +0 -1
  29. package/dist/commands/dsyms/__tests__/upload.test.js +0 -346
  30. package/dist/commands/dsyms/__tests__/upload.test.js.map +0 -1
  31. package/dist/commands/dsyms/__tests__/utils.test.d.ts +0 -1
  32. package/dist/commands/dsyms/__tests__/utils.test.js +0 -103
  33. package/dist/commands/dsyms/__tests__/utils.test.js.map +0 -1
  34. package/dist/commands/elf-symbols/__tests__/elf.test.d.ts +0 -1
  35. package/dist/commands/elf-symbols/__tests__/elf.test.js +0 -813
  36. package/dist/commands/elf-symbols/__tests__/elf.test.js.map +0 -1
  37. package/dist/commands/elf-symbols/__tests__/upload.test.d.ts +0 -1
  38. package/dist/commands/elf-symbols/__tests__/upload.test.js +0 -249
  39. package/dist/commands/elf-symbols/__tests__/upload.test.js.map +0 -1
  40. package/dist/commands/flutter-symbols/__tests__/upload.test.d.ts +0 -1
  41. package/dist/commands/flutter-symbols/__tests__/upload.test.js +0 -617
  42. package/dist/commands/flutter-symbols/__tests__/upload.test.js.map +0 -1
  43. package/dist/commands/gate/__tests__/evaluate.test.d.ts +0 -1
  44. package/dist/commands/gate/__tests__/evaluate.test.js +0 -398
  45. package/dist/commands/gate/__tests__/evaluate.test.js.map +0 -1
  46. package/dist/commands/gate/__tests__/scope.test.d.ts +0 -1
  47. package/dist/commands/gate/__tests__/scope.test.js +0 -29
  48. package/dist/commands/gate/__tests__/scope.test.js.map +0 -1
  49. package/dist/commands/git-metadata/__tests__/git.test.d.ts +0 -1
  50. package/dist/commands/git-metadata/__tests__/git.test.js +0 -132
  51. package/dist/commands/git-metadata/__tests__/git.test.js.map +0 -1
  52. package/dist/commands/git-metadata/__tests__/gitdb.test.d.ts +0 -1
  53. package/dist/commands/git-metadata/__tests__/gitdb.test.js +0 -1386
  54. package/dist/commands/git-metadata/__tests__/gitdb.test.js.map +0 -1
  55. package/dist/commands/git-metadata/__tests__/library.test.d.ts +0 -1
  56. package/dist/commands/git-metadata/__tests__/library.test.js +0 -118
  57. package/dist/commands/git-metadata/__tests__/library.test.js.map +0 -1
  58. package/dist/commands/git-metadata/__tests__/upload.test.d.ts +0 -1
  59. package/dist/commands/git-metadata/__tests__/upload.test.js +0 -52
  60. package/dist/commands/git-metadata/__tests__/upload.test.js.map +0 -1
  61. package/dist/commands/junit/__tests__/id.test.d.ts +0 -1
  62. package/dist/commands/junit/__tests__/id.test.js +0 -24
  63. package/dist/commands/junit/__tests__/id.test.js.map +0 -1
  64. package/dist/commands/junit/__tests__/upload.test.d.ts +0 -1
  65. package/dist/commands/junit/__tests__/upload.test.js +0 -495
  66. package/dist/commands/junit/__tests__/upload.test.js.map +0 -1
  67. package/dist/commands/lambda/__tests__/fixtures.d.ts +0 -51
  68. package/dist/commands/lambda/__tests__/fixtures.js +0 -146
  69. package/dist/commands/lambda/__tests__/fixtures.js.map +0 -1
  70. package/dist/commands/lambda/__tests__/flare.test.d.ts +0 -1
  71. package/dist/commands/lambda/__tests__/flare.test.js +0 -730
  72. package/dist/commands/lambda/__tests__/flare.test.js.map +0 -1
  73. package/dist/commands/lambda/__tests__/functions/commons.test.d.ts +0 -1
  74. package/dist/commands/lambda/__tests__/functions/commons.test.js +0 -791
  75. package/dist/commands/lambda/__tests__/functions/commons.test.js.map +0 -1
  76. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.d.ts +0 -1
  77. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js +0 -386
  78. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js.map +0 -1
  79. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.d.ts +0 -1
  80. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js +0 -721
  81. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js.map +0 -1
  82. package/dist/commands/lambda/__tests__/functions/uninstrument.test.d.ts +0 -1
  83. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js +0 -513
  84. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js.map +0 -1
  85. package/dist/commands/lambda/__tests__/functions/versionChecker.test.d.ts +0 -1
  86. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js +0 -33
  87. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js.map +0 -1
  88. package/dist/commands/lambda/__tests__/instrument.test.d.ts +0 -1
  89. package/dist/commands/lambda/__tests__/instrument.test.js +0 -1511
  90. package/dist/commands/lambda/__tests__/instrument.test.js.map +0 -1
  91. package/dist/commands/lambda/__tests__/loggroup.test.d.ts +0 -1
  92. package/dist/commands/lambda/__tests__/loggroup.test.js +0 -340
  93. package/dist/commands/lambda/__tests__/loggroup.test.js.map +0 -1
  94. package/dist/commands/lambda/__tests__/prompt.test.d.ts +0 -1
  95. package/dist/commands/lambda/__tests__/prompt.test.js +0 -206
  96. package/dist/commands/lambda/__tests__/prompt.test.js.map +0 -1
  97. package/dist/commands/lambda/__tests__/tags.test.d.ts +0 -1
  98. package/dist/commands/lambda/__tests__/tags.test.js +0 -305
  99. package/dist/commands/lambda/__tests__/tags.test.js.map +0 -1
  100. package/dist/commands/lambda/__tests__/uninstrument.test.d.ts +0 -1
  101. package/dist/commands/lambda/__tests__/uninstrument.test.js +0 -722
  102. package/dist/commands/lambda/__tests__/uninstrument.test.js.map +0 -1
  103. package/dist/commands/measure/__tests__/measure.test.d.ts +0 -1
  104. package/dist/commands/measure/__tests__/measure.test.js +0 -110
  105. package/dist/commands/measure/__tests__/measure.test.js.map +0 -1
  106. package/dist/commands/react-native/__tests__/codepush.test.d.ts +0 -1
  107. package/dist/commands/react-native/__tests__/codepush.test.js +0 -161
  108. package/dist/commands/react-native/__tests__/codepush.test.js.map +0 -1
  109. package/dist/commands/react-native/__tests__/interfaces.test.d.ts +0 -1
  110. package/dist/commands/react-native/__tests__/interfaces.test.js +0 -33
  111. package/dist/commands/react-native/__tests__/interfaces.test.js.map +0 -1
  112. package/dist/commands/react-native/__tests__/upload.test.d.ts +0 -1
  113. package/dist/commands/react-native/__tests__/upload.test.js +0 -238
  114. package/dist/commands/react-native/__tests__/upload.test.js.map +0 -1
  115. package/dist/commands/react-native/__tests__/utils.test.d.ts +0 -1
  116. package/dist/commands/react-native/__tests__/utils.test.js +0 -27
  117. package/dist/commands/react-native/__tests__/utils.test.js.map +0 -1
  118. package/dist/commands/react-native/__tests__/xcode.test.d.ts +0 -1
  119. package/dist/commands/react-native/__tests__/xcode.test.js +0 -465
  120. package/dist/commands/react-native/__tests__/xcode.test.js.map +0 -1
  121. package/dist/commands/sarif/__tests__/upload.test.d.ts +0 -1
  122. package/dist/commands/sarif/__tests__/upload.test.js +0 -228
  123. package/dist/commands/sarif/__tests__/upload.test.js.map +0 -1
  124. package/dist/commands/sbom/__tests__/payload.test.d.ts +0 -1
  125. package/dist/commands/sbom/__tests__/payload.test.js +0 -262
  126. package/dist/commands/sbom/__tests__/payload.test.js.map +0 -1
  127. package/dist/commands/sbom/__tests__/validation.test.d.ts +0 -1
  128. package/dist/commands/sbom/__tests__/validation.test.js +0 -41
  129. package/dist/commands/sbom/__tests__/validation.test.js.map +0 -1
  130. package/dist/commands/sourcemaps/__tests__/upload.test.d.ts +0 -1
  131. package/dist/commands/sourcemaps/__tests__/upload.test.js +0 -270
  132. package/dist/commands/sourcemaps/__tests__/upload.test.js.map +0 -1
  133. package/dist/commands/sourcemaps/__tests__/utils.test.d.ts +0 -1
  134. package/dist/commands/sourcemaps/__tests__/utils.test.js +0 -31
  135. package/dist/commands/sourcemaps/__tests__/utils.test.js.map +0 -1
  136. package/dist/commands/stepfunctions/__tests__/awsCommands.test.d.ts +0 -1
  137. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js +0 -192
  138. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js.map +0 -1
  139. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.d.ts +0 -6
  140. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js +0 -45
  141. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js.map +0 -1
  142. package/dist/commands/stepfunctions/__tests__/fixtures/cli.d.ts +0 -5
  143. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js +0 -19
  144. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js.map +0 -1
  145. package/dist/commands/stepfunctions/__tests__/helpers.test.d.ts +0 -1
  146. package/dist/commands/stepfunctions/__tests__/helpers.test.js +0 -205
  147. package/dist/commands/stepfunctions/__tests__/helpers.test.js.map +0 -1
  148. package/dist/commands/stepfunctions/__tests__/instrument.test.d.ts +0 -1
  149. package/dist/commands/stepfunctions/__tests__/instrument.test.js +0 -431
  150. package/dist/commands/stepfunctions/__tests__/instrument.test.js.map +0 -1
  151. package/dist/commands/stepfunctions/__tests__/uninstrument.test.d.ts +0 -1
  152. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js +0 -166
  153. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js.map +0 -1
  154. package/dist/commands/synthetics/__tests__/api.test.d.ts +0 -1
  155. package/dist/commands/synthetics/__tests__/api.test.js +0 -422
  156. package/dist/commands/synthetics/__tests__/api.test.js.map +0 -1
  157. package/dist/commands/synthetics/__tests__/cli.test.d.ts +0 -1
  158. package/dist/commands/synthetics/__tests__/cli.test.js +0 -1325
  159. package/dist/commands/synthetics/__tests__/cli.test.js.map +0 -1
  160. package/dist/commands/synthetics/__tests__/fixtures.d.ts +0 -149
  161. package/dist/commands/synthetics/__tests__/fixtures.js +0 -507
  162. package/dist/commands/synthetics/__tests__/fixtures.js.map +0 -1
  163. package/dist/commands/synthetics/__tests__/mobile.test.d.ts +0 -1
  164. package/dist/commands/synthetics/__tests__/mobile.test.js +0 -376
  165. package/dist/commands/synthetics/__tests__/mobile.test.js.map +0 -1
  166. package/dist/commands/synthetics/__tests__/reporters/default.test.d.ts +0 -1
  167. package/dist/commands/synthetics/__tests__/reporters/default.test.js +0 -354
  168. package/dist/commands/synthetics/__tests__/reporters/default.test.js.map +0 -1
  169. package/dist/commands/synthetics/__tests__/reporters/junit.test.d.ts +0 -1
  170. package/dist/commands/synthetics/__tests__/reporters/junit.test.js +0 -353
  171. package/dist/commands/synthetics/__tests__/reporters/junit.test.js.map +0 -1
  172. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.d.ts +0 -1
  173. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js +0 -232
  174. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js.map +0 -1
  175. package/dist/commands/synthetics/__tests__/run-tests-lib.test.d.ts +0 -1
  176. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js +0 -735
  177. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js.map +0 -1
  178. package/dist/commands/synthetics/__tests__/test.test.d.ts +0 -1
  179. package/dist/commands/synthetics/__tests__/test.test.js +0 -33
  180. package/dist/commands/synthetics/__tests__/test.test.js.map +0 -1
  181. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.d.ts +0 -1
  182. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js +0 -21
  183. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js.map +0 -1
  184. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.d.ts +0 -1
  185. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js +0 -80
  186. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js.map +0 -1
  187. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.d.ts +0 -1
  188. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js +0 -109
  189. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js.map +0 -1
  190. package/dist/commands/synthetics/__tests__/utils/internal.test.d.ts +0 -1
  191. package/dist/commands/synthetics/__tests__/utils/internal.test.js +0 -186
  192. package/dist/commands/synthetics/__tests__/utils/internal.test.js.map +0 -1
  193. package/dist/commands/synthetics/__tests__/utils/public.test.d.ts +0 -1
  194. package/dist/commands/synthetics/__tests__/utils/public.test.js +0 -1526
  195. package/dist/commands/synthetics/__tests__/utils/public.test.js.map +0 -1
  196. package/dist/commands/tag/__tests__/tag.test.d.ts +0 -1
  197. package/dist/commands/tag/__tests__/tag.test.js +0 -75
  198. package/dist/commands/tag/__tests__/tag.test.js.map +0 -1
  199. package/dist/commands/trace/__tests__/trace.test.d.ts +0 -1
  200. package/dist/commands/trace/__tests__/trace.test.js +0 -145
  201. package/dist/commands/trace/__tests__/trace.test.js.map +0 -1
  202. package/dist/commands/unity-symbols/__tests__/upload.test.d.ts +0 -1
  203. package/dist/commands/unity-symbols/__tests__/upload.test.js +0 -369
  204. package/dist/commands/unity-symbols/__tests__/upload.test.js.map +0 -1
  205. package/dist/helpers/__tests__/app.test.d.ts +0 -1
  206. package/dist/helpers/__tests__/app.test.js +0 -31
  207. package/dist/helpers/__tests__/app.test.js.map +0 -1
  208. package/dist/helpers/__tests__/ci.test.d.ts +0 -1
  209. package/dist/helpers/__tests__/ci.test.js +0 -252
  210. package/dist/helpers/__tests__/ci.test.js.map +0 -1
  211. package/dist/helpers/__tests__/fixtures.d.ts +0 -33
  212. package/dist/helpers/__tests__/fixtures.js +0 -71
  213. package/dist/helpers/__tests__/fixtures.js.map +0 -1
  214. package/dist/helpers/__tests__/flare.test.d.ts +0 -1
  215. package/dist/helpers/__tests__/flare.test.js +0 -226
  216. package/dist/helpers/__tests__/flare.test.js.map +0 -1
  217. package/dist/helpers/__tests__/fs.test.d.ts +0 -1
  218. package/dist/helpers/__tests__/fs.test.js +0 -189
  219. package/dist/helpers/__tests__/fs.test.js.map +0 -1
  220. package/dist/helpers/__tests__/plist.test.d.ts +0 -1
  221. package/dist/helpers/__tests__/plist.test.js +0 -43
  222. package/dist/helpers/__tests__/plist.test.js.map +0 -1
  223. package/dist/helpers/__tests__/prompt.test.d.ts +0 -1
  224. package/dist/helpers/__tests__/prompt.test.js +0 -71
  225. package/dist/helpers/__tests__/prompt.test.js.map +0 -1
  226. package/dist/helpers/__tests__/retry.test.d.ts +0 -1
  227. package/dist/helpers/__tests__/retry.test.js +0 -99
  228. package/dist/helpers/__tests__/retry.test.js.map +0 -1
  229. package/dist/helpers/__tests__/tags.test.d.ts +0 -1
  230. package/dist/helpers/__tests__/tags.test.js +0 -71
  231. package/dist/helpers/__tests__/tags.test.js.map +0 -1
  232. package/dist/helpers/__tests__/upload.test.d.ts +0 -1
  233. package/dist/helpers/__tests__/upload.test.js +0 -231
  234. package/dist/helpers/__tests__/upload.test.js.map +0 -1
  235. package/dist/helpers/__tests__/user-provided-git.test.d.ts +0 -1
  236. package/dist/helpers/__tests__/user-provided-git.test.js +0 -119
  237. package/dist/helpers/__tests__/user-provided-git.test.js.map +0 -1
  238. package/dist/helpers/__tests__/utils.test.d.ts +0 -1
  239. package/dist/helpers/__tests__/utils.test.js +0 -429
  240. package/dist/helpers/__tests__/utils.test.js.map +0 -1
  241. package/dist/helpers/__tests__/validation.test.d.ts +0 -1
  242. package/dist/helpers/__tests__/validation.test.js +0 -25
  243. package/dist/helpers/__tests__/validation.test.js.map +0 -1
  244. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.d.ts +0 -1
  245. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js +0 -103
  246. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js.map +0 -1
  247. package/dist/helpers/git/__tests__/format-git-span-data.test.d.ts +0 -1
  248. package/dist/helpers/git/__tests__/format-git-span-data.test.js +0 -121
  249. package/dist/helpers/git/__tests__/format-git-span-data.test.js.map +0 -1
  250. package/dist/helpers/git/__tests__/get-git-data.test.d.ts +0 -1
  251. package/dist/helpers/git/__tests__/get-git-data.test.js +0 -72
  252. 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