mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
fix: test-set-incoming-message-header.js
This commit is contained in:
@@ -61,6 +61,7 @@ const kInternalSocketData = Symbol.for("::bunternal::");
|
||||
const serverSymbol = Symbol.for("::bunternal::");
|
||||
const kPendingCallbacks = Symbol("pendingCallbacks");
|
||||
const kRequest = Symbol("request");
|
||||
const kTrailers = Symbol("kTrailers");
|
||||
|
||||
const kEmptyObject = Object.freeze(Object.create(null));
|
||||
|
||||
@@ -1250,6 +1251,7 @@ function IncomingMessage(req, defaultIncomingOpts) {
|
||||
this._dumped = false;
|
||||
this.complete = false;
|
||||
this._closed = false;
|
||||
this[kTrailers] = null;
|
||||
|
||||
// (url, method, headers, rawHeaders, handle, hasBody)
|
||||
if (req === kHandle) {
|
||||
@@ -1513,10 +1515,34 @@ const IncomingMessagePrototype = {
|
||||
// noop
|
||||
},
|
||||
get trailers() {
|
||||
return kEmptyObject;
|
||||
if (!this[kTrailers]) {
|
||||
this[kTrailers] = Object.create(null);
|
||||
}
|
||||
return this[kTrailers];
|
||||
},
|
||||
set trailers(value) {
|
||||
// noop
|
||||
this[kTrailers] = value;
|
||||
},
|
||||
_addHeaderLines(headers, n) {
|
||||
if (headers?.length) {
|
||||
let dest;
|
||||
if (this.complete) {
|
||||
dest = this.trailers;
|
||||
} else {
|
||||
dest = this.headers;
|
||||
}
|
||||
|
||||
if (dest) {
|
||||
for (let i = 0; i < n; i += 2) {
|
||||
this._addHeaderLine(headers[i], headers[i + 1], dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
_addHeaderLine(field, value, dest) {
|
||||
if (dest[field] === undefined) {
|
||||
dest[field] = value;
|
||||
}
|
||||
},
|
||||
setTimeout(msecs, callback) {
|
||||
this.take;
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const { IncomingMessage } = require('http');
|
||||
const assert = require('assert');
|
||||
|
||||
// Headers setter function set a header correctly
|
||||
{
|
||||
const im = new IncomingMessage();
|
||||
im.headers = { key: 'value' };
|
||||
assert.deepStrictEqual(im.headers, { key: 'value' });
|
||||
}
|
||||
|
||||
// Trailers setter function set a header correctly
|
||||
{
|
||||
const im = new IncomingMessage();
|
||||
im.trailers = { key: 'value' };
|
||||
assert.deepStrictEqual(im.trailers, { key: 'value' });
|
||||
}
|
||||
|
||||
// _addHeaderLines function set a header correctly
|
||||
{
|
||||
const im = new IncomingMessage();
|
||||
im.headers = { key1: 'value1' };
|
||||
im._addHeaderLines(['key2', 'value2'], 2);
|
||||
assert.deepStrictEqual(im.headers, { key1: 'value1', key2: 'value2' });
|
||||
}
|
||||
Reference in New Issue
Block a user