fix: match net module headers & http.IncomingMessage headers (#17517)
* fix: match net module headers & http.IncomingMessage headers * update net doc for cleanliness * address feedback from review * Update spec/api-net-spec.js Co-Authored-By: codebytere <codebytere@github.com> * add special cookie case
This commit is contained in:
parent
7c6cedb119
commit
8ea33d69ac
3 changed files with 145 additions and 30 deletions
|
@ -1,4 +1,5 @@
|
|||
const assert = require('assert')
|
||||
const { expect } = require('chai')
|
||||
const { remote } = require('electron')
|
||||
const { ipcRenderer } = require('electron')
|
||||
const http = require('http')
|
||||
|
@ -1363,6 +1364,7 @@ describe('net module', () => {
|
|||
const requestUrl = '/requestUrl'
|
||||
const customHeaderName = 'Some-Custom-Header-Name'
|
||||
const customHeaderValue = 'Some-Customer-Header-Value'
|
||||
|
||||
server.on('request', (request, response) => {
|
||||
switch (request.url) {
|
||||
case requestUrl:
|
||||
|
@ -1375,36 +1377,117 @@ describe('net module', () => {
|
|||
handleUnexpectedURL(request, response)
|
||||
}
|
||||
})
|
||||
|
||||
const urlRequest = net.request({
|
||||
method: 'GET',
|
||||
url: `${server.url}${requestUrl}`
|
||||
})
|
||||
|
||||
urlRequest.on('response', (response) => {
|
||||
const statusCode = response.statusCode
|
||||
assert(typeof statusCode === 'number')
|
||||
assert.strictEqual(statusCode, 200)
|
||||
const statusMessage = response.statusMessage
|
||||
assert(typeof statusMessage === 'string')
|
||||
assert.strictEqual(statusMessage, 'OK')
|
||||
expect(response.statusCode).to.equal(200)
|
||||
expect(response.statusMessage).to.equal('OK')
|
||||
|
||||
const headers = response.headers
|
||||
assert(typeof headers === 'object')
|
||||
assert.deepStrictEqual(headers[customHeaderName.toLowerCase()],
|
||||
[customHeaderValue])
|
||||
expect(headers).to.be.an('object')
|
||||
const headerValue = headers[customHeaderName.toLowerCase()]
|
||||
expect(headerValue).to.equal(customHeaderValue)
|
||||
|
||||
const httpVersion = response.httpVersion
|
||||
assert(typeof httpVersion === 'string')
|
||||
assert(httpVersion.length > 0)
|
||||
expect(httpVersion).to.be.a('string').and.to.have.lengthOf.at.least(1)
|
||||
|
||||
const httpVersionMajor = response.httpVersionMajor
|
||||
assert(typeof httpVersionMajor === 'number')
|
||||
assert(httpVersionMajor >= 1)
|
||||
expect(httpVersionMajor).to.be.a('number').and.to.be.at.least(1)
|
||||
|
||||
const httpVersionMinor = response.httpVersionMinor
|
||||
assert(typeof httpVersionMinor === 'number')
|
||||
assert(httpVersionMinor >= 0)
|
||||
expect(httpVersionMinor).to.be.a('number').and.to.be.at.least(0)
|
||||
|
||||
response.pause()
|
||||
response.on('data', (chunk) => {
|
||||
})
|
||||
response.on('end', () => {
|
||||
done()
|
||||
})
|
||||
response.on('data', chunk => {})
|
||||
response.on('end', () => { done() })
|
||||
response.resume()
|
||||
})
|
||||
urlRequest.end()
|
||||
})
|
||||
|
||||
it('should discard duplicate headers', (done) => {
|
||||
const requestUrl = '/duplicateRequestUrl'
|
||||
const includedHeader = 'max-forwards'
|
||||
const discardableHeader = 'Max-Forwards'
|
||||
|
||||
const includedHeaderValue = 'max-fwds-val'
|
||||
const discardableHeaderValue = 'max-fwds-val-two'
|
||||
|
||||
server.on('request', (request, response) => {
|
||||
switch (request.url) {
|
||||
case requestUrl:
|
||||
response.statusCode = 200
|
||||
response.statusMessage = 'OK'
|
||||
response.setHeader(discardableHeader, discardableHeaderValue)
|
||||
response.setHeader(includedHeader, includedHeaderValue)
|
||||
response.end()
|
||||
break
|
||||
default:
|
||||
handleUnexpectedURL(request, response)
|
||||
}
|
||||
})
|
||||
|
||||
const urlRequest = net.request({
|
||||
method: 'GET',
|
||||
url: `${server.url}${requestUrl}`
|
||||
})
|
||||
|
||||
urlRequest.on('response', response => {
|
||||
expect(response.statusCode).to.equal(200)
|
||||
expect(response.statusMessage).to.equal('OK')
|
||||
|
||||
const headers = response.headers
|
||||
expect(headers).to.be.an('object')
|
||||
|
||||
expect(headers).to.have.property(includedHeader)
|
||||
expect(headers).to.not.have.property(discardableHeader)
|
||||
expect(headers[includedHeader]).to.equal(includedHeaderValue)
|
||||
|
||||
response.pause()
|
||||
response.on('data', chunk => {})
|
||||
response.on('end', () => { done() })
|
||||
response.resume()
|
||||
})
|
||||
urlRequest.end()
|
||||
})
|
||||
|
||||
it('should join repeated non-discardable value with ,', (done) => {
|
||||
const requestUrl = '/requestUrl'
|
||||
|
||||
server.on('request', (request, response) => {
|
||||
switch (request.url) {
|
||||
case requestUrl:
|
||||
response.statusCode = 200
|
||||
response.statusMessage = 'OK'
|
||||
response.setHeader('referrer-policy', ['first-text', 'second-text'])
|
||||
response.end()
|
||||
break
|
||||
default:
|
||||
handleUnexpectedURL(request, response)
|
||||
}
|
||||
})
|
||||
|
||||
const urlRequest = net.request({
|
||||
method: 'GET',
|
||||
url: `${server.url}${requestUrl}`
|
||||
})
|
||||
|
||||
urlRequest.on('response', response => {
|
||||
expect(response.statusCode).to.equal(200)
|
||||
expect(response.statusMessage).to.equal('OK')
|
||||
|
||||
const headers = response.headers
|
||||
expect(headers).to.be.an('object')
|
||||
expect(headers).to.have.a.property('referrer-policy')
|
||||
expect(headers['referrer-policy']).to.equal('first-text, second-text')
|
||||
|
||||
response.pause()
|
||||
response.on('data', chunk => {})
|
||||
response.on('end', () => { done() })
|
||||
response.resume()
|
||||
})
|
||||
urlRequest.end()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue