From ad8b30ca471aeb35bd6c6f05bcc735a4ba26e475 Mon Sep 17 00:00:00 2001 From: naman-bruno Date: Tue, 21 Jan 2025 15:41:41 +0530 Subject: [PATCH] Fixed: user cookie header getting overwritten by stored cookie in cli --- .../src/runner/run-single-request.js | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/bruno-cli/src/runner/run-single-request.js b/packages/bruno-cli/src/runner/run-single-request.js index b2bbc3795..1c2e4076c 100644 --- a/packages/bruno-cli/src/runner/run-single-request.js +++ b/packages/bruno-cli/src/runner/run-single-request.js @@ -233,7 +233,30 @@ const runSingleRequest = async function ( if (!options.disableCookies) { const cookieString = getCookieStringForUrl(request.url); if (cookieString && typeof cookieString === 'string' && cookieString.length) { - request.headers['cookie'] = cookieString; + const existingCookieHeaderName = Object.keys(request.headers).find( + name => name.toLowerCase() === 'cookie' + ); + const existingCookieString = existingCookieHeaderName ? request.headers[existingCookieHeaderName] : ''; + + // Helper function to parse cookies into an object + const parseCookies = (str) => str.split(';').reduce((cookies, cookie) => { + const [name, ...rest] = cookie.split('='); + if (name && name.trim()) { + cookies[name.trim()] = rest.join('=').trim(); + } + return cookies; + }, {}); + + const mergedCookies = { + ...parseCookies(existingCookieString), + ...parseCookies(cookieString), + }; + + const combinedCookieString = Object.entries(mergedCookies) + .map(([name, value]) => `${name}=${value}`) + .join('; '); + + request.headers[existingCookieHeaderName || 'Cookie'] = combinedCookieString; } }