-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
parsers.js
81 lines (73 loc) · 1.93 KB
/
parsers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
'use strict';
const assert = require('assert');
const request = require('../support/client');
const setup = require('../support/setup');
const base = setup.uri;
const doesntWorkInHttp2 = !process.env.HTTP2_TEST;
describe('req.parse(fn)', () => {
it('should take precedence over default parsers', done => {
request
.get(`${base}/manny`)
.parse(request.parse['application/json'])
.end((err, res) => {
assert(res.ok);
assert.equal('{"name":"manny"}', res.text);
assert.equal('manny', res.body.name);
done();
});
});
it('should be the only parser', () =>
request
.get(`${base}/image`)
.buffer(false)
.parse((res, fn) => {
res.on('data', () => {});
})
.then(res => {
assert(res.ok);
assert.strictEqual(res.text, undefined);
res.body.should.eql({});
}));
it('should emit error if parser throws', done => {
request
.get(`${base}/manny`)
.parse(() => {
throw new Error('I am broken');
})
.on('error', err => {
err.message.should.equal('I am broken');
done();
})
.end();
});
it('should emit error if parser returns an error', done => {
request
.get(`${base}/manny`)
.parse((res, fn) => {
fn(new Error('I am broken'));
})
.on('error', err => {
err.message.should.equal('I am broken');
done();
})
.end();
});
if (doesntWorkInHttp2)
it('should not emit error on chunked json', done => {
request.get(`${base}/chunked-json`).end(err => {
assert.ifError(err);
done();
});
});
if (doesntWorkInHttp2)
it('should not emit error on aborted chunked json', done => {
const req = request.get(`${base}/chunked-json`);
req.end(err => {
assert.ifError(err);
done();
});
setTimeout(() => {
req.abort();
}, 50);
});
});