mirror of
https://git.proxmox.com/git/package-rebuilds
synced 2025-08-22 06:36:36 +00:00
72 lines
1.7 KiB
JavaScript
72 lines
1.7 KiB
JavaScript
'use strict'
|
|
|
|
const { test, skip } = require('tap')
|
|
const { nodeMajor, nodeMinor } = require('../lib/core/util')
|
|
const { createServer } = require('http')
|
|
const { once } = require('events')
|
|
const { createReadStream } = require('fs')
|
|
const { File, FormData, request } = require('..')
|
|
|
|
if (nodeMajor < 16 || (nodeMajor === 16 && nodeMinor < 8)) {
|
|
skip('FormData is not available in node < v16.8.0')
|
|
process.exit()
|
|
}
|
|
|
|
test('undici.request with a FormData body should set content-length header', async (t) => {
|
|
const server = createServer((req, res) => {
|
|
t.ok(req.headers['content-length'])
|
|
res.end()
|
|
}).listen(0)
|
|
|
|
t.teardown(server.close.bind(server))
|
|
await once(server, 'listening')
|
|
|
|
const body = new FormData()
|
|
body.set('file', new File(['abc'], 'abc.txt'))
|
|
|
|
await request(`http://localhost:${server.address().port}`, {
|
|
method: 'POST',
|
|
body
|
|
})
|
|
})
|
|
|
|
test('undici.request with a FormData stream value should set transfer-encoding header', async (t) => {
|
|
const server = createServer((req, res) => {
|
|
t.equal(req.headers['transfer-encoding'], 'chunked')
|
|
res.end()
|
|
}).listen(0)
|
|
|
|
t.teardown(server.close.bind(server))
|
|
await once(server, 'listening')
|
|
|
|
class BlobFromStream {
|
|
#stream
|
|
#type
|
|
constructor (stream, type) {
|
|
this.#stream = stream
|
|
this.#type = type
|
|
}
|
|
|
|
stream () {
|
|
return this.#stream
|
|
}
|
|
|
|
get type () {
|
|
return this.#type
|
|
}
|
|
|
|
get [Symbol.toStringTag] () {
|
|
return 'Blob'
|
|
}
|
|
}
|
|
|
|
const body = new FormData()
|
|
const fileReadable = createReadStream(__filename)
|
|
body.set('file', new BlobFromStream(fileReadable, '.js'), 'streamfile')
|
|
|
|
await request(`http://localhost:${server.address().port}`, {
|
|
method: 'POST',
|
|
body
|
|
})
|
|
})
|