mirror of
https://github.com/pinojs/pino.git
synced 2025-12-08 20:36:13 +00:00
* Convert tests to node:test * broken-pipe.test.js * browser-is-level-enabled.test.js * complex-objects.test.js * crlf.test.js * custom-levels.test.js * error.test.js * error-key.test.js * escaping.test.js * exit.test.js * formatters.test.js * hooks.test.js * http.test.js * is-level-enabled.test.js * levels.test.js * metadata.test.js * mixin.test.js * mixin-merge-strategy.test.js * multistream.test.js * redact.test.js * serializers.test.js * stdout-protection.test.js * syncfalse.test.js * timestamp.test.js * timestamp-nano.test.js * transport-stream.test.js * esm/* * internals/version.test.js * transport/big.test.js * transport/bundlers-support.test.js * transport/caller.test.js * transport/core.test.js * transport/core.transpiled.test.js * transport/module-link.test.js * transport/pipeline.test.js * transport/repl.test.js * transport/sync-false.test.js * transport/sync-true.test.js * transport/targets.test.js * transport/uses-pino-config.test.js * clean helper * finalize * restore transport/core.test.js * address feedback * skip broken-pipe in CITGM * remove unused package * remove duplicate test file
215 lines
5.2 KiB
JavaScript
215 lines
5.2 KiB
JavaScript
'use strict'
|
|
|
|
const test = require('node:test')
|
|
const http = require('node:http')
|
|
const os = require('node:os')
|
|
const tspl = require('@matteo.collina/tspl')
|
|
|
|
const { sink, once } = require('./helper')
|
|
const pino = require('../')
|
|
|
|
const { pid } = process
|
|
const hostname = os.hostname()
|
|
|
|
test('http request support', async (t) => {
|
|
const plan = tspl(t, { plan: 3 })
|
|
let originalReq
|
|
const instance = pino(sink((chunk, enc) => {
|
|
plan.ok(new Date(chunk.time) <= new Date(), 'time is greater than Date.now()')
|
|
delete chunk.time
|
|
plan.deepEqual(chunk, {
|
|
pid,
|
|
hostname,
|
|
level: 30,
|
|
msg: 'my request',
|
|
req: {
|
|
method: originalReq.method,
|
|
url: originalReq.url,
|
|
headers: originalReq.headers,
|
|
remoteAddress: originalReq.socket.remoteAddress,
|
|
remotePort: originalReq.socket.remotePort
|
|
}
|
|
})
|
|
}))
|
|
|
|
const server = http.createServer((req, res) => {
|
|
originalReq = req
|
|
instance.info(req, 'my request')
|
|
res.end('hello')
|
|
})
|
|
server.unref()
|
|
server.listen()
|
|
const err = await once(server, 'listening')
|
|
plan.equal(err, undefined)
|
|
const res = await once(http.get('http://localhost:' + server.address().port), 'response')
|
|
res.resume()
|
|
server.close()
|
|
|
|
await plan
|
|
})
|
|
|
|
test('http request support via serializer', async (t) => {
|
|
const plan = tspl(t, { plan: 3 })
|
|
let originalReq
|
|
const instance = pino({
|
|
serializers: {
|
|
req: pino.stdSerializers.req
|
|
}
|
|
}, sink((chunk, enc) => {
|
|
plan.ok(new Date(chunk.time) <= new Date(), 'time is greater than Date.now()')
|
|
delete chunk.time
|
|
plan.deepEqual(chunk, {
|
|
pid,
|
|
hostname,
|
|
level: 30,
|
|
msg: 'my request',
|
|
req: {
|
|
method: originalReq.method,
|
|
url: originalReq.url,
|
|
headers: originalReq.headers,
|
|
remoteAddress: originalReq.socket.remoteAddress,
|
|
remotePort: originalReq.socket.remotePort
|
|
}
|
|
})
|
|
}))
|
|
|
|
const server = http.createServer(function (req, res) {
|
|
originalReq = req
|
|
instance.info({ req }, 'my request')
|
|
res.end('hello')
|
|
})
|
|
server.unref()
|
|
server.listen()
|
|
const err = await once(server, 'listening')
|
|
plan.equal(err, undefined)
|
|
|
|
const res = await once(http.get('http://localhost:' + server.address().port), 'response')
|
|
res.resume()
|
|
server.close()
|
|
|
|
await plan
|
|
})
|
|
|
|
test('http response support', async (t) => {
|
|
const plan = tspl(t, { plan: 3 })
|
|
let originalRes
|
|
const instance = pino(sink((chunk, enc) => {
|
|
plan.ok(new Date(chunk.time) <= new Date(), 'time is greater than Date.now()')
|
|
delete chunk.time
|
|
plan.deepEqual(chunk, {
|
|
pid,
|
|
hostname,
|
|
level: 30,
|
|
msg: 'my response',
|
|
res: {
|
|
statusCode: originalRes.statusCode,
|
|
headers: originalRes.getHeaders()
|
|
}
|
|
})
|
|
}))
|
|
|
|
const server = http.createServer(function (req, res) {
|
|
originalRes = res
|
|
res.end('hello')
|
|
instance.info(res, 'my response')
|
|
})
|
|
server.unref()
|
|
server.listen()
|
|
const err = await once(server, 'listening')
|
|
|
|
plan.equal(err, undefined)
|
|
|
|
const res = await once(http.get('http://localhost:' + server.address().port), 'response')
|
|
res.resume()
|
|
server.close()
|
|
|
|
await plan
|
|
})
|
|
|
|
test('http response support via a serializer', async (t) => {
|
|
const plan = tspl(t, { plan: 3 })
|
|
const instance = pino({
|
|
serializers: {
|
|
res: pino.stdSerializers.res
|
|
}
|
|
}, sink((chunk, enc) => {
|
|
plan.ok(new Date(chunk.time) <= new Date(), 'time is greater than Date.now()')
|
|
delete chunk.time
|
|
plan.deepEqual(chunk, {
|
|
pid,
|
|
hostname,
|
|
level: 30,
|
|
msg: 'my response',
|
|
res: {
|
|
statusCode: 200,
|
|
headers: {
|
|
'x-single': 'y',
|
|
'x-multi': [1, 2]
|
|
}
|
|
}
|
|
})
|
|
}))
|
|
|
|
const server = http.createServer(function (req, res) {
|
|
res.setHeader('x-single', 'y')
|
|
res.setHeader('x-multi', [1, 2])
|
|
res.end('hello')
|
|
instance.info({ res }, 'my response')
|
|
})
|
|
|
|
server.unref()
|
|
server.listen()
|
|
const err = await once(server, 'listening')
|
|
plan.equal(err, undefined)
|
|
|
|
const res = await once(http.get('http://localhost:' + server.address().port), 'response')
|
|
res.resume()
|
|
server.close()
|
|
|
|
await plan
|
|
})
|
|
|
|
test('http request support via serializer in a child', async (t) => {
|
|
const plan = tspl(t, { plan: 3 })
|
|
let originalReq
|
|
const instance = pino({
|
|
serializers: {
|
|
req: pino.stdSerializers.req
|
|
}
|
|
}, sink((chunk, enc) => {
|
|
plan.ok(new Date(chunk.time) <= new Date(), 'time is greater than Date.now()')
|
|
delete chunk.time
|
|
plan.deepEqual(chunk, {
|
|
pid,
|
|
hostname,
|
|
level: 30,
|
|
msg: 'my request',
|
|
req: {
|
|
method: originalReq.method,
|
|
url: originalReq.url,
|
|
headers: originalReq.headers,
|
|
remoteAddress: originalReq.socket.remoteAddress,
|
|
remotePort: originalReq.socket.remotePort
|
|
}
|
|
})
|
|
}))
|
|
|
|
const server = http.createServer(function (req, res) {
|
|
originalReq = req
|
|
const child = instance.child({ req })
|
|
child.info('my request')
|
|
res.end('hello')
|
|
})
|
|
|
|
server.unref()
|
|
server.listen()
|
|
const err = await once(server, 'listening')
|
|
plan.equal(err, undefined)
|
|
|
|
const res = await once(http.get('http://localhost:' + server.address().port), 'response')
|
|
res.resume()
|
|
server.close()
|
|
|
|
await plan
|
|
})
|