kayvee 3.16.0 → 3.18.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.
- package/.eslintrc.js +124 -0
- package/.github/workflows/notify-ci-status.yml +20 -0
- package/.nvmrc +1 -1
- package/.prettierrc.json +1 -0
- package/Makefile +20 -4
- package/build/lib/kayvee.js +13 -17
- package/build/lib/logger/logger.js +84 -76
- package/build/lib/middleware.js +62 -89
- package/build/lib/router/index.js +61 -63
- package/build/package.json +16 -8
- package/build/test/context_logger.js +36 -44
- package/build/test/kayvee.js +16 -16
- package/build/test/logger_test.js +113 -102
- package/build/test/middleware.js +90 -235
- package/build/test/router.js +238 -94
- package/lib/kayvee.ts +19 -7
- package/lib/logger/logger.ts +101 -47
- package/lib/middleware.ts +31 -31
- package/lib/router/index.ts +18 -13
- package/package.json +16 -8
- package/test/context_logger.ts +7 -7
- package/test/kayvee.ts +16 -7
- package/test/logger_test.ts +24 -27
- package/test/middleware.ts +88 -222
- package/test/router.ts +247 -176
- package/tsconfig.json +1 -1
- package/.eslintrc.yml +0 -47
- package/tsd.json +0 -15
- package/tslint.json +0 -134
- package/typings/globals/es6-shim/index.d.ts +0 -666
- package/typings/globals/es6-shim/typings.json +0 -8
- package/typings/index.d.ts +0 -1
- package/typings/mocha/mocha.d.ts +0 -236
- package/typings/node/node.d.ts +0 -2340
- package/typings/tsd.d.ts +0 -2
- package/typings.json +0 -5
package/test/middleware.ts
CHANGED
|
@@ -29,7 +29,7 @@ function afterTest(count, callback) {
|
|
|
29
29
|
args[2] = args[2] || arg2;
|
|
30
30
|
|
|
31
31
|
if (count === i) {
|
|
32
|
-
callback
|
|
32
|
+
callback(...args);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
35
|
}
|
|
@@ -74,7 +74,7 @@ function createServer(server_type, clever_options, morgan_options, fn) {
|
|
|
74
74
|
|
|
75
75
|
server = app;
|
|
76
76
|
} else {
|
|
77
|
-
throw
|
|
77
|
+
throw new Error(`unknown server type: ${server_type}`);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
return server;
|
|
@@ -84,7 +84,9 @@ _.each(["http", "express"], (serverType) => {
|
|
|
84
84
|
describe(`middleware for *${serverType}* server: prototype pollution testing`, () => {
|
|
85
85
|
it("params with toString is stripped", (done) => {
|
|
86
86
|
var cb = afterTest(2, (err, res, line) => {
|
|
87
|
-
if (err) {
|
|
87
|
+
if (err) {
|
|
88
|
+
return done(err);
|
|
89
|
+
}
|
|
88
90
|
const expected = {
|
|
89
91
|
method: "GET",
|
|
90
92
|
path: "/hello/world",
|
|
@@ -96,7 +98,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
96
98
|
via: "kayvee-middleware",
|
|
97
99
|
level: "info",
|
|
98
100
|
title: "request-finished",
|
|
99
|
-
canary: false,
|
|
100
101
|
deploy_env: "testing",
|
|
101
102
|
wf_id: "abc",
|
|
102
103
|
source: "test-app",
|
|
@@ -105,12 +106,12 @@ _.each(["http", "express"], (serverType) => {
|
|
|
105
106
|
kv_version: "X.X.X",
|
|
106
107
|
kv_language: "js",
|
|
107
108
|
routes: [
|
|
108
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
109
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
109
110
|
],
|
|
110
111
|
},
|
|
111
112
|
};
|
|
112
113
|
var actual = JSON.parse(line);
|
|
113
|
-
actual["response-time"] = 99999;
|
|
114
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
114
115
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
115
116
|
|
|
116
117
|
assert.deepEqual(actual, expected);
|
|
@@ -129,18 +130,18 @@ _.each(["http", "express"], (serverType) => {
|
|
|
129
130
|
},
|
|
130
131
|
};
|
|
131
132
|
|
|
132
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
133
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
133
134
|
next();
|
|
134
135
|
});
|
|
135
136
|
|
|
136
137
|
// this one is logged
|
|
137
|
-
request(server)
|
|
138
|
-
.get("/hello/world?toString=foo")
|
|
139
|
-
.expect(200, cb);
|
|
138
|
+
request(server).get("/hello/world?toString=foo").expect(200, cb);
|
|
140
139
|
});
|
|
141
140
|
it("params from actual attack is stripped", (done) => {
|
|
142
141
|
var cb = afterTest(2, (err, res, line) => {
|
|
143
|
-
if (err) {
|
|
142
|
+
if (err) {
|
|
143
|
+
return done(err);
|
|
144
|
+
}
|
|
144
145
|
const expected = {
|
|
145
146
|
method: "GET",
|
|
146
147
|
path: "/hello/world",
|
|
@@ -152,7 +153,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
152
153
|
via: "kayvee-middleware",
|
|
153
154
|
level: "info",
|
|
154
155
|
title: "request-finished",
|
|
155
|
-
canary: false,
|
|
156
156
|
deploy_env: "testing",
|
|
157
157
|
wf_id: "abc",
|
|
158
158
|
source: "test-app",
|
|
@@ -161,12 +161,12 @@ _.each(["http", "express"], (serverType) => {
|
|
|
161
161
|
kv_version: "X.X.X",
|
|
162
162
|
kv_language: "js",
|
|
163
163
|
routes: [
|
|
164
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
164
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
165
165
|
],
|
|
166
166
|
},
|
|
167
167
|
};
|
|
168
168
|
var actual = JSON.parse(line);
|
|
169
|
-
actual["response-time"] = 99999;
|
|
169
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
170
170
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
171
171
|
|
|
172
172
|
assert.deepEqual(actual, expected);
|
|
@@ -185,32 +185,33 @@ _.each(["http", "express"], (serverType) => {
|
|
|
185
185
|
},
|
|
186
186
|
};
|
|
187
187
|
|
|
188
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
188
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
189
189
|
next();
|
|
190
190
|
});
|
|
191
191
|
|
|
192
192
|
const params = `__proto__[Expect]=xxx
|
|
193
193
|
&constructor[prototype][Expect]=xxx`;
|
|
194
194
|
// this one is logged
|
|
195
|
-
request(server)
|
|
196
|
-
.get(`/hello/world?${params}`)
|
|
197
|
-
.expect(200, cb);
|
|
195
|
+
request(server).get(`/hello/world?${params}`).expect(200, cb);
|
|
198
196
|
});
|
|
199
197
|
});
|
|
200
198
|
describe(`middleware for *${serverType}* server`, () => {
|
|
201
199
|
it("should throw error on intialization if `source` not set in `options`", (done) => {
|
|
202
200
|
var options = {};
|
|
203
|
-
var erroringServer = () =>
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
201
|
+
var erroringServer = () =>
|
|
202
|
+
createServer(serverType, options, null, (req, res, next) => {
|
|
203
|
+
res.setHeader("some-header", "some-header-value");
|
|
204
|
+
next();
|
|
205
|
+
});
|
|
207
206
|
assert.throws(erroringServer, Error, "Expected an error to be thrown");
|
|
208
207
|
return done();
|
|
209
208
|
});
|
|
210
209
|
|
|
211
210
|
it("should pass default fields", (done) => {
|
|
212
211
|
var cb = afterTest(2, (err, res, line) => {
|
|
213
|
-
if (err) {
|
|
212
|
+
if (err) {
|
|
213
|
+
return done(err);
|
|
214
|
+
}
|
|
214
215
|
const expected = {
|
|
215
216
|
method: "GET",
|
|
216
217
|
path: "/hello/world",
|
|
@@ -222,7 +223,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
222
223
|
via: "kayvee-middleware",
|
|
223
224
|
level: "info",
|
|
224
225
|
title: "request-finished",
|
|
225
|
-
canary: false,
|
|
226
226
|
deploy_env: "testing",
|
|
227
227
|
wf_id: "abc",
|
|
228
228
|
source: "test-app",
|
|
@@ -231,145 +231,38 @@ _.each(["http", "express"], (serverType) => {
|
|
|
231
231
|
kv_version: "X.X.X",
|
|
232
232
|
kv_language: "js",
|
|
233
233
|
routes: [
|
|
234
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
234
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
235
235
|
],
|
|
236
236
|
},
|
|
237
237
|
};
|
|
238
238
|
|
|
239
239
|
var actual = JSON.parse(line);
|
|
240
|
-
actual["response-time"] = 99999;
|
|
241
|
-
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
242
|
-
|
|
243
|
-
assert.deepEqual(actual, expected);
|
|
244
|
-
return done();
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
var stream = createLineStream((line) => {
|
|
248
|
-
cb(null, null, line);
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
var options = {source: "test-app"};
|
|
252
|
-
|
|
253
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
254
|
-
res.setHeader("some-header", "some-header-value");
|
|
255
|
-
next();
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
request(server)
|
|
259
|
-
.get("/hello/world?a=1&b=2")
|
|
260
|
-
.expect(200, cb);
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
it("should set canary flag if env var is present", (done) => {
|
|
264
|
-
var cb = afterTest(2, (err, res, line) => {
|
|
265
|
-
if (err) { return done(err); }
|
|
266
|
-
const expected = {
|
|
267
|
-
method: "GET",
|
|
268
|
-
path: "/hello/world",
|
|
269
|
-
params: "?a=1&b=2",
|
|
270
|
-
"response-size": 12345,
|
|
271
|
-
"response-time": 99999,
|
|
272
|
-
"status-code": 200,
|
|
273
|
-
ip: "::ffff:127.0.0.1",
|
|
274
|
-
via: "kayvee-middleware",
|
|
275
|
-
level: "info",
|
|
276
|
-
title: "request-finished",
|
|
277
|
-
canary: true,
|
|
278
|
-
deploy_env: "testing",
|
|
279
|
-
wf_id: "abc",
|
|
280
|
-
source: "test-app",
|
|
281
|
-
_kvmeta: {
|
|
282
|
-
team: "UNSET",
|
|
283
|
-
kv_version: "X.X.X",
|
|
284
|
-
kv_language: "js",
|
|
285
|
-
routes: [
|
|
286
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
287
|
-
],
|
|
288
|
-
},
|
|
289
|
-
};
|
|
290
|
-
var actual = JSON.parse(line);
|
|
291
|
-
actual["response-time"] = 99999; // Masking the two fields that
|
|
292
|
-
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
293
|
-
|
|
294
|
-
assert.deepEqual(actual, expected);
|
|
295
|
-
delete process.env._CANARY;
|
|
296
|
-
return done();
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
process.env._CANARY = "1";
|
|
300
|
-
var stream = createLineStream((line) => {
|
|
301
|
-
cb(null, null, line);
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
var options = {source: "test-app"};
|
|
305
|
-
|
|
306
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
307
|
-
res.setHeader("some-header", "some-header-value");
|
|
308
|
-
next();
|
|
309
|
-
});
|
|
310
|
-
|
|
311
|
-
request(server)
|
|
312
|
-
.get("/hello/world?a=1&b=2")
|
|
313
|
-
.expect(200, cb);
|
|
314
|
-
});
|
|
315
|
-
|
|
316
|
-
it("should set canary flag if shortname includes -canary", (done) => {
|
|
317
|
-
var cb = afterTest(2, (err, res, line) => {
|
|
318
|
-
if (err) { return done(err); }
|
|
319
|
-
const expected = {
|
|
320
|
-
method: "GET",
|
|
321
|
-
path: "/hello/world",
|
|
322
|
-
params: "?a=1&b=2",
|
|
323
|
-
"response-size": 12345,
|
|
324
|
-
"response-time": 99999,
|
|
325
|
-
"status-code": 200,
|
|
326
|
-
ip: "::ffff:127.0.0.1",
|
|
327
|
-
via: "kayvee-middleware",
|
|
328
|
-
level: "info",
|
|
329
|
-
title: "request-finished",
|
|
330
|
-
canary: true,
|
|
331
|
-
deploy_env: "testing",
|
|
332
|
-
wf_id: "abc",
|
|
333
|
-
source: "test-app",
|
|
334
|
-
_kvmeta: {
|
|
335
|
-
team: "UNSET",
|
|
336
|
-
kv_version: "X.X.X",
|
|
337
|
-
kv_language: "js",
|
|
338
|
-
routes: [
|
|
339
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
340
|
-
],
|
|
341
|
-
},
|
|
342
|
-
};
|
|
343
|
-
var actual = JSON.parse(line);
|
|
344
|
-
actual["response-time"] = 99999; // Masking the two fields that
|
|
240
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
345
241
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
346
242
|
|
|
347
243
|
assert.deepEqual(actual, expected);
|
|
348
|
-
delete process.env._POD_SHORTNAME;
|
|
349
244
|
return done();
|
|
350
245
|
});
|
|
351
246
|
|
|
352
|
-
process.env._POD_SHORTNAME = "us-west-1-dev-canary-xxxxxxxx";
|
|
353
247
|
var stream = createLineStream((line) => {
|
|
354
248
|
cb(null, null, line);
|
|
355
249
|
});
|
|
356
250
|
|
|
357
|
-
var options = {source: "test-app"};
|
|
251
|
+
var options = { source: "test-app" };
|
|
358
252
|
|
|
359
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
253
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
360
254
|
res.setHeader("some-header", "some-header-value");
|
|
361
255
|
next();
|
|
362
256
|
});
|
|
363
257
|
|
|
364
|
-
request(server)
|
|
365
|
-
.get("/hello/world?a=1&b=2")
|
|
366
|
-
.expect(200, cb);
|
|
258
|
+
request(server).get("/hello/world?a=1&b=2").expect(200, cb);
|
|
367
259
|
});
|
|
368
260
|
|
|
369
|
-
|
|
370
261
|
it("should allow logging user-specified request headers", (done) => {
|
|
371
262
|
var cb = afterTest(2, (err, res, line) => {
|
|
372
|
-
if (err) {
|
|
263
|
+
if (err) {
|
|
264
|
+
return done(err);
|
|
265
|
+
}
|
|
373
266
|
const expected = {
|
|
374
267
|
"some-header": "some-header-value",
|
|
375
268
|
"another-header": "another-header-value",
|
|
@@ -383,7 +276,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
383
276
|
via: "kayvee-middleware",
|
|
384
277
|
level: "info",
|
|
385
278
|
title: "request-finished",
|
|
386
|
-
canary: false,
|
|
387
279
|
deploy_env: "testing",
|
|
388
280
|
wf_id: "abc",
|
|
389
281
|
source: "test-app",
|
|
@@ -392,12 +284,12 @@ _.each(["http", "express"], (serverType) => {
|
|
|
392
284
|
kv_version: "X.X.X",
|
|
393
285
|
kv_language: "js",
|
|
394
286
|
routes: [
|
|
395
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
287
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
396
288
|
],
|
|
397
289
|
},
|
|
398
290
|
};
|
|
399
291
|
var actual = JSON.parse(line);
|
|
400
|
-
actual["response-time"] = 99999;
|
|
292
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
401
293
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
402
294
|
|
|
403
295
|
assert.deepEqual(actual, expected);
|
|
@@ -413,20 +305,22 @@ _.each(["http", "express"], (serverType) => {
|
|
|
413
305
|
headers: ["some-header", "another-header"],
|
|
414
306
|
};
|
|
415
307
|
|
|
416
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
308
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
417
309
|
next();
|
|
418
310
|
});
|
|
419
311
|
|
|
420
312
|
request(server)
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
313
|
+
.get("/hello/world?a=1&b=2")
|
|
314
|
+
.set("some-header", "some-header-value")
|
|
315
|
+
.set("another-header", "another-header-value")
|
|
316
|
+
.expect(200, cb);
|
|
425
317
|
});
|
|
426
318
|
|
|
427
319
|
it("should allow logging from user-specified handlers", (done) => {
|
|
428
320
|
var cb = afterTest(2, (err, res, line) => {
|
|
429
|
-
if (err) {
|
|
321
|
+
if (err) {
|
|
322
|
+
return done(err);
|
|
323
|
+
}
|
|
430
324
|
const expected = {
|
|
431
325
|
global: 1,
|
|
432
326
|
global2: 2,
|
|
@@ -441,7 +335,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
441
335
|
via: "kayvee-middleware",
|
|
442
336
|
level: "info",
|
|
443
337
|
title: "request-finished",
|
|
444
|
-
canary: false,
|
|
445
338
|
deploy_env: "testing",
|
|
446
339
|
wf_id: "abc",
|
|
447
340
|
source: "test-app",
|
|
@@ -450,12 +343,12 @@ _.each(["http", "express"], (serverType) => {
|
|
|
450
343
|
kv_version: "X.X.X",
|
|
451
344
|
kv_language: "js",
|
|
452
345
|
routes: [
|
|
453
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
346
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
454
347
|
],
|
|
455
348
|
},
|
|
456
349
|
};
|
|
457
350
|
var actual = JSON.parse(line);
|
|
458
|
-
actual["response-time"] = 99999;
|
|
351
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
459
352
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
460
353
|
|
|
461
354
|
assert.deepEqual(actual, expected);
|
|
@@ -468,25 +361,21 @@ _.each(["http", "express"], (serverType) => {
|
|
|
468
361
|
|
|
469
362
|
var options = {
|
|
470
363
|
source: "test-app",
|
|
471
|
-
handlers: [
|
|
472
|
-
() => ({global: 1}),
|
|
473
|
-
() => ({global2: 2}),
|
|
474
|
-
(req) => ({url: req.url}),
|
|
475
|
-
],
|
|
364
|
+
handlers: [() => ({ global: 1 }), () => ({ global2: 2 }), (req) => ({ url: req.url })],
|
|
476
365
|
};
|
|
477
366
|
|
|
478
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
367
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
479
368
|
next();
|
|
480
369
|
});
|
|
481
370
|
|
|
482
|
-
request(server)
|
|
483
|
-
.get("/hello/world?a=1&b=2")
|
|
484
|
-
.expect(200, cb);
|
|
371
|
+
request(server).get("/hello/world?a=1&b=2").expect(200, cb);
|
|
485
372
|
});
|
|
486
373
|
|
|
487
374
|
it("should not log null or undefined values", (done) => {
|
|
488
375
|
var cb = afterTest(2, (err, res, line) => {
|
|
489
|
-
if (err) {
|
|
376
|
+
if (err) {
|
|
377
|
+
return done(err);
|
|
378
|
+
}
|
|
490
379
|
const expected = {
|
|
491
380
|
method: "GET",
|
|
492
381
|
path: "/hello/world",
|
|
@@ -498,7 +387,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
498
387
|
via: "kayvee-middleware",
|
|
499
388
|
level: "info",
|
|
500
389
|
title: "request-finished",
|
|
501
|
-
canary: false,
|
|
502
390
|
deploy_env: "testing",
|
|
503
391
|
wf_id: "abc",
|
|
504
392
|
source: "test-app",
|
|
@@ -507,12 +395,12 @@ _.each(["http", "express"], (serverType) => {
|
|
|
507
395
|
kv_version: "X.X.X",
|
|
508
396
|
kv_language: "js",
|
|
509
397
|
routes: [
|
|
510
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
398
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
511
399
|
],
|
|
512
400
|
},
|
|
513
401
|
};
|
|
514
402
|
var actual = JSON.parse(line);
|
|
515
|
-
actual["response-time"] = 99999;
|
|
403
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
516
404
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
517
405
|
|
|
518
406
|
assert.deepEqual(actual, expected);
|
|
@@ -527,23 +415,21 @@ _.each(["http", "express"], (serverType) => {
|
|
|
527
415
|
source: "test-app",
|
|
528
416
|
// These values should not be logged
|
|
529
417
|
headers: ["this-header-dne"],
|
|
530
|
-
handlers: [
|
|
531
|
-
() => ({undef: undefined}),
|
|
532
|
-
],
|
|
418
|
+
handlers: [() => ({ undef: undefined })],
|
|
533
419
|
};
|
|
534
420
|
|
|
535
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
421
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
536
422
|
next();
|
|
537
423
|
});
|
|
538
424
|
|
|
539
|
-
request(server)
|
|
540
|
-
.get("/hello/world?a=1&b=2")
|
|
541
|
-
.expect(200, cb);
|
|
425
|
+
request(server).get("/hello/world?a=1&b=2").expect(200, cb);
|
|
542
426
|
});
|
|
543
427
|
|
|
544
428
|
it("should keep processing if there are broken user-specified handlers", (done) => {
|
|
545
429
|
var cb = afterTest(2, (err, res, line) => {
|
|
546
|
-
if (err) {
|
|
430
|
+
if (err) {
|
|
431
|
+
return done(err);
|
|
432
|
+
}
|
|
547
433
|
const expected = {
|
|
548
434
|
global: 1,
|
|
549
435
|
method: "GET",
|
|
@@ -556,7 +442,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
556
442
|
via: "kayvee-middleware",
|
|
557
443
|
level: "info",
|
|
558
444
|
title: "request-finished",
|
|
559
|
-
canary: false,
|
|
560
445
|
deploy_env: "testing",
|
|
561
446
|
wf_id: "abc",
|
|
562
447
|
source: "test-app",
|
|
@@ -565,12 +450,12 @@ _.each(["http", "express"], (serverType) => {
|
|
|
565
450
|
kv_version: "X.X.X",
|
|
566
451
|
kv_language: "js",
|
|
567
452
|
routes: [
|
|
568
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
453
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
569
454
|
],
|
|
570
455
|
},
|
|
571
456
|
};
|
|
572
457
|
var actual = JSON.parse(line);
|
|
573
|
-
actual["response-time"] = 99999;
|
|
458
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
574
459
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
575
460
|
|
|
576
461
|
assert.deepEqual(actual, expected);
|
|
@@ -585,24 +470,26 @@ _.each(["http", "express"], (serverType) => {
|
|
|
585
470
|
source: "test-app",
|
|
586
471
|
handlers: [
|
|
587
472
|
// This handler should be ignored, because it has an error
|
|
588
|
-
() => {
|
|
473
|
+
() => {
|
|
474
|
+
throw new Error("handler that throws an error");
|
|
475
|
+
},
|
|
589
476
|
// This handler should still work
|
|
590
|
-
() => ({global: 1}),
|
|
477
|
+
() => ({ global: 1 }),
|
|
591
478
|
],
|
|
592
479
|
};
|
|
593
480
|
|
|
594
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
481
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
595
482
|
next();
|
|
596
483
|
});
|
|
597
484
|
|
|
598
|
-
request(server)
|
|
599
|
-
.get("/hello/world?a=1&b=2")
|
|
600
|
-
.expect(200, cb);
|
|
485
|
+
request(server).get("/hello/world?a=1&b=2").expect(200, cb);
|
|
601
486
|
});
|
|
602
487
|
|
|
603
488
|
it("should allow the user to override `base_handlers`", (done) => {
|
|
604
489
|
var cb = afterTest(2, (err, res, line) => {
|
|
605
|
-
if (err) {
|
|
490
|
+
if (err) {
|
|
491
|
+
return done(err);
|
|
492
|
+
}
|
|
606
493
|
const expected = {
|
|
607
494
|
global: 1,
|
|
608
495
|
base: 1,
|
|
@@ -630,26 +517,22 @@ _.each(["http", "express"], (serverType) => {
|
|
|
630
517
|
|
|
631
518
|
var options = {
|
|
632
519
|
source: "test-app",
|
|
633
|
-
base_handlers: [
|
|
634
|
-
|
|
635
|
-
],
|
|
636
|
-
handlers: [
|
|
637
|
-
() => ({global: 1}),
|
|
638
|
-
],
|
|
520
|
+
base_handlers: [() => ({ base: 1 })],
|
|
521
|
+
handlers: [() => ({ global: 1 })],
|
|
639
522
|
};
|
|
640
523
|
|
|
641
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
524
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
642
525
|
next();
|
|
643
526
|
});
|
|
644
527
|
|
|
645
|
-
request(server)
|
|
646
|
-
.get("/hello/world?a=1&b=2")
|
|
647
|
-
.expect(200, cb);
|
|
528
|
+
request(server).get("/hello/world?a=1&b=2").expect(200, cb);
|
|
648
529
|
});
|
|
649
530
|
|
|
650
531
|
it("should be robust to handlers that return non Objects", (done) => {
|
|
651
532
|
var cb = afterTest(2, (err, res, line) => {
|
|
652
|
-
if (err) {
|
|
533
|
+
if (err) {
|
|
534
|
+
return done(err);
|
|
535
|
+
}
|
|
653
536
|
const expected = {
|
|
654
537
|
global: 1,
|
|
655
538
|
base: 1,
|
|
@@ -677,33 +560,21 @@ _.each(["http", "express"], (serverType) => {
|
|
|
677
560
|
|
|
678
561
|
var options = {
|
|
679
562
|
source: "test-app",
|
|
680
|
-
base_handlers: [
|
|
681
|
-
|
|
682
|
-
() => ("a"),
|
|
683
|
-
() => ([]),
|
|
684
|
-
() => ({}),
|
|
685
|
-
() => ({base: 1}),
|
|
686
|
-
],
|
|
687
|
-
handlers: [
|
|
688
|
-
() => (1),
|
|
689
|
-
() => ("a"),
|
|
690
|
-
() => ([]),
|
|
691
|
-
() => ({}),
|
|
692
|
-
() => ({global: 1}),
|
|
693
|
-
],
|
|
563
|
+
base_handlers: [() => 1, () => "a", () => [], () => ({}), () => ({ base: 1 })],
|
|
564
|
+
handlers: [() => 1, () => "a", () => [], () => ({}), () => ({ global: 1 })],
|
|
694
565
|
};
|
|
695
566
|
|
|
696
|
-
var server = createServer(serverType, options, {stream, skip: null}, (req, res, next) => {
|
|
567
|
+
var server = createServer(serverType, options, { stream, skip: null }, (req, res, next) => {
|
|
697
568
|
next();
|
|
698
569
|
});
|
|
699
570
|
|
|
700
|
-
request(server)
|
|
701
|
-
.get("/hello/world?a=1&b=2")
|
|
702
|
-
.expect(200, cb);
|
|
571
|
+
request(server).get("/hello/world?a=1&b=2").expect(200, cb);
|
|
703
572
|
});
|
|
704
573
|
it("allows ignoring requests to files in a static directory", (done) => {
|
|
705
574
|
var cb = afterTest(2, (err, res, line) => {
|
|
706
|
-
if (err) {
|
|
575
|
+
if (err) {
|
|
576
|
+
return done(err);
|
|
577
|
+
}
|
|
707
578
|
const expected = {
|
|
708
579
|
method: "GET",
|
|
709
580
|
path: "/hello/world",
|
|
@@ -715,7 +586,6 @@ _.each(["http", "express"], (serverType) => {
|
|
|
715
586
|
via: "kayvee-middleware",
|
|
716
587
|
level: "info",
|
|
717
588
|
title: "request-finished",
|
|
718
|
-
canary: false,
|
|
719
589
|
deploy_env: "testing",
|
|
720
590
|
wf_id: "abc",
|
|
721
591
|
source: "test-app",
|
|
@@ -724,12 +594,12 @@ _.each(["http", "express"], (serverType) => {
|
|
|
724
594
|
kv_version: "X.X.X",
|
|
725
595
|
kv_language: "js",
|
|
726
596
|
routes: [
|
|
727
|
-
{type: "analytics", series: "requests.everything", rule: "all-kv_middleware"},
|
|
597
|
+
{ type: "analytics", series: "requests.everything", rule: "all-kv_middleware" },
|
|
728
598
|
],
|
|
729
599
|
},
|
|
730
600
|
};
|
|
731
601
|
var actual = JSON.parse(line);
|
|
732
|
-
actual["response-time"] = 99999;
|
|
602
|
+
actual["response-time"] = 99999; // Masking the two fields that
|
|
733
603
|
actual._kvmeta.kv_version = "X.X.X"; // are expected to change
|
|
734
604
|
|
|
735
605
|
assert.deepEqual(actual, expected);
|
|
@@ -748,19 +618,15 @@ _.each(["http", "express"], (serverType) => {
|
|
|
748
618
|
},
|
|
749
619
|
};
|
|
750
620
|
|
|
751
|
-
var server = createServer(serverType, options, {stream}, (req, res, next) => {
|
|
621
|
+
var server = createServer(serverType, options, { stream }, (req, res, next) => {
|
|
752
622
|
next();
|
|
753
623
|
});
|
|
754
624
|
|
|
755
625
|
// this line is never logged
|
|
756
|
-
request(server)
|
|
757
|
-
.get("/empty.css")
|
|
758
|
-
.expect(200);
|
|
626
|
+
request(server).get("/empty.css").expect(200);
|
|
759
627
|
|
|
760
628
|
// this one is logged
|
|
761
|
-
request(server)
|
|
762
|
-
.get("/hello/world")
|
|
763
|
-
.expect(200, cb);
|
|
629
|
+
request(server).get("/hello/world").expect(200, cb);
|
|
764
630
|
});
|
|
765
631
|
});
|
|
766
632
|
});
|