-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
contentTypeParser.test.js
112 lines (102 loc) · 2.45 KB
/
contentTypeParser.test.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
'use strict'
const t = require('tap')
const proxyquire = require('proxyquire')
const test = t.test
const { Readable } = require('stream')
const { kTestInternals } = require('../../lib/symbols')
const Request = require('../../lib/request')
const Reply = require('../../lib/reply')
test('rawBody function', t => {
t.plan(2)
const internals = require('../../lib/contentTypeParser')[kTestInternals]
const body = Buffer.from('你好 世界')
const parser = {
asString: true,
asBuffer: false,
fn (req, bodyInString, done) {
t.equal(bodyInString, body.toString())
t.equal(typeof done, 'function')
return {
then (cb) {
cb()
}
}
}
}
const res = {}
res.end = () => { }
res.writeHead = () => { }
res.log = { error: () => { }, info: () => { } }
const context = {
Reply,
Request,
preHandler: [],
onSend: [],
_parserOptions: {
limit: 1024
}
}
const rs = new Readable()
rs._read = function () { }
rs.headers = { 'content-length': body.length }
const request = new Request('id', 'params', rs, 'query', 'log', context)
const reply = new Reply(res, request)
const done = () => { }
internals.rawBody(
request,
reply,
reply.context._parserOptions,
parser,
done
)
rs.emit('data', body.toString())
rs.emit('end')
})
test('Should support Webpack and faux modules', t => {
t.plan(2)
const internals = proxyquire('../../lib/contentTypeParser', {
'tiny-lru': { default: () => { } }
})[kTestInternals]
const body = Buffer.from('你好 世界')
const parser = {
asString: true,
asBuffer: false,
fn (req, bodyInString, done) {
t.equal(bodyInString, body.toString())
t.equal(typeof done, 'function')
return {
then (cb) {
cb()
}
}
}
}
const res = {}
res.end = () => { }
res.writeHead = () => { }
res.log = { error: () => { }, info: () => { } }
const context = {
Reply,
Request,
preHandler: [],
onSend: [],
_parserOptions: {
limit: 1024
}
}
const rs = new Readable()
rs._read = function () { }
rs.headers = { 'content-length': body.length }
const request = new Request('id', 'params', rs, 'query', 'log', context)
const reply = new Reply(res, request)
const done = () => { }
internals.rawBody(
request,
reply,
reply.context._parserOptions,
parser,
done
)
rs.emit('data', body.toString())
rs.emit('end')
})