From d082b221d76ba300da687796762dd5ef2eb44a3e Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 10:09:03 +0000 Subject: [PATCH] chore: add unit test for reserved header Co-authored-by: Samuel Attard --- spec/api-web-request-spec.ts | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/spec/api-web-request-spec.ts b/spec/api-web-request-spec.ts index b2792cf9a6..88fbb19f0b 100644 --- a/spec/api-web-request-spec.ts +++ b/spec/api-web-request-spec.ts @@ -1,4 +1,4 @@ -import { ipcMain, protocol, session, WebContents, webContents } from 'electron/main'; +import { ipcMain, net, protocol, session, WebContents, webContents } from 'electron/main'; import { expect } from 'chai'; import * as WebSocket from 'ws'; @@ -455,6 +455,35 @@ describe('webRequest module', () => { })); expect(onSendHeadersCalled).to.be.true(); }); + + it('can inject Proxy-Authorization header for net module requests', async () => { + // Proxy-Authorization is normally rejected by Chromium's network service + // for security reasons. However, for Electron's trusted net module, + // webRequest.onBeforeSendHeaders should be able to inject it via the + // TrustedHeaderClient code path. + const proxyAuthValue = 'Basic test-credentials'; + let receivedProxyAuth: string | undefined; + + const server = http.createServer((req, res) => { + receivedProxyAuth = req.headers['proxy-authorization']; + res.end('ok'); + }); + const { url: serverUrl } = await listen(server); + + try { + ses.webRequest.onBeforeSendHeaders((details, callback) => { + const requestHeaders = details.requestHeaders; + requestHeaders['Proxy-Authorization'] = proxyAuthValue; + callback({ requestHeaders }); + }); + + const response = await net.fetch(serverUrl, { bypassCustomProtocolHandlers: true }); + expect(response.ok).to.be.true(); + expect(receivedProxyAuth).to.equal(proxyAuthValue); + } finally { + server.close(); + } + }); }); describe('webRequest.onSendHeaders', () => {