You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.2 KiB
44 lines
1.2 KiB
'use strict'
|
|
|
|
const test = require('tap').test
|
|
const FormData = require('form-data')
|
|
const Fastify = require('fastify')
|
|
const multipart = require('..')
|
|
const h2url = require('h2url')
|
|
const path = require('path')
|
|
const fs = require('fs')
|
|
const sendToWormhole = require('stream-wormhole')
|
|
|
|
const filePath = path.join(__dirname, '../README.md')
|
|
|
|
test('should respond when all files are processed', function (t) {
|
|
const fastify = Fastify({ http2: true })
|
|
t.teardown(fastify.close.bind(fastify))
|
|
|
|
fastify.register(multipart)
|
|
|
|
fastify.post('/', async function (req, reply) {
|
|
const parts = req.files()
|
|
for await (const part of parts) {
|
|
t.ok(part.file)
|
|
await sendToWormhole(part.file)
|
|
}
|
|
reply.code(200).send()
|
|
})
|
|
|
|
fastify.listen(0, async function () {
|
|
const url = `http://localhost:${fastify.server.address().port}`
|
|
const form = new FormData()
|
|
|
|
form.append('upload', fs.createReadStream(filePath))
|
|
form.append('upload2', fs.createReadStream(filePath))
|
|
form.append('hello', 'world')
|
|
form.append('willbe', 'dropped')
|
|
|
|
const res = await h2url.concat({ url, method: 'POST', headers: form.getHeaders(), body: form })
|
|
|
|
t.equal(res.headers[':status'], 200)
|
|
t.end()
|
|
})
|
|
})
|