diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/index.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/index.js index aabaafcba..9f04daa9b 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/index.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/index.js @@ -11,7 +11,7 @@ import { import { interpolateUrl, interpolateUrlPathParams } from 'utils/url/index'; import { getLanguages } from 'utils/codegenerator/targets'; import { useSelector } from 'react-redux'; -import { getGlobalEnvironmentVariables } from 'utils/collections/index'; +import { getAllVariables, getGlobalEnvironmentVariables } from 'utils/collections/index'; import { resolveInheritedAuth } from './utils/auth-utils'; const GenerateCodeItem = ({ collectionUid, item, onClose }) => { @@ -37,12 +37,11 @@ const GenerateCodeItem = ({ collectionUid, item, onClose }) => { const requestUrl = get(item, 'draft.request.url') !== undefined ? get(item, 'draft.request.url') : get(item, 'request.url'); + const variables = getAllVariables(collection, item); + const interpolatedUrl = interpolateUrl({ url: requestUrl, - globalEnvironmentVariables, - envVars, - runtimeVariables: collection.runtimeVariables, - processEnvVars: collection.processEnvVariables + variables }); // interpolate the path params diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/interpolation.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/interpolation.js index 22a52f84f..e7081b268 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/interpolation.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/interpolation.js @@ -69,24 +69,3 @@ export const interpolateBody = (body, variables = {}) => { return interpolatedBody; }; - -export const createVariablesObject = ({ - globalEnvironmentVariables = {}, - collectionVars = {}, - allVariables = {}, - collection = {}, - runtimeVariables = {}, - processEnvVars = {} -}) => { - return { - ...globalEnvironmentVariables, - ...allVariables, - ...collectionVars, - ...runtimeVariables, - process: { - env: { - ...processEnvVars - } - } - }; -}; \ No newline at end of file diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.js index 60f181ed1..41d9236ed 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.js @@ -1,7 +1,7 @@ import { buildHarRequest } from 'utils/codegenerator/har'; import { getAuthHeaders } from 'utils/codegenerator/auth'; import { getAllVariables, getTreePathFromCollectionToItem } from 'utils/collections/index'; -import { interpolateHeaders, interpolateBody, createVariablesObject } from './interpolation'; +import { interpolateHeaders, interpolateBody } from './interpolation'; // Merge headers from collection, folders, and request const mergeHeaders = (collection, request, requestTreePath) => { @@ -46,17 +46,7 @@ const generateSnippet = ({ language, item, collection, shouldInterpolate = false // Get HTTPSnippet dynamically so mocks can be applied in tests const { HTTPSnippet } = require('httpsnippet'); - const allVariables = getAllVariables(collection, item); - - // Create variables object for interpolation - const variables = createVariablesObject({ - globalEnvironmentVariables: collection.globalEnvironmentVariables || {}, - collectionVars: collection.collectionVars || {}, - allVariables, - collection, - runtimeVariables: collection.runtimeVariables || {}, - processEnvVars: collection.processEnvVariables || {} - }); + const variables = getAllVariables(collection, item); const request = item.request; diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.spec.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.spec.js index 941ea7a76..43581b2b4 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.spec.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/GenerateCodeItem/utils/snippet-generator.spec.js @@ -46,7 +46,10 @@ jest.mock('utils/codegenerator/auth', () => ({ })); jest.mock('utils/collections/index', () => ({ - getAllVariables: jest.fn(() => ({ + getAllVariables: jest.fn((collection) => ({ + ...collection?.globalEnvironmentVariables, + ...collection?.runtimeVariables, + ...collection?.processEnvVariables, baseUrl: 'https://api.example.com', apiKey: 'secret-key-123', userId: '12345' diff --git a/packages/bruno-app/src/utils/url/index.js b/packages/bruno-app/src/utils/url/index.js index 7f9bdcc99..a8ac1b812 100644 --- a/packages/bruno-app/src/utils/url/index.js +++ b/packages/bruno-app/src/utils/url/index.js @@ -69,21 +69,12 @@ export const isValidUrl = (url) => { } }; -export const interpolateUrl = ({ url, globalEnvironmentVariables = {}, envVars, runtimeVariables, processEnvVars }) => { +export const interpolateUrl = ({ url, variables }) => { if (!url || !url.length || typeof url !== 'string') { return; } - return interpolate(url, { - ...globalEnvironmentVariables, - ...envVars, - ...runtimeVariables, - process: { - env: { - ...processEnvVars - } - } - }); + return interpolate(url, variables); }; export const interpolateUrlPathParams = (url, params) => { diff --git a/packages/bruno-app/src/utils/url/index.spec.js b/packages/bruno-app/src/utils/url/index.spec.js index 8ecd0531d..bbcc919c8 100644 --- a/packages/bruno-app/src/utils/url/index.spec.js +++ b/packages/bruno-app/src/utils/url/index.spec.js @@ -77,11 +77,7 @@ describe('Url Utils - interpolateUrl, interpolateUrlPathParams', () => { const url = '{{host}}/api/:id/path?foo={{foo}}&bar={{bar}}&baz={{process.env.baz}}'; const expectedUrl = 'https://example.com/api/:id/path?foo=foo_value&bar=bar_value&baz=baz_value'; - const envVars = { host: 'https://example.com', foo: 'foo_value' }; - const runtimeVariables = { bar: 'bar_value' }; - const processEnvVars = { baz: 'baz_value' }; - - const result = interpolateUrl({ url, envVars, runtimeVariables, processEnvVars }); + const result = interpolateUrl({ url, variables: { host: 'https://example.com', foo: 'foo_value', bar: 'bar_value', 'process.env.baz': 'baz_value' } }); expect(result).toEqual(expectedUrl); }); @@ -101,11 +97,7 @@ describe('Url Utils - interpolateUrl, interpolateUrlPathParams', () => { const params = [{ name: 'id', type: 'path', enabled: true, value: '123' }]; const expectedUrl = 'https://example.com/api/123/path?foo=foo_value&bar=bar_value&baz=baz_value'; - const envVars = { host: 'https://example.com', foo: 'foo_value' }; - const runtimeVariables = { bar: 'bar_value' }; - const processEnvVars = { baz: 'baz_value' }; - - const intermediateResult = interpolateUrl({ url, envVars, runtimeVariables, processEnvVars }); + const intermediateResult = interpolateUrl({ url, variables: { host: 'https://example.com', foo: 'foo_value', bar: 'bar_value', 'process.env.baz': 'baz_value' } }); const result = interpolateUrlPathParams(intermediateResult, params); expect(result).toEqual(expectedUrl);