diff --git a/packages/bruno-cli/src/runner/prepare-request.js b/packages/bruno-cli/src/runner/prepare-request.js index 8b1b249db..eab44f8c0 100644 --- a/packages/bruno-cli/src/runner/prepare-request.js +++ b/packages/bruno-cli/src/runner/prepare-request.js @@ -76,10 +76,11 @@ const prepareRequest = (request, collectionRoot) => { if (!contentTypeDefined) { axiosRequest.headers['content-type'] = 'application/json'; } + const jsonBody = decomment(request.body.json); try { - axiosRequest.data = JSONbig.parse(decomment(request.body.json)); + axiosRequest.data = JSONbig.parse(jsonBody); } catch (ex) { - axiosRequest.data = request.body.json; + axiosRequest.data = jsonBody; } } diff --git a/packages/bruno-cli/tests/runner/prepare-request.spec.js b/packages/bruno-cli/tests/runner/prepare-request.spec.js new file mode 100644 index 000000000..6e2219af8 --- /dev/null +++ b/packages/bruno-cli/tests/runner/prepare-request.spec.js @@ -0,0 +1,21 @@ +const { describe, it, expect } = require('@jest/globals'); + +const prepareRequest = require('../../src/runner/prepare-request'); + +describe('prepare-request: prepareRequest', () => { + describe('Decomments request body', () => { + it('If request body is valid JSON', async () => { + const body = { mode: 'json', json: '{\n"test": "{{someVar}}" // comment\n}' }; + const expected = { test: '{{someVar}}' }; + const result = prepareRequest({ body }); + expect(result.data).toEqual(expected); + }); + + it('If request body is not valid JSON', async () => { + const body = { mode: 'json', json: '{\n"test": {{someVar}} // comment\n}' }; + const expected = '{\n"test": {{someVar}} \n}'; + const result = prepareRequest({ body }); + expect(result.data).toEqual(expected); + }); + }); +}); diff --git a/packages/bruno-electron/src/ipc/network/prepare-request.js b/packages/bruno-electron/src/ipc/network/prepare-request.js index 36e064919..eaa6c8de0 100644 --- a/packages/bruno-electron/src/ipc/network/prepare-request.js +++ b/packages/bruno-electron/src/ipc/network/prepare-request.js @@ -172,10 +172,11 @@ const prepareRequest = (request, collectionRoot, collectionPath) => { if (!contentTypeDefined) { axiosRequest.headers['content-type'] = 'application/json'; } + const body = decomment(request.body.json); try { - axiosRequest.data = JSONbig.parse(decomment(request.body.json)); + axiosRequest.data = JSONbig.parse(body); } catch (ex) { - axiosRequest.data = request.body.json; + axiosRequest.data = body; } } diff --git a/packages/bruno-electron/tests/network/prepare-request.spec.js b/packages/bruno-electron/tests/network/prepare-request.spec.js new file mode 100644 index 000000000..833f58310 --- /dev/null +++ b/packages/bruno-electron/tests/network/prepare-request.spec.js @@ -0,0 +1,21 @@ +const { describe, it, expect } = require('@jest/globals'); + +const prepareRequest = require('../../src/ipc/network/prepare-request'); + +describe('prepare-request: prepareRequest', () => { + describe('Decomments request body', () => { + it('If request body is valid JSON', async () => { + const body = { mode: 'json', json: '{\n"test": "{{someVar}}" // comment\n}' }; + const expected = { test: '{{someVar}}' }; + const result = prepareRequest({ body }); + expect(result.data).toEqual(expected); + }); + + it('If request body is not valid JSON', async () => { + const body = { mode: 'json', json: '{\n"test": {{someVar}} // comment\n}' }; + const expected = '{\n"test": {{someVar}} \n}'; + const result = prepareRequest({ body }); + expect(result.data).toEqual(expected); + }); + }); +});