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.
- package/README.md +31 -38
- package/dist/package.json +11 -2
- package/dist/src/env.d.ts +6 -3
- package/dist/src/env.d.ts.map +1 -1
- package/dist/src/env.js +25 -3
- package/dist/src/env.js.map +1 -1
- package/dist/src/git-metadata/__tests__/git.test.d.ts +2 -0
- package/dist/src/git-metadata/__tests__/git.test.d.ts.map +1 -0
- package/dist/src/git-metadata/__tests__/git.test.js +106 -0
- package/dist/src/git-metadata/__tests__/git.test.js.map +1 -0
- package/dist/src/git-metadata/api.d.ts +4 -0
- package/dist/src/git-metadata/api.d.ts.map +1 -0
- package/dist/src/git-metadata/api.js +13 -0
- package/dist/src/git-metadata/api.js.map +1 -0
- package/dist/src/git-metadata/interfaces.d.ts +10 -0
- package/dist/src/git-metadata/interfaces.d.ts.map +1 -0
- package/dist/src/git-metadata/interfaces.js +43 -0
- package/dist/src/git-metadata/interfaces.js.map +1 -0
- package/dist/src/git-metadata/renderer.d.ts +9 -0
- package/dist/src/git-metadata/renderer.d.ts.map +1 -0
- package/dist/src/git-metadata/renderer.js +32 -0
- package/dist/src/git-metadata/renderer.js.map +1 -0
- package/dist/src/git.d.ts +8 -0
- package/dist/src/git.d.ts.map +1 -0
- package/dist/src/git.js +115 -0
- package/dist/src/git.js.map +1 -0
- package/dist/src/helpers/__tests__/ci.test.d.ts +2 -0
- package/dist/src/helpers/__tests__/ci.test.d.ts.map +1 -0
- package/dist/src/helpers/__tests__/ci.test.js +147 -0
- package/dist/src/helpers/__tests__/ci.test.js.map +1 -0
- package/dist/src/helpers/__tests__/git.test.d.ts +2 -0
- package/dist/src/helpers/__tests__/git.test.d.ts.map +1 -0
- package/dist/src/helpers/__tests__/git.test.js +65 -0
- package/dist/src/helpers/__tests__/git.test.js.map +1 -0
- package/dist/src/helpers/__tests__/retry.test.d.ts +2 -0
- package/dist/src/helpers/__tests__/retry.test.d.ts.map +1 -0
- package/dist/src/helpers/__tests__/retry.test.js +99 -0
- package/dist/src/helpers/__tests__/retry.test.js.map +1 -0
- package/dist/src/helpers/__tests__/tags.test.d.ts +2 -0
- package/dist/src/helpers/__tests__/tags.test.d.ts.map +1 -0
- package/dist/src/helpers/__tests__/tags.test.js +17 -0
- package/dist/src/helpers/__tests__/tags.test.js.map +1 -0
- package/dist/src/helpers/__tests__/upload.test.d.ts +2 -0
- package/dist/src/helpers/__tests__/upload.test.d.ts.map +1 -0
- package/dist/src/helpers/__tests__/upload.test.js +185 -0
- package/dist/src/helpers/__tests__/upload.test.js.map +1 -0
- package/dist/src/helpers/__tests__/user-provided-git.test.d.ts +2 -0
- package/dist/src/helpers/__tests__/user-provided-git.test.d.ts.map +1 -0
- package/dist/src/helpers/__tests__/user-provided-git.test.js +64 -0
- package/dist/src/helpers/__tests__/user-provided-git.test.js.map +1 -0
- package/dist/src/helpers/__tests__/utils.test.d.ts +2 -0
- package/dist/src/helpers/__tests__/utils.test.d.ts.map +1 -0
- package/dist/src/helpers/__tests__/utils.test.js +345 -0
- package/dist/src/helpers/__tests__/utils.test.js.map +1 -0
- package/dist/src/helpers/apikey.d.ts +13 -0
- package/dist/src/helpers/apikey.d.ts.map +1 -0
- package/dist/src/helpers/apikey.js +74 -0
- package/dist/src/helpers/apikey.js.map +1 -0
- package/dist/src/helpers/ci.d.ts +16 -0
- package/dist/src/helpers/ci.d.ts.map +1 -0
- package/dist/src/helpers/ci.js +378 -0
- package/dist/src/helpers/ci.js.map +1 -0
- package/dist/src/helpers/errors.d.ts +3 -0
- package/dist/src/helpers/errors.d.ts.map +1 -0
- package/dist/src/helpers/errors.js +7 -0
- package/dist/src/helpers/errors.js.map +1 -0
- package/dist/src/helpers/formatting.d.ts +6 -0
- package/dist/src/helpers/formatting.d.ts.map +1 -0
- package/dist/src/helpers/formatting.js +13 -0
- package/dist/src/helpers/formatting.js.map +1 -0
- package/dist/src/helpers/git.d.ts +3 -0
- package/dist/src/helpers/git.d.ts.map +1 -0
- package/dist/src/helpers/git.js +52 -0
- package/dist/src/helpers/git.js.map +1 -0
- package/dist/src/helpers/interfaces.d.ts +20 -0
- package/dist/src/helpers/interfaces.d.ts.map +1 -0
- package/dist/src/helpers/interfaces.js +3 -0
- package/dist/src/helpers/interfaces.js.map +1 -0
- package/dist/src/helpers/metrics.d.ts +12 -0
- package/dist/src/helpers/metrics.d.ts.map +1 -0
- package/dist/src/helpers/metrics.js +36 -0
- package/dist/src/helpers/metrics.js.map +1 -0
- package/dist/src/helpers/retry.d.ts +3 -0
- package/dist/src/helpers/retry.d.ts.map +1 -0
- package/dist/src/helpers/retry.js +39 -0
- package/dist/src/helpers/retry.js.map +1 -0
- package/dist/src/helpers/tags.d.ts +29 -0
- package/dist/src/helpers/tags.d.ts.map +1 -0
- package/dist/src/helpers/tags.js +50 -0
- package/dist/src/helpers/tags.js.map +1 -0
- package/dist/src/helpers/upload.d.ts +45 -0
- package/dist/src/helpers/upload.d.ts.map +1 -0
- package/dist/src/helpers/upload.js +70 -0
- package/dist/src/helpers/upload.js.map +1 -0
- package/dist/src/helpers/user-provided-git.d.ts +2 -0
- package/dist/src/helpers/user-provided-git.d.ts.map +1 -0
- package/dist/src/helpers/user-provided-git.js +23 -0
- package/dist/src/helpers/user-provided-git.js.map +1 -0
- package/dist/src/helpers/utils.d.ts +31 -0
- package/dist/src/helpers/utils.d.ts.map +1 -0
- package/dist/src/helpers/utils.js +115 -0
- package/dist/src/helpers/utils.js.map +1 -0
- package/dist/src/index.d.ts +9 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +57 -13
- package/dist/src/index.js.map +1 -1
- package/dist/src/layer.d.ts.map +1 -1
- package/dist/src/layer.js +1 -2
- package/dist/src/layer.js.map +1 -1
- package/dist/src/layers-gov.json +8 -8
- package/dist/src/layers.json +84 -84
- package/dist/src/source-code-integration.d.ts +12 -0
- package/dist/src/source-code-integration.d.ts.map +1 -0
- package/dist/src/source-code-integration.js +76 -0
- package/dist/src/source-code-integration.js.map +1 -0
- 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":"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"}
|
@@ -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 @@
|
|
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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"}
|