Skip to content

Commit 57ec203

Browse files
committed
fix: make mock headers case-insensitive
1 parent 1822ee6 commit 57ec203

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

lib/mock/mock-utils.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ function lowerCaseEntries (headers) {
3838
function getHeaderByName (headers, key) {
3939
if (Array.isArray(headers)) {
4040
for (let i = 0; i < headers.length; i += 2) {
41-
if (headers[i] === key) {
41+
if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {
4242
return headers[i + 1]
4343
}
4444
}
@@ -47,7 +47,7 @@ function getHeaderByName (headers, key) {
4747
} else if (typeof headers.get === 'function') {
4848
return headers.get(key)
4949
} else {
50-
return headers[key]
50+
return lowerCaseEntries(headers)[key.toLocaleLowerCase()]
5151
}
5252
}
5353

test/mock-agent.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,3 +2463,33 @@ test('MockAgent - using fetch yields a headers object in the reply callback', {
24632463

24642464
t.end()
24652465
})
2466+
2467+
// https://github.com/nodejs/undici/issues/1579
2468+
test('MockAgent - headers in mock dispatcher intercept should be case-insensitive', { skip: nodeMajor < 16 }, async (t) => {
2469+
const { fetch } = require('..')
2470+
2471+
const mockAgent = new MockAgent()
2472+
setGlobalDispatcher(mockAgent)
2473+
t.teardown(mockAgent.close.bind(mockAgent))
2474+
2475+
const mockPool = mockAgent.get('https://example.com')
2476+
2477+
mockPool
2478+
.intercept({
2479+
path: '/',
2480+
headers: {
2481+
authorization: 'Bearer 12345',
2482+
'USER-agent': 'undici'
2483+
}
2484+
})
2485+
.reply(200)
2486+
2487+
await fetch('https://example.com', {
2488+
headers: {
2489+
Authorization: 'Bearer 12345',
2490+
'user-AGENT': 'undici'
2491+
}
2492+
})
2493+
2494+
t.end()
2495+
})

0 commit comments

Comments
 (0)