From 4ad51186a134631de1f212a59b0fdabc1a2c20a5 Mon Sep 17 00:00:00 2001 From: phoval <89515930+phoval@users.noreply.github.com> Date: Mon, 11 May 2026 07:43:21 +0200 Subject: [PATCH] fix(bruno-electron): interpolate auth headers for GraphQL introspection request (#5560) --- .../prepare-gql-introspection-request.js | 5 ++- .../prepare-gql-introspection-request.spec.js | 37 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/packages/bruno-electron/src/ipc/network/prepare-gql-introspection-request.js b/packages/bruno-electron/src/ipc/network/prepare-gql-introspection-request.js index d4910e4ee..a79ec1e76 100644 --- a/packages/bruno-electron/src/ipc/network/prepare-gql-introspection-request.js +++ b/packages/bruno-electron/src/ipc/network/prepare-gql-introspection-request.js @@ -1,6 +1,7 @@ const { get, each } = require('lodash'); const { interpolate } = require('@usebruno/common'); const { getIntrospectionQuery } = require('graphql'); +const interpolateVars = require('./interpolate-vars'); const { setAuthHeaders } = require('./prepare-request'); const prepareGqlIntrospectionRequest = (endpoint, resolvedVars, request, collectionRoot) => { @@ -23,7 +24,9 @@ const prepareGqlIntrospectionRequest = (endpoint, resolvedVars, request, collect data: JSON.stringify(queryParams) }; - return setAuthHeaders(axiosRequest, request, collectionRoot); + axiosRequest = setAuthHeaders(axiosRequest, request, collectionRoot); + + return interpolateVars(axiosRequest, resolvedVars); }; const mapHeaders = (requestHeaders, collectionHeaders, resolvedVars) => { diff --git a/packages/bruno-electron/tests/network/prepare-gql-introspection-request.spec.js b/packages/bruno-electron/tests/network/prepare-gql-introspection-request.spec.js index 949f4f377..0b10f0afe 100644 --- a/packages/bruno-electron/tests/network/prepare-gql-introspection-request.spec.js +++ b/packages/bruno-electron/tests/network/prepare-gql-introspection-request.spec.js @@ -29,6 +29,43 @@ describe('prepareGqlIntrospectionRequest', () => { expect(result.url).toBe(setup.endpoint); }); + it('should interpolate bearer auth headers from request auth', () => { + const setup = createBasicSetup(); + setup.request.auth = { + mode: 'bearer', + bearer: { + token: '{{AUTH_TOKEN}}' + } + }; + const vars = { + AUTH_TOKEN: 'request-token' + }; + + const result = prepareGqlIntrospectionRequest(setup.endpoint, vars, setup.request, setup.collectionRoot); + + expect(result.headers['Authorization']).toBe('Bearer request-token'); + }); + + it('should interpolate inherited bearer auth headers', () => { + const setup = createBasicSetup(); + setup.request.auth = { + mode: 'inherit' + }; + setup.collectionRoot.request.auth = { + mode: 'bearer', + bearer: { + token: '{{AUTH_TOKEN}}' + } + }; + const vars = { + AUTH_TOKEN: 'collection-token' + }; + + const result = prepareGqlIntrospectionRequest(setup.endpoint, vars, setup.request, setup.collectionRoot); + + expect(result.headers['Authorization']).toBe('Bearer collection-token'); + }); + it('should override collection headers with request headers', () => { const setup = createBasicSetup(); setup.collectionRoot.request.headers = [