Skip to content

Commit c5a5099

Browse files
committed
add a test case for binary files
1 parent 7bdf917 commit c5a5099

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

test.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,6 @@ describe('Multipart', () => {
251251
it('should parse multipart body', async () => {
252252
const server = createServer(async (req: ReqWithBody, res) => {
253253
await multipart()(req, res, (err) => err && console.log(err))
254-
255-
res.setHeader('Content-Type', 'multipart/form-data')
256254
res.end(JSON.stringify(req.body))
257255
})
258256

@@ -297,8 +295,6 @@ describe('Multipart', () => {
297295
const server = createServer(async (req: ReqWithBody, res) => {
298296
await multipart()(req, res, (err) => err && res.end(err))
299297

300-
res.setHeader('Content-Type', 'multipart/form-data; boundary=some-boundary')
301-
302298
res.end(JSON.stringify(req.body))
303299
})
304300

@@ -320,8 +316,6 @@ describe('Multipart', () => {
320316
const server = createServer(async (req: ReqWithBody, res) => {
321317
await multipart()(req, res, (err) => err && console.log(err))
322318

323-
res.setHeader('Content-Type', 'multipart/form-data; boundary=some-boundary')
324-
325319
res.end(JSON.stringify(req.body))
326320
})
327321

@@ -343,8 +337,6 @@ describe('Multipart', () => {
343337
const server = createServer(async (req: ReqWithBody, res) => {
344338
await multipart()(req, res, (err) => err && console.log(err))
345339

346-
res.setHeader('Content-Type', 'multipart/form-data; boundary=some-boundary')
347-
348340
res.end('GET is ignored')
349341
})
350342

@@ -364,8 +356,6 @@ describe('Multipart', () => {
364356
const server = createServer(async (req: ReqWithBody<{ file: [File] }>, res) => {
365357
await multipart()(req, res, (err) => err && console.log(err))
366358

367-
res.setHeader('Content-Type', 'multipart/form-data')
368-
369359
const formBuf = new Uint8Array(await file.arrayBuffer())
370360
const buf = new Uint8Array(await req.body!.file[0].arrayBuffer())
371361

@@ -395,8 +385,6 @@ describe('Multipart', () => {
395385
const server = createServer(async (req: ReqWithBody<{ file1: [File]; file2: [File] }>, res) => {
396386
await multipart()(req, res, (err) => err && console.log(err))
397387

398-
res.setHeader('Content-Type', 'multipart/form-data')
399-
400388
const files = Object.values(req.body!)
401389

402390
for (const file of files) {
@@ -413,6 +401,30 @@ describe('Multipart', () => {
413401
method: 'POST'
414402
}).expect(200)
415403
})
404+
it('should support binary files', async () => {
405+
const fd = new FormData()
406+
const file = new File([new Uint8Array([1, 2, 3])], 'blob.bin', { type: 'application/octet-stream' })
407+
fd.set('file', file)
408+
409+
const server = createServer(async (req: ReqWithBody<{ file: [File] }>, res) => {
410+
await multipart()(req, res, (err) => err && console.log(err))
411+
412+
413+
const formBuf = new Uint8Array(await file.arrayBuffer())
414+
const buf = new Uint8Array(await req.body!.file[0].arrayBuffer())
415+
416+
assert.equal(Buffer.compare(buf, formBuf), 0)
417+
assert.equal(req.body?.file[0].type, 'application/octet-stream')
418+
419+
res.end(req.body?.file[0].name)
420+
})
421+
422+
await makeFetch(server)('/', {
423+
// probaly better to use form-data package
424+
body: fd,
425+
method: 'POST'
426+
}).expect(200, 'blob.bin')
427+
})
416428
})
417429

418430
describe('Limits', () => {

0 commit comments

Comments
 (0)