package-rebuilds/pkgs/node-undici/node-undici-5.28.4+dfsg1+~cs23.12.11/test/headers-as-array.js
Fabian Grünbichler afee63929c add node-undici for libgit2 1.8.1
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2024-09-10 11:23:24 +02:00

132 lines
3.3 KiB
JavaScript

'use strict'
const { test } = require('tap')
const { Client, errors } = require('..')
const { createServer } = require('http')
test('handle headers as array', (t) => {
t.plan(1)
const headers = ['a', '1', 'b', '2', 'c', '3']
const server = createServer((req, res) => {
t.match(req.headers, { a: '1', b: '2', c: '3' })
res.end()
})
t.teardown(server.close.bind(server))
server.listen(0, () => {
const client = new Client(`http://localhost:${server.address().port}`)
t.teardown(client.destroy.bind(client))
client.request({
path: '/',
method: 'GET',
headers
}, () => {})
})
})
test('handle multi-valued headers as array', (t) => {
t.plan(1)
const headers = ['a', '1', 'b', '2', 'c', '3', 'd', '4', 'd', '5']
const server = createServer((req, res) => {
t.match(req.headers, { a: '1', b: '2', c: '3', d: '4, 5' })
res.end()
})
t.teardown(server.close.bind(server))
server.listen(0, () => {
const client = new Client(`http://localhost:${server.address().port}`)
t.teardown(client.destroy.bind(client))
client.request({
path: '/',
method: 'GET',
headers
}, () => {})
})
})
test('handle headers with array', (t) => {
t.plan(1)
const headers = { a: '1', b: '2', c: '3', d: ['4'] }
const server = createServer((req, res) => {
t.match(req.headers, { a: '1', b: '2', c: '3', d: '4' })
res.end()
})
t.teardown(server.close.bind(server))
server.listen(0, () => {
const client = new Client(`http://localhost:${server.address().port}`)
t.teardown(client.destroy.bind(client))
client.request({
path: '/',
method: 'GET',
headers
}, () => {})
})
})
test('handle multi-valued headers', (t) => {
t.plan(1)
const headers = { a: '1', b: '2', c: '3', d: ['4', '5'] }
const server = createServer((req, res) => {
t.match(req.headers, { a: '1', b: '2', c: '3', d: '4, 5' })
res.end()
})
t.teardown(server.close.bind(server))
server.listen(0, () => {
const client = new Client(`http://localhost:${server.address().port}`)
t.teardown(client.destroy.bind(client))
client.request({
path: '/',
method: 'GET',
headers
}, () => {})
})
})
test('fail if headers array is odd', (t) => {
t.plan(2)
const headers = ['a', '1', 'b', '2', 'c', '3', 'd']
const server = createServer((req, res) => { res.end() })
t.teardown(server.close.bind(server))
server.listen(0, () => {
const client = new Client(`http://localhost:${server.address().port}`)
t.teardown(client.destroy.bind(client))
client.request({
path: '/',
method: 'GET',
headers
}, (err) => {
t.type(err, errors.InvalidArgumentError)
t.equal(err.message, 'headers array must be even')
})
})
})
test('fail if headers is not an object or an array', (t) => {
t.plan(2)
const headers = 'not an object or an array'
const server = createServer((req, res) => { res.end() })
t.teardown(server.close.bind(server))
server.listen(0, () => {
const client = new Client(`http://localhost:${server.address().port}`)
t.teardown(client.destroy.bind(client))
client.request({
path: '/',
method: 'GET',
headers
}, (err) => {
t.ok(err instanceof errors.InvalidArgumentError)
t.equal(err.message, 'headers must be an object or an array')
})
})
})