nock 8.0.0 → 8.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/.travis.yml +1 -0
  2. package/CHANGELOG.md +107 -114
  3. package/README.md +103 -42
  4. package/lib/common.js +15 -1
  5. package/lib/intercept.js +24 -11
  6. package/lib/interceptor.js +21 -22
  7. package/lib/match_body.js +1 -1
  8. package/lib/recorder.js +6 -3
  9. package/lib/request_overrider.js +3 -3
  10. package/lib/scope.js +30 -28
  11. package/package.json +10 -7
  12. package/tests/test_back.js +5 -2
  13. package/tests/test_body_match.js +40 -0
  14. package/tests/test_browserify.js +54 -52
  15. package/tests/test_intercept.js +195 -47
  16. package/tests/test_isomorphic_fetch.js +45 -45
  17. package/.npmignore +0 -2
  18. package/coverage/coverage.json +0 -1
  19. package/coverage/lcov-report/base.css +0 -212
  20. package/coverage/lcov-report/index.html +0 -106
  21. package/coverage/lcov-report/nock/index.html +0 -93
  22. package/coverage/lcov-report/nock/index.js.html +0 -98
  23. package/coverage/lcov-report/nock/lib/back.js.html +0 -1022
  24. package/coverage/lcov-report/nock/lib/common.js.html +0 -1070
  25. package/coverage/lcov-report/nock/lib/delayed_body.js.html +0 -305
  26. package/coverage/lcov-report/nock/lib/global_emitter.js.html +0 -71
  27. package/coverage/lcov-report/nock/lib/index.html +0 -223
  28. package/coverage/lcov-report/nock/lib/intercept.js.html +0 -1253
  29. package/coverage/lcov-report/nock/lib/interceptor.js.html +0 -1670
  30. package/coverage/lcov-report/nock/lib/match_body.js.html +0 -275
  31. package/coverage/lcov-report/nock/lib/mixin.js.html +0 -107
  32. package/coverage/lcov-report/nock/lib/recorder.js.html +0 -1323
  33. package/coverage/lcov-report/nock/lib/request_overrider.js.html +0 -1643
  34. package/coverage/lcov-report/nock/lib/scope.js.html +0 -1133
  35. package/coverage/lcov-report/nock/lib/socket.js.html +0 -272
  36. package/coverage/lcov-report/prettify.css +0 -1
  37. package/coverage/lcov-report/prettify.js +0 -1
  38. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  39. package/coverage/lcov-report/sorter.js +0 -158
  40. package/coverage/lcov.info +0 -2428
  41. package/tests/browserify-public/browserify-bundle.js +0 -34332
  42. package/tests/test.js +0 -32
@@ -1,1323 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <title>Code coverage report for nock/lib/recorder.js</title>
5
- <meta charset="utf-8">
6
- <link rel="stylesheet" href="../../prettify.css">
7
- <link rel="stylesheet" href="../../base.css">
8
- <style type='text/css'>
9
- div.coverage-summary .sorter {
10
- background-image: url(../../sort-arrow-sprite.png);
11
- }
12
- </style>
13
- </head>
14
- <body>
15
- <div class="header medium">
16
- <h1>Code coverage report for <span class="entity">nock/lib/recorder.js</span></h1>
17
- <h2>
18
- Statements: <span class="metric">53.69% <small>(109 / 203)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
19
- Branches: <span class="metric">43.21% <small>(35 / 81)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
20
- Functions: <span class="metric">54.55% <small>(12 / 22)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
21
- Lines: <span class="metric">53.69% <small>(109 / 203)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
22
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
23
- </h2>
24
- <div class="path"><a href="../../index.html">All files</a> &#187; <a href="index.html">nock/lib/</a> &#187; recorder.js</div>
25
- </div>
26
- <div class="body">
27
- <pre><table class="coverage">
28
- <tr><td class="line-count">1
29
- 2
30
- 3
31
- 4
32
- 5
33
- 6
34
- 7
35
- 8
36
- 9
37
- 10
38
- 11
39
- 12
40
- 13
41
- 14
42
- 15
43
- 16
44
- 17
45
- 18
46
- 19
47
- 20
48
- 21
49
- 22
50
- 23
51
- 24
52
- 25
53
- 26
54
- 27
55
- 28
56
- 29
57
- 30
58
- 31
59
- 32
60
- 33
61
- 34
62
- 35
63
- 36
64
- 37
65
- 38
66
- 39
67
- 40
68
- 41
69
- 42
70
- 43
71
- 44
72
- 45
73
- 46
74
- 47
75
- 48
76
- 49
77
- 50
78
- 51
79
- 52
80
- 53
81
- 54
82
- 55
83
- 56
84
- 57
85
- 58
86
- 59
87
- 60
88
- 61
89
- 62
90
- 63
91
- 64
92
- 65
93
- 66
94
- 67
95
- 68
96
- 69
97
- 70
98
- 71
99
- 72
100
- 73
101
- 74
102
- 75
103
- 76
104
- 77
105
- 78
106
- 79
107
- 80
108
- 81
109
- 82
110
- 83
111
- 84
112
- 85
113
- 86
114
- 87
115
- 88
116
- 89
117
- 90
118
- 91
119
- 92
120
- 93
121
- 94
122
- 95
123
- 96
124
- 97
125
- 98
126
- 99
127
- 100
128
- 101
129
- 102
130
- 103
131
- 104
132
- 105
133
- 106
134
- 107
135
- 108
136
- 109
137
- 110
138
- 111
139
- 112
140
- 113
141
- 114
142
- 115
143
- 116
144
- 117
145
- 118
146
- 119
147
- 120
148
- 121
149
- 122
150
- 123
151
- 124
152
- 125
153
- 126
154
- 127
155
- 128
156
- 129
157
- 130
158
- 131
159
- 132
160
- 133
161
- 134
162
- 135
163
- 136
164
- 137
165
- 138
166
- 139
167
- 140
168
- 141
169
- 142
170
- 143
171
- 144
172
- 145
173
- 146
174
- 147
175
- 148
176
- 149
177
- 150
178
- 151
179
- 152
180
- 153
181
- 154
182
- 155
183
- 156
184
- 157
185
- 158
186
- 159
187
- 160
188
- 161
189
- 162
190
- 163
191
- 164
192
- 165
193
- 166
194
- 167
195
- 168
196
- 169
197
- 170
198
- 171
199
- 172
200
- 173
201
- 174
202
- 175
203
- 176
204
- 177
205
- 178
206
- 179
207
- 180
208
- 181
209
- 182
210
- 183
211
- 184
212
- 185
213
- 186
214
- 187
215
- 188
216
- 189
217
- 190
218
- 191
219
- 192
220
- 193
221
- 194
222
- 195
223
- 196
224
- 197
225
- 198
226
- 199
227
- 200
228
- 201
229
- 202
230
- 203
231
- 204
232
- 205
233
- 206
234
- 207
235
- 208
236
- 209
237
- 210
238
- 211
239
- 212
240
- 213
241
- 214
242
- 215
243
- 216
244
- 217
245
- 218
246
- 219
247
- 220
248
- 221
249
- 222
250
- 223
251
- 224
252
- 225
253
- 226
254
- 227
255
- 228
256
- 229
257
- 230
258
- 231
259
- 232
260
- 233
261
- 234
262
- 235
263
- 236
264
- 237
265
- 238
266
- 239
267
- 240
268
- 241
269
- 242
270
- 243
271
- 244
272
- 245
273
- 246
274
- 247
275
- 248
276
- 249
277
- 250
278
- 251
279
- 252
280
- 253
281
- 254
282
- 255
283
- 256
284
- 257
285
- 258
286
- 259
287
- 260
288
- 261
289
- 262
290
- 263
291
- 264
292
- 265
293
- 266
294
- 267
295
- 268
296
- 269
297
- 270
298
- 271
299
- 272
300
- 273
301
- 274
302
- 275
303
- 276
304
- 277
305
- 278
306
- 279
307
- 280
308
- 281
309
- 282
310
- 283
311
- 284
312
- 285
313
- 286
314
- 287
315
- 288
316
- 289
317
- 290
318
- 291
319
- 292
320
- 293
321
- 294
322
- 295
323
- 296
324
- 297
325
- 298
326
- 299
327
- 300
328
- 301
329
- 302
330
- 303
331
- 304
332
- 305
333
- 306
334
- 307
335
- 308
336
- 309
337
- 310
338
- 311
339
- 312
340
- 313
341
- 314
342
- 315
343
- 316
344
- 317
345
- 318
346
- 319
347
- 320
348
- 321
349
- 322
350
- 323
351
- 324
352
- 325
353
- 326
354
- 327
355
- 328
356
- 329
357
- 330
358
- 331
359
- 332
360
- 333
361
- 334
362
- 335
363
- 336
364
- 337
365
- 338
366
- 339
367
- 340
368
- 341
369
- 342
370
- 343
371
- 344
372
- 345
373
- 346
374
- 347
375
- 348
376
- 349
377
- 350
378
- 351
379
- 352
380
- 353
381
- 354
382
- 355
383
- 356
384
- 357
385
- 358
386
- 359
387
- 360
388
- 361
389
- 362
390
- 363
391
- 364
392
- 365
393
- 366
394
- 367
395
- 368
396
- 369
397
- 370
398
- 371
399
- 372
400
- 373
401
- 374
402
- 375
403
- 376
404
- 377
405
- 378
406
- 379
407
- 380
408
- 381
409
- 382
410
- 383
411
- 384
412
- 385
413
- 386
414
- 387
415
- 388
416
- 389
417
- 390
418
- 391
419
- 392
420
- 393
421
- 394
422
- 395
423
- 396
424
- 397
425
- 398
426
- 399
427
- 400
428
- 401
429
- 402
430
- 403
431
- 404
432
- 405
433
- 406
434
- 407
435
- 408
436
- 409
437
- 410
438
- 411
439
- 412
440
- 413
441
- 414
442
- 415
443
- 416
444
- 417
445
- 418
446
- 419
447
- 420
448
- 421
449
- 422
450
- 423
451
- 424
452
- 425
453
- 426
454
- 427</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">1</span>
457
- <span class="cline-any cline-yes">1</span>
458
- <span class="cline-any cline-yes">1</span>
459
- <span class="cline-any cline-yes">1</span>
460
- <span class="cline-any cline-yes">1</span>
461
- <span class="cline-any cline-yes">1</span>
462
- <span class="cline-any cline-yes">1</span>
463
- <span class="cline-any cline-yes">1</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-yes">1</span>
466
- <span class="cline-any cline-yes">1</span>
467
- <span class="cline-any cline-yes">1</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-yes">1</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-yes">4</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-yes">4</span>
474
- <span class="cline-any cline-yes">4</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-yes">4</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-yes">4</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">4</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-no">&nbsp;</span>
488
- <span class="cline-any cline-no">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-yes">4</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-yes">1</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">4</span>
498
- <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-yes">1</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-yes">8</span>
507
- <span class="cline-any cline-no">&nbsp;</span>
508
- <span class="cline-any cline-no">&nbsp;</span>
509
- <span class="cline-any cline-no">&nbsp;</span>
510
- <span class="cline-any cline-no">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-yes">8</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-yes">8</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-yes">8</span>
531
- <span class="cline-any cline-yes">8</span>
532
- <span class="cline-any cline-yes">8</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-yes">8</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-yes">1</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-yes">4</span>
543
- <span class="cline-any cline-yes">4</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-yes">1</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-no">&nbsp;</span>
565
- <span class="cline-any cline-no">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-no">&nbsp;</span>
573
- <span class="cline-any cline-no">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-yes">1</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-yes">1</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-yes">4</span>
627
- <span class="cline-any cline-yes">4</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-yes">4</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-yes">4</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-yes">4</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-yes">4</span>
643
- <span class="cline-any cline-yes">4</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-yes">4</span>
646
- <span class="cline-any cline-yes">4</span>
647
- <span class="cline-any cline-yes">4</span>
648
- <span class="cline-any cline-yes">4</span>
649
- <span class="cline-any cline-yes">4</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-yes">4</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-yes">4</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-yes">4</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-yes">4</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-yes">4</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-yes">4</span>
668
- <span class="cline-any cline-yes">1</span>
669
- <span class="cline-any cline-yes">1</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-yes">4</span>
680
- <span class="cline-any cline-no">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-yes">4</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-yes">4</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-yes">4</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-yes">4</span>
689
- <span class="cline-any cline-no">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-yes">4</span>
694
- <span class="cline-any cline-yes">4</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-yes">4</span>
697
- <span class="cline-any cline-yes">4</span>
698
- <span class="cline-any cline-yes">4</span>
699
- <span class="cline-any cline-yes">4</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-yes">4</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-yes">4</span>
706
- <span class="cline-any cline-yes">4</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-no">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-yes">4</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-yes">4</span>
724
- <span class="cline-any cline-yes">2</span>
725
- <span class="cline-any cline-yes">2</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-yes">2</span>
729
- <span class="cline-any cline-neutral">&nbsp;</span>
730
- <span class="cline-any cline-yes">2</span>
731
- <span class="cline-any cline-no">&nbsp;</span>
732
- <span class="cline-any cline-no">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-no">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-yes">4</span>
740
- <span class="cline-any cline-yes">4</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-yes">4</span>
745
- <span class="cline-any cline-yes">4</span>
746
- <span class="cline-any cline-no">&nbsp;</span>
747
- <span class="cline-any cline-no">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-yes">4</span>
754
- <span class="cline-any cline-yes">1</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-yes">4</span>
760
- <span class="cline-any cline-yes">4</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-no">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-no">&nbsp;</span>
767
- <span class="cline-any cline-no">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-no">&nbsp;</span>
773
- <span class="cline-any cline-no">&nbsp;</span>
774
- <span class="cline-any cline-no">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-no">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-no">&nbsp;</span>
780
- <span class="cline-any cline-no">&nbsp;</span>
781
- <span class="cline-any cline-no">&nbsp;</span>
782
- <span class="cline-any cline-no">&nbsp;</span>
783
- <span class="cline-any cline-no">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-no">&nbsp;</span>
786
- <span class="cline-any cline-no">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-no">&nbsp;</span>
793
- <span class="cline-any cline-no">&nbsp;</span>
794
- <span class="cline-any cline-no">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-no">&nbsp;</span>
797
- <span class="cline-any cline-no">&nbsp;</span>
798
- <span class="cline-any cline-no">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-no">&nbsp;</span>
802
- <span class="cline-any cline-no">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-no">&nbsp;</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-yes">4</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-yes">4</span>
817
- <span class="cline-any cline-yes">4</span>
818
- <span class="cline-any cline-no">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-yes">4</span>
822
- <span class="cline-any cline-yes">4</span>
823
- <span class="cline-any cline-yes">4</span>
824
- <span class="cline-any cline-no">&nbsp;</span>
825
- <span class="cline-any cline-neutral">&nbsp;</span>
826
- <span class="cline-any cline-yes">4</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-yes">4</span>
829
- <span class="cline-any cline-no">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-neutral">&nbsp;</span>
832
- <span class="cline-any cline-yes">4</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-yes">4</span>
836
- <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-yes">4</span>
838
- <span class="cline-any cline-no">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">4</span>
844
- <span class="cline-any cline-yes">4</span>
845
- <span class="cline-any cline-no">&nbsp;</span>
846
- <span class="cline-any cline-no">&nbsp;</span>
847
- <span class="cline-any cline-no">&nbsp;</span>
848
- <span class="cline-any cline-no">&nbsp;</span>
849
- <span class="cline-any cline-no">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-no">&nbsp;</span>
852
- <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-no">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-yes">4</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-yes">1</span>
863
- <span class="cline-any cline-yes">24</span>
864
- <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-yes">24</span>
866
- <span class="cline-any cline-yes">24</span>
867
- <span class="cline-any cline-yes">24</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-yes">1</span>
871
- <span class="cline-any cline-yes">11</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-yes">1</span>
875
- <span class="cline-any cline-yes">1</span>
876
- <span class="cline-any cline-yes">4</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-yes">1</span>
879
- <span class="cline-any cline-yes">1</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
881
- &nbsp;
882
- var inspect = require('util').inspect;
883
- var parse = require('url').parse;
884
- var common = require('./common');
885
- var intercept = require('./intercept');
886
- var debug = require('debug')('nock.recorder');
887
- var _ = require('lodash');
888
- var Stream = require('stream');
889
- var URL = require('url');
890
- &nbsp;
891
- var SEPARATOR = '\n&lt;&lt;&lt;&lt;&lt;&lt;-- cut here --&gt;&gt;&gt;&gt;&gt;&gt;\n';
892
- var recordingInProgress = false;
893
- var outputs = [];
894
- &nbsp;
895
- function getScope(options) {
896
- &nbsp;
897
- common.normalizeRequestOptions(options);
898
- &nbsp;
899
- var scope = [];
900
- <span class="missing-if-branch" title="if path not taken" >I</span>if (options._https_) {
901
- <span class="cstat-no" title="statement not covered" > scope.push('https://');</span>
902
- } else {
903
- scope.push('http://');
904
- }
905
- &nbsp;
906
- scope.push(options.host);
907
- &nbsp;
908
- // If a non-standard port wasn't specified in options.host, include it from options.port.
909
- <span class="missing-if-branch" title="if path not taken" >I</span>if(options.host.indexOf(':') === -1 &amp;&amp;
910
- <span class="branch-1 cbranch-no" title="branch not covered" > options.port </span>&amp;&amp;
911
- ((<span class="branch-2 cbranch-no" title="branch not covered" >options._https_ </span>&amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >options.port.toString() !== '443')</span> ||
912
- (<span class="branch-4 cbranch-no" title="branch not covered" >!options._https_ </span>&amp;&amp; <span class="branch-5 cbranch-no" title="branch not covered" >options.port.toString() !== '80')</span>)) {
913
- <span class="cstat-no" title="statement not covered" > scope.push(':');</span>
914
- <span class="cstat-no" title="statement not covered" > scope.push(options.port);</span>
915
- }
916
- &nbsp;
917
- return scope.join('');
918
- &nbsp;
919
- }
920
- &nbsp;
921
- function getMethod(options) {
922
- &nbsp;
923
- return (options.method || <span class="branch-1 cbranch-no" title="branch not covered" >'GET')</span>;
924
- &nbsp;
925
- }
926
- &nbsp;
927
- var getBodyFromChunks = function(chunks, headers) {
928
- &nbsp;
929
- // If we have headers and there is content-encoding it means that
930
- // the body shouldn't be merged but instead persisted as an array
931
- // of hex strings so that the responses can be mocked one by one.
932
- <span class="missing-if-branch" title="if path not taken" >I</span>if(common.isContentEncoded(headers)) {
933
- <span class="cstat-no" title="statement not covered" > return _.map(chunks, <span class="fstat-no" title="function not covered" >function(chunk) {</span></span>
934
- <span class="cstat-no" title="statement not covered" > if(!Buffer.isBuffer(chunk)) {</span>
935
- <span class="cstat-no" title="statement not covered" > if (typeof chunk === 'string') {</span>
936
- <span class="cstat-no" title="statement not covered" > chunk = new Buffer(chunk);</span>
937
- } else {
938
- <span class="cstat-no" title="statement not covered" > throw new Error('content-encoded responses must all be binary buffers');</span>
939
- }
940
- }
941
- &nbsp;
942
- <span class="cstat-no" title="statement not covered" > return chunk.toString('hex');</span>
943
- });
944
- }
945
- &nbsp;
946
- var mergedBuffer = common.mergeChunks(chunks);
947
- &nbsp;
948
- // The merged buffer can be one of three things:
949
- // 1. A binary buffer which then has to be recorded as a hex string.
950
- // 2. A string buffer which represents a JSON object.
951
- // 3. A string buffer which doesn't represent a JSON object.
952
- &nbsp;
953
- <span class="missing-if-branch" title="if path not taken" >I</span>if(common.isBinaryBuffer(mergedBuffer)) {
954
- <span class="cstat-no" title="statement not covered" > return mergedBuffer.toString('hex');</span>
955
- } else {
956
- var maybeStringifiedJson = mergedBuffer.toString('utf8');
957
- try {
958
- return JSON.parse(maybeStringifiedJson);
959
- } catch(err) {
960
- return maybeStringifiedJson;
961
- }
962
- }
963
- &nbsp;
964
- };
965
- &nbsp;
966
- function generateRequestAndResponseObject(req, bodyChunks, options, res, dataChunks) {
967
- &nbsp;
968
- options.path = req.path;
969
- return {
970
- scope: getScope(options),
971
- method: getMethod(options),
972
- path: options.path,
973
- body: getBodyFromChunks(bodyChunks),
974
- status: res.statusCode,
975
- response: getBodyFromChunks(dataChunks, res.headers),
976
- headers: res.headers,
977
- reqheaders: req._headers
978
- };
979
- &nbsp;
980
- }
981
- &nbsp;
982
- <span class="fstat-no" title="function not covered" >function generateRequestAndResponse(req, bodyChunks, options, res, dataChunks) {</span>
983
- &nbsp;
984
- <span class="cstat-no" title="statement not covered" > var requestBody = getBodyFromChunks(bodyChunks);</span>
985
- <span class="cstat-no" title="statement not covered" > var responseBody = getBodyFromChunks(dataChunks, res.headers);</span>
986
- &nbsp;
987
- // Remove any query params from options.path so they can be added in the query() function
988
- <span class="cstat-no" title="statement not covered" > var path = options.path;</span>
989
- <span class="cstat-no" title="statement not covered" > var queryIndex = 0;</span>
990
- <span class="cstat-no" title="statement not covered" > var queryObj = {};</span>
991
- <span class="cstat-no" title="statement not covered" > if ((queryIndex = req.path.indexOf('?')) !== -1) {</span>
992
- <span class="cstat-no" title="statement not covered" > path = path.substring(0, queryIndex);</span>
993
- &nbsp;
994
- // Create the query() object
995
- <span class="cstat-no" title="statement not covered" > var queries = req.path.slice(queryIndex + 1).split('&amp;');</span>
996
- &nbsp;
997
- <span class="cstat-no" title="statement not covered" > for (var i = 0; i &lt; queries.length; i++) {</span>
998
- <span class="cstat-no" title="statement not covered" > var query = queries[i].split('=');</span>
999
- <span class="cstat-no" title="statement not covered" > queryObj[query[0]] = query[1];</span>
1000
- }
1001
- }
1002
- &nbsp;
1003
- <span class="cstat-no" title="statement not covered" > var ret = [];</span>
1004
- <span class="cstat-no" title="statement not covered" > ret.push('\nnock(\'');</span>
1005
- <span class="cstat-no" title="statement not covered" > ret.push(getScope(options));</span>
1006
- <span class="cstat-no" title="statement not covered" > ret.push('\')\n');</span>
1007
- <span class="cstat-no" title="statement not covered" > ret.push(' .');</span>
1008
- <span class="cstat-no" title="statement not covered" > ret.push(getMethod(options).toLowerCase());</span>
1009
- <span class="cstat-no" title="statement not covered" > ret.push('(\'');</span>
1010
- <span class="cstat-no" title="statement not covered" > ret.push(path);</span>
1011
- <span class="cstat-no" title="statement not covered" > ret.push("'");</span>
1012
- <span class="cstat-no" title="statement not covered" > if (requestBody) {</span>
1013
- <span class="cstat-no" title="statement not covered" > ret.push(', ');</span>
1014
- <span class="cstat-no" title="statement not covered" > ret.push(JSON.stringify(requestBody));</span>
1015
- }
1016
- <span class="cstat-no" title="statement not covered" > ret.push(")\n");</span>
1017
- <span class="cstat-no" title="statement not covered" > if (req.headers) {</span>
1018
- <span class="cstat-no" title="statement not covered" > for (var k in req.headers) {</span>
1019
- <span class="cstat-no" title="statement not covered" > ret.push(' .matchHeader(' + JSON.stringify(k) + ', ' + JSON.stringify(req.headers[k]) + ')\n');</span>
1020
- }
1021
- }
1022
- &nbsp;
1023
- <span class="cstat-no" title="statement not covered" > if (queryIndex !== -1) {</span>
1024
- <span class="cstat-no" title="statement not covered" > ret.push(' .query(');</span>
1025
- <span class="cstat-no" title="statement not covered" > ret.push(JSON.stringify(queryObj));</span>
1026
- <span class="cstat-no" title="statement not covered" > ret.push(')\n');</span>
1027
- }
1028
- &nbsp;
1029
- <span class="cstat-no" title="statement not covered" > ret.push(' .reply(');</span>
1030
- <span class="cstat-no" title="statement not covered" > ret.push(res.statusCode.toString());</span>
1031
- <span class="cstat-no" title="statement not covered" > ret.push(', ');</span>
1032
- <span class="cstat-no" title="statement not covered" > ret.push(JSON.stringify(responseBody));</span>
1033
- <span class="cstat-no" title="statement not covered" > if (res.headers) {</span>
1034
- <span class="cstat-no" title="statement not covered" > ret.push(', ');</span>
1035
- <span class="cstat-no" title="statement not covered" > ret.push(inspect(res.headers));</span>
1036
- }
1037
- <span class="cstat-no" title="statement not covered" > ret.push(');\n');</span>
1038
- &nbsp;
1039
- <span class="cstat-no" title="statement not covered" > return ret.join('');</span>
1040
- }
1041
- &nbsp;
1042
- // This module variable is used to identify a unique recording ID in order to skip
1043
- // spurious requests that sometimes happen. This problem has been, so far,
1044
- // exclusively detected in nock's unit testing where 'checks if callback is specified'
1045
- // interferes with other tests as its t.end() is invoked without waiting for request
1046
- // to finish (which is the point of the test).
1047
- var currentRecordingId = 0;
1048
- &nbsp;
1049
- function record(rec_options) {
1050
- &nbsp;
1051
- // Set the new current recording ID and capture its value in this instance of record().
1052
- currentRecordingId = currentRecordingId + 1;
1053
- var thisRecordingId = currentRecordingId;
1054
- &nbsp;
1055
- debug('start recording', thisRecordingId, JSON.stringify(rec_options));
1056
- &nbsp;
1057
- // Trying to start recording with recording already in progress implies an error
1058
- // in the recording configuration (double recording makes no sense and used to lead
1059
- // to duplicates in output)
1060
- <span class="missing-if-branch" title="if path not taken" >I</span>if(recordingInProgress) {
1061
- <span class="cstat-no" title="statement not covered" > throw new Error('Nock recording already in progress');</span>
1062
- }
1063
- &nbsp;
1064
- recordingInProgress = true;
1065
- &nbsp;
1066
- // Originaly the parameters was a dont_print boolean flag.
1067
- // To keep the existing code compatible we take that case into account.
1068
- var optionsIsObject = typeof rec_options === 'object';
1069
- var dont_print = (typeof rec_options === 'boolean' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >rec_options)</span> ||
1070
- (optionsIsObject &amp;&amp; rec_options.dont_print);
1071
- var output_objects = optionsIsObject &amp;&amp; rec_options.output_objects;
1072
- var enable_reqheaders_recording = optionsIsObject &amp;&amp; rec_options.enable_reqheaders_recording;
1073
- var logging = (optionsIsObject &amp;&amp; rec_options.logging) || console.log;
1074
- var use_separator = true;
1075
- <span class="missing-if-branch" title="if path not taken" >I</span>if (optionsIsObject &amp;&amp; _.has(rec_options, 'use_separator')) {
1076
- <span class="cstat-no" title="statement not covered" > use_separator = rec_options.use_separator;</span>
1077
- }
1078
- &nbsp;
1079
- debug(thisRecordingId, 'restoring overridden requests before new overrides');
1080
- // To preserve backward compatibility (starting recording wasn't throwing if nock was already active)
1081
- // we restore any requests that may have been overridden by other parts of nock (e.g. intercept)
1082
- // NOTE: This is hacky as hell but it keeps the backward compatibility *and* allows correct
1083
- // behavior in the face of other modules also overriding ClientRequest.
1084
- common.restoreOverriddenRequests();
1085
- // We restore ClientRequest as it messes with recording of modules that also override ClientRequest (e.g. xhr2)
1086
- intercept.restoreOverriddenClientRequest();
1087
- &nbsp;
1088
- // We override the requests so that we can save information on them before executing.
1089
- common.overrideRequests(function(proto, overriddenRequest, options, callback) {
1090
- &nbsp;
1091
- var bodyChunks = [];
1092
- &nbsp;
1093
- if (typeof options == 'string') {
1094
- var url = URL.parse(options);
1095
- options = {
1096
- hostname: url.hostname,
1097
- method: 'GET',
1098
- port: url.port,
1099
- path: url.path
1100
- };
1101
- }
1102
- &nbsp;
1103
- // Node 0.11 https.request calls http.request -- don't want to record things
1104
- // twice.
1105
- <span class="missing-if-branch" title="if path not taken" >I</span>if (options._recording) {
1106
- <span class="cstat-no" title="statement not covered" > return overriddenRequest(options, callback);</span>
1107
- }
1108
- options._recording = true;
1109
- &nbsp;
1110
- var req = overriddenRequest(options, function(res) {
1111
- &nbsp;
1112
- debug(thisRecordingId, 'intercepting', proto, 'request to record');
1113
- &nbsp;
1114
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof options === 'string') {
1115
- <span class="cstat-no" title="statement not covered" > options = parse(options);</span>
1116
- }
1117
- &nbsp;
1118
- // We put our 'end' listener to the front of the listener array.
1119
- res.once('end', function() {
1120
- debug(thisRecordingId, proto, 'intercepted request ended');
1121
- &nbsp;
1122
- var out;
1123
- <span class="missing-if-branch" title="else path not taken" >E</span>if(output_objects) {
1124
- out = generateRequestAndResponseObject(req, bodyChunks, options, res, dataChunks);
1125
- <span class="missing-if-branch" title="else path not taken" >E</span>if(out.reqheaders) {
1126
- // We never record user-agent headers as they are worse than useless -
1127
- // they actually make testing more difficult without providing any benefit (see README)
1128
- common.deleteHeadersField(out.reqheaders, 'user-agent');
1129
- &nbsp;
1130
- // Remove request headers completely unless it was explicitly enabled by the user (see README)
1131
- <span class="missing-if-branch" title="else path not taken" >E</span>if(!enable_reqheaders_recording) {
1132
- delete out.reqheaders;
1133
- }
1134
- }
1135
- } else {
1136
- <span class="cstat-no" title="statement not covered" > out = generateRequestAndResponse(req, bodyChunks, options, res, dataChunks);</span>
1137
- }
1138
- &nbsp;
1139
- debug('out:', out);
1140
- &nbsp;
1141
- // Check that the request was made during the current recording.
1142
- // If it hasn't then skip it. There is no other simple way to handle
1143
- // this as it depends on the timing of requests and responses. Throwing
1144
- // will make some recordings/unit tests faily randomly depending on how
1145
- // fast/slow the response arrived.
1146
- // If you are seeing this error then you need to make sure that all
1147
- // the requests made during a single recording session finish before
1148
- // ending the same recording session.
1149
- if(thisRecordingId !== currentRecordingId) {
1150
- debug('skipping recording of an out-of-order request', out);
1151
- return;
1152
- }
1153
- &nbsp;
1154
- outputs.push(out);
1155
- &nbsp;
1156
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!dont_print) {
1157
- <span class="cstat-no" title="statement not covered" > if (use_separator) {</span>
1158
- <span class="cstat-no" title="statement not covered" > logging(SEPARATOR + out + SEPARATOR);</span>
1159
- } else {
1160
- <span class="cstat-no" title="statement not covered" > logging(out);</span>
1161
- }
1162
- }
1163
- });
1164
- &nbsp;
1165
- var dataChunks = [];
1166
- var encoding;
1167
- &nbsp;
1168
- // We need to be aware of changes to the stream's encoding so that we
1169
- // don't accidentally mangle the data.
1170
- var setEncoding = res.setEncoding;
1171
- res.setEncoding = <span class="fstat-no" title="function not covered" >function (newEncoding) {</span>
1172
- <span class="cstat-no" title="statement not covered" > encoding = newEncoding;</span>
1173
- <span class="cstat-no" title="statement not covered" > return setEncoding.apply(this, arguments);</span>
1174
- };
1175
- &nbsp;
1176
- // Give the actual client a chance to setup its listeners.
1177
- // We will use the listener information to figure out
1178
- // how we need to feed the intercepted data back to the client.
1179
- if (callback) {
1180
- callback(res, options, callback);
1181
- }
1182
- &nbsp;
1183
- // Handle clients that listen to 'readable' by intercepting them
1184
- // and feeding them the data manually.
1185
- var readableListeners = res.listeners('readable');
1186
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!_.isEmpty(readableListeners)) {
1187
- &nbsp;
1188
- <span class="cstat-no" title="statement not covered" > debug('handle readable listeners');</span>
1189
- &nbsp;
1190
- // We will replace the client's listeners with our own and manually
1191
- // invoke them.
1192
- <span class="cstat-no" title="statement not covered" > _.each(readableListeners, <span class="fstat-no" title="function not covered" >function(listener) {</span></span>
1193
- <span class="cstat-no" title="statement not covered" > res.removeListener('readable', listener);</span>
1194
- });
1195
- &nbsp;
1196
- // Repleace the actual Stream.Readable prototype 'read' function
1197
- // so that we can control what the client listener will be reading.
1198
- <span class="cstat-no" title="statement not covered" > var prototypeRead = Stream.Readable.prototype.read;</span>
1199
- <span class="cstat-no" title="statement not covered" > var currentReadIndex = 0;</span>
1200
- <span class="cstat-no" title="statement not covered" > res.read = <span class="fstat-no" title="function not covered" >function() {</span></span>
1201
- &nbsp;
1202
- <span class="cstat-no" title="statement not covered" > debug(thisRecordingId, 'client reading data on', proto, dataChunks.length);</span>
1203
- &nbsp;
1204
- // Feed the data to the client through from our collected data chunks.
1205
- <span class="cstat-no" title="statement not covered" > if (currentReadIndex &lt; dataChunks.length) {</span>
1206
- <span class="cstat-no" title="statement not covered" > debug('chunk', chunk, 'read');</span>
1207
- <span class="cstat-no" title="statement not covered" > var chunk = dataChunks[currentReadIndex];</span>
1208
- <span class="cstat-no" title="statement not covered" > ++currentReadIndex;</span>
1209
- <span class="cstat-no" title="statement not covered" > return chunk;</span>
1210
- } else {
1211
- <span class="cstat-no" title="statement not covered" > debug('no more chunks to read');</span>
1212
- <span class="cstat-no" title="statement not covered" > return null;</span>
1213
- }
1214
- &nbsp;
1215
- };
1216
- &nbsp;
1217
- // Put our own listener instead of the removed client listener.
1218
- <span class="cstat-no" title="statement not covered" > var onReadable = <span class="fstat-no" title="function not covered" >function(data) {</span></span>
1219
- <span class="cstat-no" title="statement not covered" > debug(thisRecordingId, 'new readable data on', proto);</span>
1220
- <span class="cstat-no" title="statement not covered" > var chunk;</span>
1221
- // Use the prototypeRead function to actually read the data.
1222
- <span class="cstat-no" title="statement not covered" > while (null !== (chunk = prototypeRead.call(res))) {</span>
1223
- <span class="cstat-no" title="statement not covered" > debug('read', chunk);</span>
1224
- <span class="cstat-no" title="statement not covered" > dataChunks.push(chunk);</span>
1225
- }
1226
- // Manually invoke the user listeners emulating 'readable' event.
1227
- <span class="cstat-no" title="statement not covered" > _.each(readableListeners, <span class="fstat-no" title="function not covered" >function(listener) {</span></span>
1228
- <span class="cstat-no" title="statement not covered" > listener();</span>
1229
- });
1230
- };
1231
- &nbsp;
1232
- <span class="cstat-no" title="statement not covered" > res.on('readable', onReadable);</span>
1233
- &nbsp;
1234
- } else {
1235
- &nbsp;
1236
- // In all other cases we (for now at least) fall back on intercepting
1237
- // 'data' events.
1238
- debug('fall back on our original implementation');
1239
- &nbsp;
1240
- // Since we gave client the chance to setup its listeners
1241
- // before us, we need to remove them and setup our own.
1242
- var dataListeners = res.listeners('data');
1243
- _.each(dataListeners, <span class="fstat-no" title="function not covered" >function(listener) {</span>
1244
- <span class="cstat-no" title="statement not covered" > res.removeListener('data', listener);</span>
1245
- });
1246
- &nbsp;
1247
- var onData = function(data) {
1248
- debug(thisRecordingId, 'new data chunk on', proto);
1249
- <span class="missing-if-branch" title="if path not taken" >I</span>if (encoding) {
1250
- <span class="cstat-no" title="statement not covered" > data = new Buffer(data, encoding);</span>
1251
- }
1252
- dataChunks.push(data);
1253
- // Manually invoke the user listeners emulating 'data' event.
1254
- _.each(dataListeners, <span class="fstat-no" title="function not covered" >function(listener) {</span>
1255
- <span class="cstat-no" title="statement not covered" > listener(data);</span>
1256
- });
1257
- };
1258
- res.on('data', onData);
1259
- }
1260
- &nbsp;
1261
- debug('finished setting up intercepting');
1262
- &nbsp;
1263
- <span class="missing-if-branch" title="if path not taken" >I</span>if (proto === 'https') {
1264
- <span class="cstat-no" title="statement not covered" > options._https_ = true;</span>
1265
- }
1266
- &nbsp;
1267
- });
1268
- &nbsp;
1269
- var oldWrite = req.write;
1270
- req.write = <span class="fstat-no" title="function not covered" >function(data, encoding) {</span>
1271
- <span class="cstat-no" title="statement not covered" > if ('undefined' !== typeof(data)) {</span>
1272
- <span class="cstat-no" title="statement not covered" > if (data) {</span>
1273
- <span class="cstat-no" title="statement not covered" > debug(thisRecordingId, 'new', proto, 'body chunk');</span>
1274
- <span class="cstat-no" title="statement not covered" > if (! Buffer.isBuffer(data)) {</span>
1275
- <span class="cstat-no" title="statement not covered" > data = new Buffer(data, encoding);</span>
1276
- }
1277
- <span class="cstat-no" title="statement not covered" > bodyChunks.push(data);</span>
1278
- }
1279
- <span class="cstat-no" title="statement not covered" > oldWrite.call(req, data);</span>
1280
- }
1281
- };
1282
- &nbsp;
1283
- return req;
1284
- });
1285
- }
1286
- &nbsp;
1287
- // Restores *all* the overridden http/https modules' properties.
1288
- function restore() {
1289
- debug(currentRecordingId, 'restoring all the overridden http/https properties');
1290
- &nbsp;
1291
- common.restoreOverriddenRequests();
1292
- intercept.restoreOverriddenClientRequest();
1293
- recordingInProgress = false;
1294
- }
1295
- &nbsp;
1296
- function clear() {
1297
- outputs = [];
1298
- }
1299
- &nbsp;
1300
- exports.record = record;
1301
- exports.outputs = function() {
1302
- return outputs;
1303
- };
1304
- exports.restore = restore;
1305
- exports.clear = clear;
1306
- &nbsp;</pre></td></tr>
1307
- </table></pre>
1308
-
1309
- </div>
1310
- <div class="footer">
1311
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Nov 17 2015 09:42:41 GMT+0000 (GMT)</div>
1312
- </div>
1313
- <script src="../../prettify.js"></script>
1314
- <script>
1315
- window.onload = function () {
1316
- if (typeof prettyPrint === 'function') {
1317
- prettyPrint();
1318
- }
1319
- };
1320
- </script>
1321
- <script src="../../sorter.js"></script>
1322
- </body>
1323
- </html>