0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-21 21:19:50 +01:00
nodejs/test/parallel/test-http-outgoing-destroyed.js
Robert Nagy 5633c62219
http: don't emit error after destroy
PR-URL: https://github.com/nodejs/node/pull/55457
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
2024-10-28 12:57:58 +00:00

78 lines
1.8 KiB
JavaScript

'use strict';
const common = require('../common');
const http = require('http');
const assert = require('assert');
{
const server = http.createServer(common.mustCall((req, res) => {
assert.strictEqual(res.closed, false);
req.pipe(res);
res.on('error', common.mustNotCall());
res.on('close', common.mustCall(() => {
assert.strictEqual(res.closed, true);
res.end('asd');
process.nextTick(() => {
server.close();
});
}));
})).listen(0, () => {
http
.request({
port: server.address().port,
method: 'PUT'
})
.on('response', (res) => {
res.destroy();
})
.write('asd');
});
}
{
const server = http.createServer(common.mustCall((req, res) => {
assert.strictEqual(res.closed, false);
req.pipe(res);
res.on('error', common.mustNotCall());
res.on('close', common.mustCall(() => {
assert.strictEqual(res.closed, true);
process.nextTick(() => {
server.close();
});
}));
const err = new Error('Destroy test');
res.destroy(err);
assert.strictEqual(res.errored, err);
})).listen(0, () => {
http
.request({
port: server.address().port,
method: 'PUT'
})
.on('error', common.mustCall())
.write('asd');
});
}
{
const server = http.createServer(common.mustCall((req, res) => {
assert.strictEqual(res.closed, false);
res.end();
res.destroy();
// Make sure not to emit 'error' after .destroy().
res.end('asd');
assert.strictEqual(res.errored, undefined);
})).listen(0, () => {
http
.request({
port: server.address().port,
method: 'GET'
})
.on('response', common.mustCall((res) => {
res.resume().on('end', common.mustCall(() => {
server.close();
}));
}))
.end();
});
}