rollbar 2.26.3 → 2.26.4
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/.github/workflows/ci.yml +32 -10
- package/.lgtm.yml +7 -7
- package/.prettierignore +18 -0
- package/.vscode/settings.json +39 -0
- package/CHANGELOG.md +121 -35
- package/Gruntfile.js +48 -38
- package/README.md +2 -4
- package/bower.json +1 -3
- package/defaults.js +17 -5
- package/dist/plugins/jquery.min.js +1 -1
- package/dist/rollbar.js +5710 -5070
- package/dist/rollbar.js.map +1 -1
- package/dist/rollbar.min.js +1 -1
- package/dist/rollbar.min.js.map +1 -1
- package/dist/rollbar.named-amd.js +5716 -5081
- package/dist/rollbar.named-amd.js.map +1 -1
- package/dist/rollbar.named-amd.min.js +2 -1
- package/dist/rollbar.named-amd.min.js.map +1 -1
- package/dist/rollbar.noconflict.umd.js +5702 -5068
- package/dist/rollbar.noconflict.umd.js.map +1 -1
- package/dist/rollbar.noconflict.umd.min.js +2 -1
- package/dist/rollbar.noconflict.umd.min.js.map +1 -1
- package/dist/rollbar.snippet.js +1 -1
- package/dist/rollbar.umd.js +5716 -5082
- package/dist/rollbar.umd.js.map +1 -1
- package/dist/rollbar.umd.min.js +2 -1
- package/dist/rollbar.umd.min.js.map +1 -1
- package/docs/extension-exceptions.md +35 -30
- package/docs/migration_v0_to_v1.md +41 -38
- package/index.d.ts +270 -231
- package/karma.conf.js +15 -15
- package/package.json +3 -2
- package/prettier.config.js +7 -0
- package/src/api.js +21 -10
- package/src/apiUtility.js +12 -8
- package/src/browser/core.js +103 -65
- package/src/browser/defaults/scrubFields.js +3 -3
- package/src/browser/detection.js +7 -8
- package/src/browser/domUtility.js +18 -8
- package/src/browser/globalSetup.js +12 -6
- package/src/browser/logger.js +1 -1
- package/src/browser/plugins/jquery.js +35 -35
- package/src/browser/predicates.js +1 -1
- package/src/browser/rollbar.js +1 -1
- package/src/browser/rollbarWrapper.js +8 -5
- package/src/browser/shim.js +43 -19
- package/src/browser/snippet_callback.js +6 -4
- package/src/browser/telemetry.js +570 -358
- package/src/browser/transforms.js +46 -27
- package/src/browser/transport/fetch.js +16 -14
- package/src/browser/transport/xhr.js +29 -13
- package/src/browser/transport.js +82 -25
- package/src/browser/url.js +16 -8
- package/src/browser/wrapGlobals.js +27 -8
- package/src/defaults.js +3 -3
- package/src/errorParser.js +14 -11
- package/src/merge.js +32 -23
- package/src/notifier.js +16 -13
- package/src/predicates.js +43 -23
- package/src/queue.js +71 -39
- package/src/rateLimiter.js +59 -18
- package/src/react-native/logger.js +1 -1
- package/src/react-native/rollbar.js +59 -55
- package/src/react-native/transforms.js +13 -9
- package/src/react-native/transport.js +44 -34
- package/src/rollbar.js +22 -13
- package/src/scrub.js +0 -1
- package/src/server/locals.js +69 -39
- package/src/server/logger.js +4 -4
- package/src/server/parser.js +72 -47
- package/src/server/rollbar.js +133 -55
- package/src/server/sourceMap/stackTrace.js +33 -18
- package/src/server/telemetry/urlHelpers.js +9 -11
- package/src/server/telemetry.js +68 -45
- package/src/server/transforms.js +37 -21
- package/src/server/transport.js +62 -32
- package/src/telemetry.js +92 -28
- package/src/transforms.js +33 -21
- package/src/truncation.js +8 -5
- package/src/utility/headers.js +43 -43
- package/src/utility/replace.js +9 -0
- package/src/utility/traverse.js +1 -1
- package/src/utility.js +89 -52
- package/test/api.test.js +31 -29
- package/test/apiUtility.test.js +43 -44
- package/test/browser.core.test.js +141 -131
- package/test/browser.domUtility.test.js +52 -35
- package/test/browser.predicates.test.js +13 -13
- package/test/browser.rollbar.test.js +597 -503
- package/test/browser.telemetry.test.js +45 -38
- package/test/browser.transforms.test.js +146 -128
- package/test/browser.transport.test.js +54 -46
- package/test/browser.url.test.js +12 -11
- package/test/fixtures/locals.fixtures.js +245 -126
- package/test/notifier.test.js +90 -78
- package/test/predicates.test.js +260 -214
- package/test/queue.test.js +230 -214
- package/test/rateLimiter.test.js +50 -42
- package/test/react-native.rollbar.test.js +149 -115
- package/test/react-native.transforms.test.js +21 -23
- package/test/react-native.transport.test.js +23 -11
- package/test/server.lambda.test.js +70 -53
- package/test/server.locals.test.js +437 -210
- package/test/server.parser.test.js +32 -26
- package/test/server.predicates.test.js +45 -43
- package/test/server.rollbar.test.js +311 -259
- package/test/server.telemetry.test.js +208 -83
- package/test/server.transforms.test.js +455 -361
- package/test/server.transport.test.js +144 -76
- package/test/telemetry.test.js +46 -37
- package/test/transforms.test.js +68 -66
- package/test/truncation.test.js +55 -53
- package/test/utility.test.js +266 -222
- package/webpack.config.js +46 -42
- package/.gitmodules +0 -3
|
@@ -9,9 +9,11 @@ var https = require('https');
|
|
|
9
9
|
|
|
10
10
|
process.env.NODE_ENV = process.env.NODE_ENV || 'test-node-env';
|
|
11
11
|
var Rollbar = require('../src/server/rollbar');
|
|
12
|
+
var { mergeOptions } = require('../src/server/telemetry/urlHelpers');
|
|
13
|
+
const { URL } = require('url');
|
|
12
14
|
|
|
13
15
|
function wait(ms) {
|
|
14
|
-
return new Promise(resolve => {
|
|
16
|
+
return new Promise((resolve) => {
|
|
15
17
|
setTimeout(resolve, ms);
|
|
16
18
|
});
|
|
17
19
|
}
|
|
@@ -31,14 +33,16 @@ async function message(rollbar) {
|
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
function request(transport, url, options, body) {
|
|
34
|
-
return new Promise
|
|
35
|
-
var req = url
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
var req = url
|
|
38
|
+
? transport.request(url, options)
|
|
39
|
+
: transport.request(options);
|
|
36
40
|
|
|
37
|
-
req.on('response', res => {
|
|
41
|
+
req.on('response', (res) => {
|
|
38
42
|
resolve(res);
|
|
39
43
|
});
|
|
40
44
|
|
|
41
|
-
req.on('error', err => {
|
|
45
|
+
req.on('error', (err) => {
|
|
42
46
|
reject(err);
|
|
43
47
|
});
|
|
44
48
|
|
|
@@ -51,12 +55,12 @@ function request(transport, url, options, body) {
|
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
function requestWithCallback(transport, options, body) {
|
|
54
|
-
return new Promise
|
|
55
|
-
var req = transport.request(options, function(res){
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
var req = transport.request(options, function (res) {
|
|
56
60
|
resolve(res);
|
|
57
61
|
});
|
|
58
62
|
|
|
59
|
-
req.on('error', err => {
|
|
63
|
+
req.on('error', (err) => {
|
|
60
64
|
reject(err);
|
|
61
65
|
});
|
|
62
66
|
|
|
@@ -69,61 +73,77 @@ function requestWithCallback(transport, options, body) {
|
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
function stubPostWithResponse(url, status, headers, body) {
|
|
72
|
-
return nock(url)
|
|
73
|
-
.post('/api/users')
|
|
74
|
-
.reply(status, body, headers);
|
|
76
|
+
return nock(url).post('/api/users').reply(status, body, headers);
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
function stubGetWithResponse(url, status, headers, body) {
|
|
78
|
-
return nock(url)
|
|
79
|
-
.get('/api/users')
|
|
80
|
-
.reply(status, body, headers);
|
|
80
|
+
return nock(url).get('/api/users').reply(status, body, headers);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
function stubGetWithError(url) {
|
|
84
|
-
return nock(url)
|
|
85
|
-
.get('/api/users')
|
|
86
|
-
.replyWithError('dns error');
|
|
84
|
+
return nock(url).get('/api/users').replyWithError('dns error');
|
|
87
85
|
}
|
|
88
86
|
|
|
89
|
-
var testHeaders1 = {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
var testHeaders1 = {
|
|
88
|
+
'Content-Type': 'application/json',
|
|
89
|
+
'X-access-token': '123',
|
|
90
|
+
};
|
|
91
|
+
var testHeaders2 = { authorization: 'abc', foo: '456' };
|
|
92
|
+
var testHeaders3 = { 'content-type': 'application/json', foo: '123' };
|
|
93
|
+
var testHeaders4 = { authorization: 'abc', bar: '456' };
|
|
93
94
|
var testBody1 = 'test body 1';
|
|
94
95
|
var testBody2 = 'test body 2';
|
|
95
96
|
var testMessage1 = 'test console message';
|
|
96
97
|
var testMessage2 = 'test console error message';
|
|
97
98
|
var testMessagePart = ', extra part';
|
|
98
99
|
|
|
99
|
-
vows
|
|
100
|
+
vows
|
|
101
|
+
.describe('telemetry')
|
|
100
102
|
.addBatch({
|
|
101
103
|
'with log and network capture enabled': {
|
|
102
|
-
topic: function() {
|
|
104
|
+
topic: function () {
|
|
103
105
|
var rollbar = new Rollbar({
|
|
104
106
|
accessToken: 'abc123',
|
|
105
107
|
captureUncaught: true,
|
|
106
|
-
autoInstrument: true
|
|
108
|
+
autoInstrument: true,
|
|
107
109
|
});
|
|
108
110
|
rollbar.testData = {};
|
|
109
111
|
var notifier = rollbar.client.notifier;
|
|
110
112
|
rollbar.testData.addItemStub = sinon.stub(notifier.queue, 'addItem');
|
|
111
|
-
rollbar.testData.getStub = stubGetWithResponse(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
rollbar.testData.getStub = stubGetWithResponse(
|
|
114
|
+
'http://example.com',
|
|
115
|
+
200,
|
|
116
|
+
testHeaders3,
|
|
117
|
+
testBody1,
|
|
118
|
+
);
|
|
119
|
+
rollbar.testData.postStub = stubPostWithResponse(
|
|
120
|
+
'https://example.com',
|
|
121
|
+
201,
|
|
122
|
+
testHeaders4,
|
|
123
|
+
testBody2,
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
var func = async function (callback) {
|
|
115
127
|
// Invoke telemetry events
|
|
116
128
|
console.info(testMessage1, testMessagePart);
|
|
117
|
-
rollbar.testData.response1 = await request(
|
|
129
|
+
rollbar.testData.response1 = await request(
|
|
130
|
+
http,
|
|
131
|
+
'http://example.com/api/users',
|
|
132
|
+
{ method: 'GET', headers: testHeaders1 },
|
|
133
|
+
);
|
|
118
134
|
console.error(testMessage2);
|
|
119
|
-
rollbar.testData.response2 = await request(
|
|
135
|
+
rollbar.testData.response2 = await request(
|
|
136
|
+
https,
|
|
137
|
+
'https://example.com/api/users',
|
|
138
|
+
{ method: 'POST', headers: testHeaders2 },
|
|
139
|
+
);
|
|
120
140
|
|
|
121
141
|
await uncaught(rollbar);
|
|
122
142
|
callback(rollbar);
|
|
123
|
-
}
|
|
143
|
+
};
|
|
124
144
|
func(this.callback);
|
|
125
145
|
},
|
|
126
|
-
'exception payload should have telemetry': function(r) {
|
|
146
|
+
'exception payload should have telemetry': function (r) {
|
|
127
147
|
var addItemStub = r.testData.addItemStub;
|
|
128
148
|
var response1 = r.testData.response1;
|
|
129
149
|
var response2 = r.testData.response2;
|
|
@@ -140,23 +160,35 @@ vows.describe('telemetry')
|
|
|
140
160
|
// Verify telemetry items and order
|
|
141
161
|
assert.deepStrictEqual(telemetry[0].level, 'info');
|
|
142
162
|
assert.deepStrictEqual(telemetry[0].type, 'log');
|
|
143
|
-
assert.deepStrictEqual(
|
|
163
|
+
assert.deepStrictEqual(
|
|
164
|
+
telemetry[0].body.message,
|
|
165
|
+
'test console message , extra part\n',
|
|
166
|
+
);
|
|
144
167
|
|
|
145
168
|
assert.deepStrictEqual(telemetry[1].level, 'info');
|
|
146
169
|
assert.deepStrictEqual(telemetry[1].type, 'network');
|
|
147
170
|
assert.deepStrictEqual(telemetry[1].body.method, 'GET');
|
|
148
|
-
assert.deepStrictEqual(
|
|
171
|
+
assert.deepStrictEqual(
|
|
172
|
+
telemetry[1].body.url,
|
|
173
|
+
'http://example.com/api/users',
|
|
174
|
+
);
|
|
149
175
|
assert.deepStrictEqual(telemetry[1].body.status_code, 200);
|
|
150
176
|
assert.deepStrictEqual(telemetry[1].body.subtype, 'http');
|
|
151
177
|
|
|
152
178
|
assert.deepStrictEqual(telemetry[2].level, 'error');
|
|
153
179
|
assert.deepStrictEqual(telemetry[2].type, 'log');
|
|
154
|
-
assert.deepStrictEqual(
|
|
180
|
+
assert.deepStrictEqual(
|
|
181
|
+
telemetry[2].body.message,
|
|
182
|
+
'test console error message\n',
|
|
183
|
+
);
|
|
155
184
|
|
|
156
185
|
assert.deepStrictEqual(telemetry[3].level, 'info');
|
|
157
186
|
assert.deepStrictEqual(telemetry[3].type, 'network');
|
|
158
187
|
assert.deepStrictEqual(telemetry[3].body.method, 'POST');
|
|
159
|
-
assert.deepStrictEqual(
|
|
188
|
+
assert.deepStrictEqual(
|
|
189
|
+
telemetry[3].body.url,
|
|
190
|
+
'https://example.com/api/users',
|
|
191
|
+
);
|
|
160
192
|
assert.deepStrictEqual(telemetry[3].body.status_code, 201);
|
|
161
193
|
assert.deepStrictEqual(telemetry[3].body.subtype, 'http');
|
|
162
194
|
|
|
@@ -167,81 +199,129 @@ vows.describe('telemetry')
|
|
|
167
199
|
assert.deepEqual(telemetry[3].body.response.headers, undefined);
|
|
168
200
|
|
|
169
201
|
addItemStub.restore();
|
|
170
|
-
}
|
|
171
|
-
}
|
|
202
|
+
},
|
|
203
|
+
},
|
|
172
204
|
})
|
|
173
205
|
.addBatch({
|
|
174
206
|
'with log and network capture enabled with headers enabled': {
|
|
175
|
-
topic: function() {
|
|
207
|
+
topic: function () {
|
|
176
208
|
var rollbar = new Rollbar({
|
|
177
209
|
accessToken: 'abc123',
|
|
178
210
|
captureUncaught: true,
|
|
179
211
|
autoInstrument: {
|
|
180
212
|
network: true,
|
|
181
213
|
networkResponseHeaders: true,
|
|
182
|
-
networkRequestHeaders: true
|
|
183
|
-
}
|
|
214
|
+
networkRequestHeaders: true,
|
|
215
|
+
},
|
|
184
216
|
});
|
|
185
217
|
rollbar.testData = {};
|
|
186
218
|
var notifier = rollbar.client.notifier;
|
|
187
219
|
rollbar.testData.addItemStub = sinon.stub(notifier.queue, 'addItem');
|
|
188
|
-
rollbar.testData.getStub = stubGetWithResponse(
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
220
|
+
rollbar.testData.getStub = stubGetWithResponse(
|
|
221
|
+
'https://example.com',
|
|
222
|
+
200,
|
|
223
|
+
testHeaders3,
|
|
224
|
+
testBody1,
|
|
225
|
+
);
|
|
226
|
+
rollbar.testData.postStub = stubPostWithResponse(
|
|
227
|
+
'http://example.com',
|
|
228
|
+
201,
|
|
229
|
+
testHeaders4,
|
|
230
|
+
testBody2,
|
|
231
|
+
);
|
|
232
|
+
|
|
233
|
+
var func = async function (callback) {
|
|
192
234
|
// Invoke telemetry events
|
|
193
235
|
console.info(testMessage1, testMessagePart);
|
|
194
|
-
rollbar.testData.response1 = await request(
|
|
236
|
+
rollbar.testData.response1 = await request(
|
|
237
|
+
https,
|
|
238
|
+
'https://example.com/api/users',
|
|
239
|
+
{ method: 'GET', headers: testHeaders1 },
|
|
240
|
+
);
|
|
195
241
|
console.error(testMessage2);
|
|
196
|
-
rollbar.testData.response2 = await request(
|
|
242
|
+
rollbar.testData.response2 = await request(
|
|
243
|
+
http,
|
|
244
|
+
'http://example.com/api/users',
|
|
245
|
+
{ method: 'POST', headers: testHeaders2 },
|
|
246
|
+
);
|
|
197
247
|
|
|
198
248
|
await message(rollbar);
|
|
199
249
|
callback(rollbar);
|
|
200
|
-
}
|
|
250
|
+
};
|
|
201
251
|
func(this.callback);
|
|
202
252
|
},
|
|
203
|
-
'message payload should have telemetry': function(r) {
|
|
253
|
+
'message payload should have telemetry': function (r) {
|
|
204
254
|
var addItemStub = r.testData.addItemStub;
|
|
205
255
|
|
|
206
256
|
assert.isTrue(addItemStub.called);
|
|
207
257
|
var telemetry = addItemStub.getCall(0).args[3].data.body.telemetry;
|
|
208
258
|
|
|
209
259
|
// Verify headers captures, with scrubbing
|
|
210
|
-
assert.deepStrictEqual(telemetry[1].body.request_headers, {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
260
|
+
assert.deepStrictEqual(telemetry[1].body.request_headers, {
|
|
261
|
+
'Content-Type': 'application/json',
|
|
262
|
+
'X-access-token': '********',
|
|
263
|
+
});
|
|
264
|
+
assert.deepStrictEqual(telemetry[1].body.response.headers, {
|
|
265
|
+
'content-type': 'application/json',
|
|
266
|
+
foo: '123',
|
|
267
|
+
});
|
|
268
|
+
assert.deepStrictEqual(telemetry[3].body.request_headers, {
|
|
269
|
+
authorization: '********',
|
|
270
|
+
foo: '456',
|
|
271
|
+
});
|
|
272
|
+
assert.deepStrictEqual(telemetry[3].body.response.headers, {
|
|
273
|
+
authorization: '********',
|
|
274
|
+
bar: '456',
|
|
275
|
+
});
|
|
214
276
|
|
|
215
277
|
addItemStub.restore();
|
|
216
|
-
}
|
|
217
|
-
}
|
|
278
|
+
},
|
|
279
|
+
},
|
|
218
280
|
})
|
|
219
281
|
.addBatch({
|
|
220
282
|
'with telemetry disabled': {
|
|
221
|
-
topic: function() {
|
|
283
|
+
topic: function () {
|
|
222
284
|
var rollbar = new Rollbar({
|
|
223
285
|
accessToken: 'abc123',
|
|
224
|
-
captureUncaught: true
|
|
286
|
+
captureUncaught: true,
|
|
225
287
|
});
|
|
226
288
|
rollbar.testData = {};
|
|
227
289
|
var notifier = rollbar.client.notifier;
|
|
228
290
|
rollbar.testData.addItemStub = sinon.stub(notifier.queue, 'addItem');
|
|
229
|
-
rollbar.testData.getStub = stubGetWithResponse(
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
291
|
+
rollbar.testData.getStub = stubGetWithResponse(
|
|
292
|
+
'https://example.com',
|
|
293
|
+
200,
|
|
294
|
+
testHeaders3,
|
|
295
|
+
testBody1,
|
|
296
|
+
);
|
|
297
|
+
rollbar.testData.postStub = stubPostWithResponse(
|
|
298
|
+
'https://example.com',
|
|
299
|
+
201,
|
|
300
|
+
testHeaders4,
|
|
301
|
+
testBody2,
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
var func = async function (callback) {
|
|
233
305
|
// Invoke telemetry events
|
|
234
306
|
console.info(testMessage1, testMessagePart);
|
|
235
|
-
rollbar.testData.response1 = await request(
|
|
307
|
+
rollbar.testData.response1 = await request(
|
|
308
|
+
https,
|
|
309
|
+
'https://example.com/api/users',
|
|
310
|
+
{ method: 'GET', headers: testHeaders1 },
|
|
311
|
+
);
|
|
236
312
|
console.error(testMessage2);
|
|
237
|
-
rollbar.testData.response2 = await request(
|
|
313
|
+
rollbar.testData.response2 = await request(
|
|
314
|
+
https,
|
|
315
|
+
'https://example.com/api/users',
|
|
316
|
+
{ method: 'POST', headers: testHeaders2 },
|
|
317
|
+
);
|
|
238
318
|
|
|
239
319
|
await message(rollbar);
|
|
240
320
|
callback(rollbar);
|
|
241
|
-
}
|
|
321
|
+
};
|
|
242
322
|
func(this.callback);
|
|
243
323
|
},
|
|
244
|
-
'payload should not have telemetry': function(r) {
|
|
324
|
+
'payload should not have telemetry': function (r) {
|
|
245
325
|
var addItemStub = r.testData.addItemStub;
|
|
246
326
|
|
|
247
327
|
assert.isTrue(addItemStub.called);
|
|
@@ -249,26 +329,26 @@ vows.describe('telemetry')
|
|
|
249
329
|
|
|
250
330
|
// Verify telemetry is empty
|
|
251
331
|
assert.deepEqual(telemetry, []);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
332
|
+
},
|
|
333
|
+
},
|
|
254
334
|
})
|
|
255
335
|
.addBatch({
|
|
256
336
|
'with callback request and error response': {
|
|
257
|
-
topic: function() {
|
|
337
|
+
topic: function () {
|
|
258
338
|
var rollbar = new Rollbar({
|
|
259
339
|
accessToken: 'abc123',
|
|
260
340
|
captureUncaught: true,
|
|
261
341
|
autoInstrument: {
|
|
262
342
|
network: true,
|
|
263
343
|
networkResponseHeaders: true,
|
|
264
|
-
networkRequestHeaders: true
|
|
265
|
-
}
|
|
344
|
+
networkRequestHeaders: true,
|
|
345
|
+
},
|
|
266
346
|
});
|
|
267
347
|
var notifier = rollbar.client.notifier;
|
|
268
348
|
rollbar.testData = {};
|
|
269
349
|
rollbar.testData.addItemStub = sinon.stub(notifier.queue, 'addItem');
|
|
270
350
|
|
|
271
|
-
var func = async function(callback) {
|
|
351
|
+
var func = async function (callback) {
|
|
272
352
|
var options = {
|
|
273
353
|
method: 'GET',
|
|
274
354
|
protocol: 'https:',
|
|
@@ -279,18 +359,29 @@ vows.describe('telemetry')
|
|
|
279
359
|
|
|
280
360
|
// Invoke telemetry events
|
|
281
361
|
console.info(testMessage1, testMessagePart);
|
|
282
|
-
rollbar.testData.getStub = stubGetWithResponse(
|
|
283
|
-
|
|
362
|
+
rollbar.testData.getStub = stubGetWithResponse(
|
|
363
|
+
'https://example.com',
|
|
364
|
+
200,
|
|
365
|
+
testHeaders3,
|
|
366
|
+
testBody1,
|
|
367
|
+
);
|
|
368
|
+
rollbar.testData.response1 = await requestWithCallback(
|
|
369
|
+
https,
|
|
370
|
+
options,
|
|
371
|
+
).catch((e) => e);
|
|
284
372
|
console.error(testMessage2);
|
|
285
373
|
rollbar.testData.errorStub = stubGetWithError('https://example.com');
|
|
286
|
-
rollbar.testData.response2 = await requestWithCallback(
|
|
374
|
+
rollbar.testData.response2 = await requestWithCallback(
|
|
375
|
+
https,
|
|
376
|
+
options,
|
|
377
|
+
).catch((e) => e);
|
|
287
378
|
|
|
288
379
|
await message(rollbar);
|
|
289
380
|
callback(rollbar);
|
|
290
|
-
}
|
|
381
|
+
};
|
|
291
382
|
func(this.callback);
|
|
292
383
|
},
|
|
293
|
-
'message payload should have telemetry or error info': function(r) {
|
|
384
|
+
'message payload should have telemetry or error info': function (r) {
|
|
294
385
|
var addItemStub = r.testData.addItemStub;
|
|
295
386
|
var response1 = r.testData.response1;
|
|
296
387
|
var response2 = r.testData.response2;
|
|
@@ -304,15 +395,49 @@ vows.describe('telemetry')
|
|
|
304
395
|
assert(response2 instanceof Error);
|
|
305
396
|
|
|
306
397
|
// Verify telemetry
|
|
307
|
-
assert.deepStrictEqual(telemetry[1].body.request_headers, {
|
|
308
|
-
|
|
309
|
-
|
|
398
|
+
assert.deepStrictEqual(telemetry[1].body.request_headers, {
|
|
399
|
+
'Content-Type': 'application/json',
|
|
400
|
+
'X-access-token': '********',
|
|
401
|
+
});
|
|
402
|
+
assert.deepStrictEqual(telemetry[1].body.response.headers, {
|
|
403
|
+
'content-type': 'application/json',
|
|
404
|
+
foo: '123',
|
|
405
|
+
});
|
|
406
|
+
assert.deepStrictEqual(telemetry[3].body.request_headers, {
|
|
407
|
+
'Content-Type': 'application/json',
|
|
408
|
+
'X-access-token': '********',
|
|
409
|
+
});
|
|
310
410
|
assert.deepStrictEqual(telemetry[3].body.response, undefined);
|
|
311
411
|
assert.deepStrictEqual(telemetry[3].body.status_code, 0);
|
|
312
412
|
assert.deepStrictEqual(telemetry[3].body.error, 'Error: dns error');
|
|
313
413
|
|
|
314
|
-
|
|
315
414
|
addItemStub.restore();
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
})
|
|
415
|
+
},
|
|
416
|
+
},
|
|
417
|
+
})
|
|
418
|
+
.addBatch({
|
|
419
|
+
'while using autoinstrument': {
|
|
420
|
+
topic: function () {
|
|
421
|
+
const optionsUsingStringUrl = mergeOptions(
|
|
422
|
+
'http://example.com/api/users',
|
|
423
|
+
{ method: 'GET', headers: testHeaders1 },
|
|
424
|
+
);
|
|
425
|
+
const optionsUsingClassUrl = mergeOptions(
|
|
426
|
+
new URL('http://example.com/api/users'),
|
|
427
|
+
{ method: 'GET', headers: testHeaders1 },
|
|
428
|
+
);
|
|
429
|
+
|
|
430
|
+
return {
|
|
431
|
+
optionsUsingStringUrl,
|
|
432
|
+
optionsUsingClassUrl,
|
|
433
|
+
};
|
|
434
|
+
},
|
|
435
|
+
'mergeOptions should correctly handle URL and options': function ({
|
|
436
|
+
optionsUsingStringUrl,
|
|
437
|
+
optionsUsingClassUrl,
|
|
438
|
+
}) {
|
|
439
|
+
assert.deepStrictEqual(optionsUsingStringUrl, optionsUsingClassUrl);
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
})
|
|
443
|
+
.export(module, { error: false });
|