serverless-plugin-datadog 3.3.0 → 3.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. package/README.md +31 -38
  2. package/dist/package.json +11 -2
  3. package/dist/src/env.d.ts +6 -3
  4. package/dist/src/env.d.ts.map +1 -1
  5. package/dist/src/env.js +25 -3
  6. package/dist/src/env.js.map +1 -1
  7. package/dist/src/git-metadata/__tests__/git.test.d.ts +2 -0
  8. package/dist/src/git-metadata/__tests__/git.test.d.ts.map +1 -0
  9. package/dist/src/git-metadata/__tests__/git.test.js +106 -0
  10. package/dist/src/git-metadata/__tests__/git.test.js.map +1 -0
  11. package/dist/src/git-metadata/api.d.ts +4 -0
  12. package/dist/src/git-metadata/api.d.ts.map +1 -0
  13. package/dist/src/git-metadata/api.js +13 -0
  14. package/dist/src/git-metadata/api.js.map +1 -0
  15. package/dist/src/git-metadata/interfaces.d.ts +10 -0
  16. package/dist/src/git-metadata/interfaces.d.ts.map +1 -0
  17. package/dist/src/git-metadata/interfaces.js +43 -0
  18. package/dist/src/git-metadata/interfaces.js.map +1 -0
  19. package/dist/src/git-metadata/renderer.d.ts +9 -0
  20. package/dist/src/git-metadata/renderer.d.ts.map +1 -0
  21. package/dist/src/git-metadata/renderer.js +32 -0
  22. package/dist/src/git-metadata/renderer.js.map +1 -0
  23. package/dist/src/git.d.ts +8 -0
  24. package/dist/src/git.d.ts.map +1 -0
  25. package/dist/src/git.js +115 -0
  26. package/dist/src/git.js.map +1 -0
  27. package/dist/src/helpers/__tests__/ci.test.d.ts +2 -0
  28. package/dist/src/helpers/__tests__/ci.test.d.ts.map +1 -0
  29. package/dist/src/helpers/__tests__/ci.test.js +147 -0
  30. package/dist/src/helpers/__tests__/ci.test.js.map +1 -0
  31. package/dist/src/helpers/__tests__/git.test.d.ts +2 -0
  32. package/dist/src/helpers/__tests__/git.test.d.ts.map +1 -0
  33. package/dist/src/helpers/__tests__/git.test.js +65 -0
  34. package/dist/src/helpers/__tests__/git.test.js.map +1 -0
  35. package/dist/src/helpers/__tests__/retry.test.d.ts +2 -0
  36. package/dist/src/helpers/__tests__/retry.test.d.ts.map +1 -0
  37. package/dist/src/helpers/__tests__/retry.test.js +99 -0
  38. package/dist/src/helpers/__tests__/retry.test.js.map +1 -0
  39. package/dist/src/helpers/__tests__/tags.test.d.ts +2 -0
  40. package/dist/src/helpers/__tests__/tags.test.d.ts.map +1 -0
  41. package/dist/src/helpers/__tests__/tags.test.js +17 -0
  42. package/dist/src/helpers/__tests__/tags.test.js.map +1 -0
  43. package/dist/src/helpers/__tests__/upload.test.d.ts +2 -0
  44. package/dist/src/helpers/__tests__/upload.test.d.ts.map +1 -0
  45. package/dist/src/helpers/__tests__/upload.test.js +185 -0
  46. package/dist/src/helpers/__tests__/upload.test.js.map +1 -0
  47. package/dist/src/helpers/__tests__/user-provided-git.test.d.ts +2 -0
  48. package/dist/src/helpers/__tests__/user-provided-git.test.d.ts.map +1 -0
  49. package/dist/src/helpers/__tests__/user-provided-git.test.js +64 -0
  50. package/dist/src/helpers/__tests__/user-provided-git.test.js.map +1 -0
  51. package/dist/src/helpers/__tests__/utils.test.d.ts +2 -0
  52. package/dist/src/helpers/__tests__/utils.test.d.ts.map +1 -0
  53. package/dist/src/helpers/__tests__/utils.test.js +345 -0
  54. package/dist/src/helpers/__tests__/utils.test.js.map +1 -0
  55. package/dist/src/helpers/apikey.d.ts +13 -0
  56. package/dist/src/helpers/apikey.d.ts.map +1 -0
  57. package/dist/src/helpers/apikey.js +74 -0
  58. package/dist/src/helpers/apikey.js.map +1 -0
  59. package/dist/src/helpers/ci.d.ts +16 -0
  60. package/dist/src/helpers/ci.d.ts.map +1 -0
  61. package/dist/src/helpers/ci.js +378 -0
  62. package/dist/src/helpers/ci.js.map +1 -0
  63. package/dist/src/helpers/errors.d.ts +3 -0
  64. package/dist/src/helpers/errors.d.ts.map +1 -0
  65. package/dist/src/helpers/errors.js +7 -0
  66. package/dist/src/helpers/errors.js.map +1 -0
  67. package/dist/src/helpers/formatting.d.ts +6 -0
  68. package/dist/src/helpers/formatting.d.ts.map +1 -0
  69. package/dist/src/helpers/formatting.js +13 -0
  70. package/dist/src/helpers/formatting.js.map +1 -0
  71. package/dist/src/helpers/git.d.ts +3 -0
  72. package/dist/src/helpers/git.d.ts.map +1 -0
  73. package/dist/src/helpers/git.js +52 -0
  74. package/dist/src/helpers/git.js.map +1 -0
  75. package/dist/src/helpers/interfaces.d.ts +20 -0
  76. package/dist/src/helpers/interfaces.d.ts.map +1 -0
  77. package/dist/src/helpers/interfaces.js +3 -0
  78. package/dist/src/helpers/interfaces.js.map +1 -0
  79. package/dist/src/helpers/metrics.d.ts +12 -0
  80. package/dist/src/helpers/metrics.d.ts.map +1 -0
  81. package/dist/src/helpers/metrics.js +36 -0
  82. package/dist/src/helpers/metrics.js.map +1 -0
  83. package/dist/src/helpers/retry.d.ts +3 -0
  84. package/dist/src/helpers/retry.d.ts.map +1 -0
  85. package/dist/src/helpers/retry.js +39 -0
  86. package/dist/src/helpers/retry.js.map +1 -0
  87. package/dist/src/helpers/tags.d.ts +29 -0
  88. package/dist/src/helpers/tags.d.ts.map +1 -0
  89. package/dist/src/helpers/tags.js +50 -0
  90. package/dist/src/helpers/tags.js.map +1 -0
  91. package/dist/src/helpers/upload.d.ts +45 -0
  92. package/dist/src/helpers/upload.d.ts.map +1 -0
  93. package/dist/src/helpers/upload.js +70 -0
  94. package/dist/src/helpers/upload.js.map +1 -0
  95. package/dist/src/helpers/user-provided-git.d.ts +2 -0
  96. package/dist/src/helpers/user-provided-git.d.ts.map +1 -0
  97. package/dist/src/helpers/user-provided-git.js +23 -0
  98. package/dist/src/helpers/user-provided-git.js.map +1 -0
  99. package/dist/src/helpers/utils.d.ts +31 -0
  100. package/dist/src/helpers/utils.d.ts.map +1 -0
  101. package/dist/src/helpers/utils.js +115 -0
  102. package/dist/src/helpers/utils.js.map +1 -0
  103. package/dist/src/index.d.ts +9 -1
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +57 -13
  106. package/dist/src/index.js.map +1 -1
  107. package/dist/src/layer.d.ts.map +1 -1
  108. package/dist/src/layer.js +1 -2
  109. package/dist/src/layer.js.map +1 -1
  110. package/dist/src/layers-gov.json +8 -8
  111. package/dist/src/layers.json +84 -84
  112. package/dist/src/source-code-integration.d.ts +12 -0
  113. package/dist/src/source-code-integration.d.ts.map +1 -0
  114. package/dist/src/source-code-integration.js +76 -0
  115. package/dist/src/source-code-integration.js.map +1 -0
  116. package/package.json +11 -2
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ const axios_1 = __importDefault(require("axios"));
35
+ const upload_1 = require("../upload");
36
+ const ciUtils = __importStar(require("../utils"));
37
+ describe("upload", () => {
38
+ describe("upload", () => {
39
+ const errorCallback = jest.fn();
40
+ const retryCallback = jest.fn();
41
+ const uploadCallback = jest.fn();
42
+ const verifyKey = jest.fn();
43
+ const mockAxiosResponse = (responses) => {
44
+ let mock = jest.spyOn(axios_1.default, "create");
45
+ responses.forEach((response) => {
46
+ mock = mock.mockImplementationOnce((() => response));
47
+ });
48
+ mock.mockImplementation((() => () => undefined));
49
+ return mock;
50
+ };
51
+ beforeEach(() => {
52
+ jest.restoreAllMocks();
53
+ });
54
+ test("should upload successfully a multipart payload", () => __awaiter(void 0, void 0, void 0, function* () {
55
+ const mockCreate = mockAxiosResponse([() => Promise.resolve({})]);
56
+ const request = ciUtils.getRequestBuilder({ apiKey: "", baseUrl: "" });
57
+ const result = yield (0, upload_1.upload)(request)({ content: new Map() }, {
58
+ onError: errorCallback,
59
+ onRetry: retryCallback,
60
+ onUpload: uploadCallback,
61
+ retries: 5,
62
+ });
63
+ expect(mockCreate).toBeCalledTimes(1);
64
+ expect(uploadCallback).toBeCalledTimes(1);
65
+ expect(errorCallback).toBeCalledTimes(0);
66
+ expect(retryCallback).toBeCalledTimes(0);
67
+ expect(result).toStrictEqual(upload_1.UploadStatus.Success);
68
+ }));
69
+ test("should retry retriable failed requests", () => __awaiter(void 0, void 0, void 0, function* () {
70
+ const mockCreate = mockAxiosResponse([
71
+ () => Promise.reject({
72
+ response: {
73
+ status: 500,
74
+ },
75
+ }),
76
+ () => Promise.resolve({}),
77
+ ]);
78
+ const request = ciUtils.getRequestBuilder({ apiKey: "", baseUrl: "" });
79
+ const result = yield (0, upload_1.upload)(request)({ content: new Map() }, {
80
+ onError: errorCallback,
81
+ onRetry: retryCallback,
82
+ onUpload: uploadCallback,
83
+ retries: 5,
84
+ });
85
+ expect(mockCreate).toBeCalledTimes(2);
86
+ expect(uploadCallback).toBeCalledTimes(1);
87
+ expect(errorCallback).toBeCalledTimes(0);
88
+ expect(retryCallback).toBeCalledTimes(1);
89
+ expect(result).toStrictEqual(upload_1.UploadStatus.Success);
90
+ }));
91
+ test("should not retry some clients failures", () => __awaiter(void 0, void 0, void 0, function* () {
92
+ const mockCreate = mockAxiosResponse([
93
+ () => Promise.reject({
94
+ response: {
95
+ status: 413,
96
+ },
97
+ }),
98
+ ]);
99
+ const request = ciUtils.getRequestBuilder({ apiKey: "", baseUrl: "" });
100
+ const result = yield (0, upload_1.upload)(request)({ content: new Map() }, {
101
+ onError: errorCallback,
102
+ onRetry: retryCallback,
103
+ onUpload: uploadCallback,
104
+ retries: 5,
105
+ });
106
+ expect(mockCreate).toBeCalledTimes(1);
107
+ expect(uploadCallback).toBeCalledTimes(1);
108
+ expect(errorCallback).toBeCalledTimes(1);
109
+ expect(retryCallback).toBeCalledTimes(0);
110
+ expect(result).toStrictEqual(upload_1.UploadStatus.Failure);
111
+ }));
112
+ test("should retry only a given amount of times", () => __awaiter(void 0, void 0, void 0, function* () {
113
+ const mockCreate = mockAxiosResponse([
114
+ () => Promise.reject({
115
+ response: {
116
+ status: 413,
117
+ },
118
+ }),
119
+ () => Promise.reject({
120
+ response: {
121
+ status: 413,
122
+ },
123
+ }),
124
+ ]);
125
+ const request = ciUtils.getRequestBuilder({ apiKey: "", baseUrl: "" });
126
+ const result = yield (0, upload_1.upload)(request)({ content: new Map() }, {
127
+ onError: errorCallback,
128
+ onRetry: retryCallback,
129
+ onUpload: uploadCallback,
130
+ retries: 1,
131
+ });
132
+ expect(mockCreate).toBeCalledTimes(1);
133
+ expect(uploadCallback).toBeCalledTimes(1);
134
+ expect(errorCallback).toBeCalledTimes(1);
135
+ expect(retryCallback).toBeCalledTimes(0);
136
+ expect(result).toStrictEqual(upload_1.UploadStatus.Failure);
137
+ }));
138
+ test("apiKeyValidator should not be called in case of success", () => __awaiter(void 0, void 0, void 0, function* () {
139
+ const mockCreate = mockAxiosResponse([() => Promise.resolve({})]);
140
+ const request = ciUtils.getRequestBuilder({ apiKey: "", baseUrl: "" });
141
+ verifyKey.mockImplementation(() => Promise.resolve());
142
+ const result = yield (0, upload_1.upload)(request)({ content: new Map() }, {
143
+ apiKeyValidator: {
144
+ verifyApiKey: verifyKey,
145
+ },
146
+ onError: errorCallback,
147
+ onRetry: retryCallback,
148
+ onUpload: uploadCallback,
149
+ retries: 1,
150
+ });
151
+ expect(mockCreate).toBeCalledTimes(1);
152
+ expect(verifyKey).toBeCalledTimes(0);
153
+ expect(uploadCallback).toBeCalledTimes(1);
154
+ expect(errorCallback).toBeCalledTimes(0);
155
+ expect(retryCallback).toBeCalledTimes(0);
156
+ expect(result).toStrictEqual(upload_1.UploadStatus.Success);
157
+ }));
158
+ test("apiKeyValidator should be called in case of ambiguous response", () => __awaiter(void 0, void 0, void 0, function* () {
159
+ const mockCreate = mockAxiosResponse([
160
+ () => Promise.reject({
161
+ response: {
162
+ status: 400,
163
+ },
164
+ }),
165
+ ]);
166
+ const request = ciUtils.getRequestBuilder({ apiKey: "", baseUrl: "" });
167
+ verifyKey.mockImplementation(() => Promise.reject("errorApiKey"));
168
+ const result = (0, upload_1.upload)(request)({ content: new Map() }, {
169
+ apiKeyValidator: {
170
+ verifyApiKey: verifyKey,
171
+ },
172
+ onError: errorCallback,
173
+ onRetry: retryCallback,
174
+ onUpload: uploadCallback,
175
+ retries: 1,
176
+ });
177
+ yield expect(result).rejects.toMatch("errorApiKey");
178
+ expect(mockCreate).toBeCalledTimes(1);
179
+ expect(uploadCallback).toBeCalledTimes(1);
180
+ expect(errorCallback).toBeCalledTimes(0);
181
+ expect(retryCallback).toBeCalledTimes(0);
182
+ }));
183
+ });
184
+ });
185
+ //# sourceMappingURL=upload.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.test.js","sourceRoot":"","sources":["../../../../src/helpers/__tests__/upload.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyC;AACzC,sCAAiD;AACjD,kDAAoC;AAEpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,iBAAiB,GAAG,CAAC,SAAiC,EAAE,EAAE;YAC9D,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAK,EAAE,QAAQ,CAAC,CAAC;YACvC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC7B,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAQ,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAQ,CAAC,CAAC;YAExD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gDAAgD,EAAE,GAAS,EAAE;YAChE,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAElE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAClC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EACtB;gBACE,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE,CAAC;aACX,CACF,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,qBAAY,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,IAAI,CAAC,wCAAwC,EAAE,GAAS,EAAE;YACxD,MAAM,UAAU,GAAG,iBAAiB,CAAC;gBACnC,GAAG,EAAE,CACH,OAAO,CAAC,MAAM,CAAC;oBACb,QAAQ,EAAE;wBACR,MAAM,EAAE,GAAG;qBACZ;iBACF,CAAC;gBACJ,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;aAC1B,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAClC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EACtB;gBACE,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE,CAAC;aACX,CACF,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,qBAAY,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,IAAI,CAAC,wCAAwC,EAAE,GAAS,EAAE;YACxD,MAAM,UAAU,GAAG,iBAAiB,CAAC;gBACnC,GAAG,EAAE,CACH,OAAO,CAAC,MAAM,CAAC;oBACb,QAAQ,EAAE;wBACR,MAAM,EAAE,GAAG;qBACZ;iBACF,CAAC;aACL,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAClC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EACtB;gBACE,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE,CAAC;aACX,CACF,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,qBAAY,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,IAAI,CAAC,2CAA2C,EAAE,GAAS,EAAE;YAC3D,MAAM,UAAU,GAAG,iBAAiB,CAAC;gBACnC,GAAG,EAAE,CACH,OAAO,CAAC,MAAM,CAAC;oBACb,QAAQ,EAAE;wBACR,MAAM,EAAE,GAAG;qBACZ;iBACF,CAAC;gBACJ,GAAG,EAAE,CACH,OAAO,CAAC,MAAM,CAAC;oBACb,QAAQ,EAAE;wBACR,MAAM,EAAE,GAAG;qBACZ;iBACF,CAAC;aACL,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAClC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EACtB;gBACE,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE,CAAC;aACX,CACF,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,qBAAY,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,IAAI,CAAC,yDAAyD,EAAE,GAAS,EAAE;YACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAClC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EACtB;gBACE,eAAe,EAAE;oBACf,YAAY,EAAE,SAAS;iBACxB;gBACD,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE,CAAC;aACX,CACF,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,qBAAY,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,IAAI,CAAC,gEAAgE,EAAE,GAAS,EAAE;YAChF,MAAM,UAAU,GAAG,iBAAiB,CAAC;gBACnC,GAAG,EAAE,CACH,OAAO,CAAC,MAAM,CAAC;oBACb,QAAQ,EAAE;wBACR,MAAM,EAAE,GAAG;qBACZ;iBACF,CAAC;aACL,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAA,eAAM,EAAC,OAAO,CAAC,CAC5B,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EACtB;gBACE,eAAe,EAAE;oBACf,YAAY,EAAE,SAAS;iBACxB;gBACD,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE,CAAC;aACX,CACF,CAAC;YACF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACpD,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=user-provided-git.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-provided-git.test.d.ts","sourceRoot":"","sources":["../../../../src/helpers/__tests__/user-provided-git.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tags_1 = require("../tags");
4
+ const user_provided_git_1 = require("../user-provided-git");
5
+ describe("getUserGitMetadata", () => {
6
+ it("reads user defined git metadata successfully", () => {
7
+ process.env.DD_GIT_COMMIT_SHA = "DD_GIT_COMMIT_SHA";
8
+ process.env.DD_GIT_REPOSITORY_URL = "DD_GIT_REPOSITORY_URL";
9
+ process.env.DD_GIT_BRANCH = "DD_GIT_BRANCH";
10
+ process.env.DD_GIT_TAG = "DD_GIT_TAG";
11
+ process.env.DD_GIT_COMMIT_MESSAGE = "DD_GIT_COMMIT_MESSAGE";
12
+ process.env.DD_GIT_COMMIT_AUTHOR_NAME = "DD_GIT_COMMIT_AUTHOR_NAME";
13
+ process.env.DD_GIT_COMMIT_AUTHOR_EMAIL = "DD_GIT_COMMIT_AUTHOR_EMAIL";
14
+ process.env.DD_GIT_COMMIT_AUTHOR_DATE = "DD_GIT_COMMIT_AUTHOR_DATE";
15
+ process.env.DD_GIT_COMMIT_COMMITTER_NAME = "DD_GIT_COMMIT_COMMITTER_NAME";
16
+ process.env.DD_GIT_COMMIT_COMMITTER_EMAIL = "DD_GIT_COMMIT_COMMITTER_EMAIL";
17
+ process.env.DD_GIT_COMMIT_COMMITTER_DATE = "DD_GIT_COMMIT_COMMITTER_DATE";
18
+ const result = (0, user_provided_git_1.getUserGitMetadata)();
19
+ expect(result).toEqual({
20
+ [tags_1.GIT_REPOSITORY_URL]: "DD_GIT_REPOSITORY_URL",
21
+ [tags_1.GIT_BRANCH]: "DD_GIT_BRANCH",
22
+ [tags_1.GIT_SHA]: "DD_GIT_COMMIT_SHA",
23
+ [tags_1.GIT_TAG]: "DD_GIT_TAG",
24
+ [tags_1.GIT_COMMIT_MESSAGE]: "DD_GIT_COMMIT_MESSAGE",
25
+ [tags_1.GIT_COMMIT_COMMITTER_DATE]: "DD_GIT_COMMIT_COMMITTER_DATE",
26
+ [tags_1.GIT_COMMIT_COMMITTER_EMAIL]: "DD_GIT_COMMIT_COMMITTER_EMAIL",
27
+ [tags_1.GIT_COMMIT_COMMITTER_NAME]: "DD_GIT_COMMIT_COMMITTER_NAME",
28
+ [tags_1.GIT_COMMIT_AUTHOR_DATE]: "DD_GIT_COMMIT_AUTHOR_DATE",
29
+ [tags_1.GIT_COMMIT_AUTHOR_EMAIL]: "DD_GIT_COMMIT_AUTHOR_EMAIL",
30
+ [tags_1.GIT_COMMIT_AUTHOR_NAME]: "DD_GIT_COMMIT_AUTHOR_NAME",
31
+ });
32
+ });
33
+ it("does not include empty values", () => {
34
+ delete process.env.DD_GIT_COMMIT_SHA;
35
+ const result = (0, user_provided_git_1.getUserGitMetadata)();
36
+ expect(result).toEqual({
37
+ [tags_1.GIT_REPOSITORY_URL]: "DD_GIT_REPOSITORY_URL",
38
+ [tags_1.GIT_BRANCH]: "DD_GIT_BRANCH",
39
+ [tags_1.GIT_TAG]: "DD_GIT_TAG",
40
+ [tags_1.GIT_COMMIT_MESSAGE]: "DD_GIT_COMMIT_MESSAGE",
41
+ [tags_1.GIT_COMMIT_COMMITTER_DATE]: "DD_GIT_COMMIT_COMMITTER_DATE",
42
+ [tags_1.GIT_COMMIT_COMMITTER_EMAIL]: "DD_GIT_COMMIT_COMMITTER_EMAIL",
43
+ [tags_1.GIT_COMMIT_COMMITTER_NAME]: "DD_GIT_COMMIT_COMMITTER_NAME",
44
+ [tags_1.GIT_COMMIT_AUTHOR_DATE]: "DD_GIT_COMMIT_AUTHOR_DATE",
45
+ [tags_1.GIT_COMMIT_AUTHOR_EMAIL]: "DD_GIT_COMMIT_AUTHOR_EMAIL",
46
+ [tags_1.GIT_COMMIT_AUTHOR_NAME]: "DD_GIT_COMMIT_AUTHOR_NAME",
47
+ });
48
+ });
49
+ it("returns an empty object if no user git is defined", () => {
50
+ delete process.env.DD_GIT_REPOSITORY_URL;
51
+ delete process.env.DD_GIT_BRANCH;
52
+ delete process.env.DD_GIT_TAG;
53
+ delete process.env.DD_GIT_COMMIT_MESSAGE;
54
+ delete process.env.DD_GIT_COMMIT_AUTHOR_NAME;
55
+ delete process.env.DD_GIT_COMMIT_AUTHOR_EMAIL;
56
+ delete process.env.DD_GIT_COMMIT_AUTHOR_DATE;
57
+ delete process.env.DD_GIT_COMMIT_COMMITTER_NAME;
58
+ delete process.env.DD_GIT_COMMIT_COMMITTER_EMAIL;
59
+ delete process.env.DD_GIT_COMMIT_COMMITTER_DATE;
60
+ const result = (0, user_provided_git_1.getUserGitMetadata)();
61
+ expect(result).toEqual({});
62
+ });
63
+ });
64
+ //# sourceMappingURL=user-provided-git.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-provided-git.test.js","sourceRoot":"","sources":["../../../../src/helpers/__tests__/user-provided-git.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/helpers/__tests__/utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ jest.mock("fs");
35
+ const axios_1 = __importDefault(require("axios"));
36
+ const http_1 = __importDefault(require("http"));
37
+ // @ts-ignore
38
+ const proxy_1 = __importDefault(require("proxy"));
39
+ const proxy_agent_1 = __importDefault(require("proxy-agent"));
40
+ const ciUtils = __importStar(require("../utils"));
41
+ jest.useFakeTimers();
42
+ describe("utils", () => {
43
+ beforeEach(() => {
44
+ jest.restoreAllMocks();
45
+ });
46
+ test("Test pick", () => {
47
+ const initialHash = { a: 1, b: 2 };
48
+ let resultHash = ciUtils.pick(initialHash, ["a"]);
49
+ expect(Object.keys(resultHash).indexOf("b")).toBe(-1);
50
+ expect(resultHash.a).toBe(1);
51
+ resultHash = ciUtils.pick(initialHash, ["c"]);
52
+ expect(Object.keys(resultHash).length).toBe(0);
53
+ });
54
+ describe("getRequestBuilder", () => {
55
+ const fakeEndpointBuilder = (request) => () => __awaiter(void 0, void 0, void 0, function* () { return request({}); });
56
+ test("should add api key header", () => __awaiter(void 0, void 0, void 0, function* () {
57
+ jest.spyOn(axios_1.default, "create").mockImplementation((() => (args) => args.headers));
58
+ const requestOptions = {
59
+ apiKey: "apiKey",
60
+ baseUrl: "http://fake-base.url/",
61
+ };
62
+ const request = ciUtils.getRequestBuilder(requestOptions);
63
+ const fakeEndpoint = fakeEndpointBuilder(request);
64
+ expect(yield fakeEndpoint()).toStrictEqual({ "DD-API-KEY": "apiKey" });
65
+ }));
66
+ test("should add api and application key header", () => __awaiter(void 0, void 0, void 0, function* () {
67
+ jest.spyOn(axios_1.default, "create").mockImplementation((() => (args) => args.headers));
68
+ const requestOptions = {
69
+ apiKey: "apiKey",
70
+ appKey: "applicationKey",
71
+ baseUrl: "http://fake-base.url/",
72
+ };
73
+ const request = ciUtils.getRequestBuilder(requestOptions);
74
+ const fakeEndpoint = fakeEndpointBuilder(request);
75
+ expect(yield fakeEndpoint()).toStrictEqual({ "DD-API-KEY": "apiKey", "DD-APPLICATION-KEY": "applicationKey" });
76
+ }));
77
+ describe("proxy configuration", () => {
78
+ test("should have a ProxyAgent by default", () => __awaiter(void 0, void 0, void 0, function* () {
79
+ jest.spyOn(axios_1.default, "create").mockImplementation((() => (args) => args.httpsAgent));
80
+ const requestOptions = {
81
+ apiKey: "apiKey",
82
+ appKey: "applicationKey",
83
+ baseUrl: "http://fake-base.url/",
84
+ };
85
+ const request = ciUtils.getRequestBuilder(requestOptions);
86
+ const fakeEndpoint = fakeEndpointBuilder(request);
87
+ const httpsAgent = yield fakeEndpoint();
88
+ expect(httpsAgent).toBeDefined();
89
+ expect(httpsAgent).toBeInstanceOf(proxy_agent_1.default);
90
+ }));
91
+ test("should add proxy configuration when explicitly defined", () => __awaiter(void 0, void 0, void 0, function* () {
92
+ jest.spyOn(axios_1.default, "create").mockImplementation((() => (args) => args.httpsAgent));
93
+ const proxyOpts = { protocol: "http", host: "1.2.3.4", port: 1234 };
94
+ const requestOptions = {
95
+ apiKey: "apiKey",
96
+ appKey: "applicationKey",
97
+ baseUrl: "http://fake-base.url/",
98
+ proxyOpts,
99
+ };
100
+ const request = ciUtils.getRequestBuilder(requestOptions);
101
+ const fakeEndpoint = fakeEndpointBuilder(request);
102
+ const httpsAgent = yield fakeEndpoint();
103
+ expect(httpsAgent).toBeDefined();
104
+ expect(httpsAgent.proxyUri).toBe("http://1.2.3.4:1234");
105
+ }));
106
+ });
107
+ test("should accept overrideUrl", () => __awaiter(void 0, void 0, void 0, function* () {
108
+ jest.spyOn(axios_1.default, "create").mockImplementation((() => (args) => args.url));
109
+ const requestOptions = {
110
+ apiKey: "apiKey",
111
+ appKey: "applicationKey",
112
+ baseUrl: "http://fake-base.url/",
113
+ overrideUrl: "override/url",
114
+ };
115
+ const request = ciUtils.getRequestBuilder(requestOptions);
116
+ const fakeEndpoint = fakeEndpointBuilder(request);
117
+ expect(yield fakeEndpoint()).toStrictEqual("override/url");
118
+ }));
119
+ test("should accept additional headers", () => __awaiter(void 0, void 0, void 0, function* () {
120
+ jest.spyOn(axios_1.default, "create").mockImplementation((() => (args) => args.headers));
121
+ const requestOptions = {
122
+ apiKey: "apiKey",
123
+ appKey: "applicationKey",
124
+ baseUrl: "http://fake-base.url/",
125
+ headers: new Map([
126
+ ["HEADER1", "value1"],
127
+ ["HEADER2", "value2"],
128
+ ]),
129
+ overrideUrl: "override/url",
130
+ };
131
+ const request = ciUtils.getRequestBuilder(requestOptions);
132
+ const fakeEndpoint = fakeEndpointBuilder(request);
133
+ expect(yield fakeEndpoint()).toStrictEqual({
134
+ "DD-API-KEY": "apiKey",
135
+ "DD-APPLICATION-KEY": "applicationKey",
136
+ HEADER1: "value1",
137
+ HEADER2: "value2",
138
+ });
139
+ }));
140
+ });
141
+ describe("getApiHostForSite", () => {
142
+ it.each([
143
+ ["datad0g.com", "app.datad0g.com"],
144
+ ["datadoghq.com", "api.datadoghq.com"],
145
+ ["datadoghq.eu", "api.datadoghq.eu"],
146
+ ["whitelabel.com", "api.whitelabel.com"],
147
+ ])("for site = %p, returns api host = %p ", (site, expectedApiHost) => {
148
+ expect(ciUtils.getApiHostForSite(site)).toEqual(expectedApiHost);
149
+ });
150
+ });
151
+ describe("buildPath", () => {
152
+ test("should return correct path", () => {
153
+ const pathWithNoTrailingSlash = "sourcemaps/js";
154
+ const pathWithTrailingSlash = "sourcemaps/js/";
155
+ const fileName = "file1.min.js";
156
+ expect(ciUtils.buildPath(pathWithNoTrailingSlash, fileName)).toBe("sourcemaps/js/file1.min.js");
157
+ expect(ciUtils.buildPath(pathWithTrailingSlash, fileName)).toBe("sourcemaps/js/file1.min.js");
158
+ });
159
+ });
160
+ describe("getProxyUrl", () => {
161
+ test("should return correct proxy URI", () => {
162
+ expect(ciUtils.getProxyUrl()).toBe("");
163
+ expect(ciUtils.getProxyUrl({ protocol: "http" })).toBe("");
164
+ expect(ciUtils.getProxyUrl({ host: "127.0.0.1", protocol: "http" })).toBe("");
165
+ expect(ciUtils.getProxyUrl({ host: "127.0.0.1", port: 1234, protocol: "http" })).toBe("http://127.0.0.1:1234");
166
+ const auth = { password: "pwd", username: "john" };
167
+ expect(ciUtils.getProxyUrl({ auth, host: "127.0.0.1", port: 1234, protocol: "http" })).toBe("http://john:pwd@127.0.0.1:1234");
168
+ expect(ciUtils.getProxyUrl({ auth, protocol: "http" })).toBe("");
169
+ });
170
+ });
171
+ // Test the different possibilities of proxy configuration of getRequestHelper.
172
+ // All the calls to getRequestHelpers should be https calls, but to keep the test suite
173
+ // simple tests are using http calls (testing with https would require us to add tls certs
174
+ // and configure axios to trust these tls certs, which requires an agent config, which
175
+ // interferes a bit with how the proxies are configured since they are configured through an
176
+ // agent themselves.
177
+ // Proxy of https requests is still tested in the proxy-agent library itself.
178
+ describe("Proxy configuration", () => {
179
+ let initialHttpProxyEnv;
180
+ beforeAll(() => {
181
+ initialHttpProxyEnv = process.env.HTTP_PROXY;
182
+ });
183
+ afterAll(() => {
184
+ if (initialHttpProxyEnv !== undefined) {
185
+ process.env.HTTP_PROXY = initialHttpProxyEnv;
186
+ }
187
+ else {
188
+ delete process.env.HTTP_PROXY;
189
+ }
190
+ });
191
+ beforeEach(() => {
192
+ delete process.env.HTTP_PROXY;
193
+ });
194
+ // Start a target http server and a proxy server listening on localhost,
195
+ // returns the ports they listen to, a spy method allowing us to check if they've been
196
+ // handling any requests, and a function to close them.
197
+ const setupServer = () => __awaiter(void 0, void 0, void 0, function* () {
198
+ // Create target http server
199
+ const mockCallback = jest.fn((_, res) => {
200
+ res.end("response from target http server");
201
+ });
202
+ const targetHttpServer = http_1.default.createServer(mockCallback);
203
+ yield new Promise((resolve, reject) => {
204
+ targetHttpServer.listen((err) => {
205
+ if (err) {
206
+ reject(err);
207
+ }
208
+ resolve();
209
+ });
210
+ });
211
+ // Create proxy
212
+ const proxyHttpServer = http_1.default.createServer();
213
+ const proxyServer = (0, proxy_1.default)(proxyHttpServer);
214
+ const spyProxy = jest.fn();
215
+ proxyHttpServer.on("request", spyProxy);
216
+ yield new Promise((resolve, reject) => {
217
+ proxyServer.listen((err) => {
218
+ if (err) {
219
+ reject(err);
220
+ }
221
+ resolve();
222
+ });
223
+ });
224
+ return {
225
+ proxyServer: {
226
+ close: () => __awaiter(void 0, void 0, void 0, function* () {
227
+ return new Promise((resolve, reject) => {
228
+ proxyServer.close((err) => {
229
+ if (err) {
230
+ reject(err);
231
+ }
232
+ resolve();
233
+ });
234
+ });
235
+ }),
236
+ port: proxyHttpServer.address().port,
237
+ spy: spyProxy,
238
+ },
239
+ targetServer: {
240
+ close: () => __awaiter(void 0, void 0, void 0, function* () {
241
+ return new Promise((resolve, reject) => {
242
+ targetHttpServer.close((err) => {
243
+ if (err) {
244
+ reject(err);
245
+ }
246
+ resolve();
247
+ });
248
+ });
249
+ }),
250
+ port: targetHttpServer.address().port,
251
+ spy: mockCallback,
252
+ },
253
+ };
254
+ });
255
+ test("Work without a proxy defined", () => __awaiter(void 0, void 0, void 0, function* () {
256
+ const { proxyServer, targetServer } = yield setupServer();
257
+ try {
258
+ const requestBuilder = ciUtils.getRequestBuilder({
259
+ apiKey: "abc",
260
+ baseUrl: `http://localhost:${targetServer.port}`,
261
+ });
262
+ yield requestBuilder({
263
+ method: "GET",
264
+ url: "test-from-proxy",
265
+ });
266
+ expect(targetServer.spy.mock.calls.length).toBe(1);
267
+ expect(proxyServer.spy.mock.calls.length).toBe(0);
268
+ }
269
+ finally {
270
+ yield targetServer.close();
271
+ yield proxyServer.close();
272
+ }
273
+ }));
274
+ test("Proxy configured explicitly", () => __awaiter(void 0, void 0, void 0, function* () {
275
+ const { proxyServer, targetServer } = yield setupServer();
276
+ try {
277
+ const requestBuilder = ciUtils.getRequestBuilder({
278
+ apiKey: "abc",
279
+ baseUrl: `http://localhost:${targetServer.port}`,
280
+ proxyOpts: {
281
+ host: "localhost",
282
+ port: proxyServer.port,
283
+ protocol: "http",
284
+ },
285
+ });
286
+ yield requestBuilder({
287
+ method: "GET",
288
+ url: "test-from-proxy",
289
+ });
290
+ expect(targetServer.spy.mock.calls.length).toBe(1);
291
+ expect(proxyServer.spy.mock.calls.length).toBe(1);
292
+ }
293
+ finally {
294
+ yield targetServer.close();
295
+ yield proxyServer.close();
296
+ }
297
+ }));
298
+ test("Proxy configured through env var", () => __awaiter(void 0, void 0, void 0, function* () {
299
+ const { proxyServer, targetServer } = yield setupServer();
300
+ try {
301
+ process.env.HTTP_PROXY = `http://localhost:${proxyServer.port}`;
302
+ const requestBuilder = ciUtils.getRequestBuilder({
303
+ apiKey: "abc",
304
+ baseUrl: `http://localhost:${targetServer.port}`,
305
+ });
306
+ yield requestBuilder({
307
+ method: "GET",
308
+ url: "test-from-proxy",
309
+ });
310
+ expect(targetServer.spy.mock.calls.length).toBe(1);
311
+ expect(proxyServer.spy.mock.calls.length).toBe(1);
312
+ }
313
+ finally {
314
+ yield targetServer.close();
315
+ yield proxyServer.close();
316
+ }
317
+ }));
318
+ test("Proxy configured explicitly takes precedence over env var", () => __awaiter(void 0, void 0, void 0, function* () {
319
+ const { proxyServer, targetServer } = yield setupServer();
320
+ try {
321
+ process.env.HTTP_PROXY = `http://incorrecthost:${proxyServer.port}`;
322
+ const requestBuilder = ciUtils.getRequestBuilder({
323
+ apiKey: "abc",
324
+ baseUrl: `http://localhost:${targetServer.port}`,
325
+ proxyOpts: {
326
+ host: "localhost",
327
+ port: proxyServer.port,
328
+ protocol: "http",
329
+ },
330
+ });
331
+ yield requestBuilder({
332
+ method: "GET",
333
+ url: "test-from-proxy",
334
+ });
335
+ expect(targetServer.spy.mock.calls.length).toBe(1);
336
+ expect(proxyServer.spy.mock.calls.length).toBe(1);
337
+ }
338
+ finally {
339
+ yield targetServer.close();
340
+ yield proxyServer.close();
341
+ }
342
+ }));
343
+ });
344
+ });
345
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../src/helpers/__tests__/utils.test.ts"],"names":[],"mappings":"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"}