From 6e88671788b575ead09c92e65493a529ca65656c Mon Sep 17 00:00:00 2001 From: Sanjai Kumar <161328623+sanjaikumar-bruno@users.noreply.github.com> Date: Thu, 27 Nov 2025 10:42:06 +0530 Subject: [PATCH] feat: add support for legacy request object translations in Postman converter (#6174) --- .../src/postman/postman-translations.js | 12 ++++++++++++ .../src/utils/jscode-shift-translator.js | 9 ++++++++- .../postman-translations/postman-request.spec.js | 16 ++++++++++++++++ .../transpiler-tests/request.test.js | 16 ++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/packages/bruno-converters/src/postman/postman-translations.js b/packages/bruno-converters/src/postman/postman-translations.js index 43c034db9..eb7fc1bbe 100644 --- a/packages/bruno-converters/src/postman/postman-translations.js +++ b/packages/bruno-converters/src/postman/postman-translations.js @@ -35,11 +35,23 @@ const replacements = { 'pm\\.response\\.status': 'res.statusText', 'pm\\.response\\.headers': 'res.getHeaders()', "tests\\['([^']+)'\\]\\s*=\\s*([^;]+);": 'test("$1", function() { expect(Boolean($2)).to.be.true; });', + + // Supported Postman request translations: + // - pm.request.url / request.url -> req.getUrl() + // - pm.request.method / request.method -> req.getMethod() + // - pm.request.headers / request.headers -> req.getHeaders() + // - pm.request.body / request.body -> req.getBody() + // - pm.info.requestName / request.name -> req.getName() 'pm\\.request\\.url': 'req.getUrl()', 'pm\\.request\\.method': 'req.getMethod()', 'pm\\.request\\.headers': 'req.getHeaders()', 'pm\\.request\\.body': 'req.getBody()', 'pm\\.info\\.requestName': 'req.getName()', + 'request\\.url': 'req.getUrl()', + 'request\\.method': 'req.getMethod()', + 'request\\.headers': 'req.getHeaders()', + 'request\\.body': 'req.getBody()', + 'request\\.name': 'req.getName()', // deprecated translations 'postman\\.setEnvironmentVariable\\(': 'bru.setEnvVar(', 'postman\\.getEnvironmentVariable\\(': 'bru.getEnvVar(', diff --git a/packages/bruno-converters/src/utils/jscode-shift-translator.js b/packages/bruno-converters/src/utils/jscode-shift-translator.js index 14450e054..8af8e07b1 100644 --- a/packages/bruno-converters/src/utils/jscode-shift-translator.js +++ b/packages/bruno-converters/src/utils/jscode-shift-translator.js @@ -76,11 +76,18 @@ const simpleTranslations = { // Info 'pm.info.requestName': 'req.getName()', - // Request properties + // Request properties (pm.request.*) 'pm.request.url': 'req.getUrl()', 'pm.request.method': 'req.getMethod()', 'pm.request.headers': 'req.getHeaders()', 'pm.request.body': 'req.getBody()', + + // Legacy/global request object (request.*) + 'request.url': 'req.getUrl()', + 'request.method': 'req.getMethod()', + 'request.headers': 'req.getHeaders()', + 'request.body': 'req.getBody()', + 'request.name': 'req.getName()', // Response properties 'pm.response.json': 'res.getBody', diff --git a/packages/bruno-converters/tests/postman/postman-to-bruno/postman-translations/postman-request.spec.js b/packages/bruno-converters/tests/postman/postman-to-bruno/postman-translations/postman-request.spec.js index 93eed719a..dd3e11331 100644 --- a/packages/bruno-converters/tests/postman/postman-to-bruno/postman-translations/postman-request.spec.js +++ b/packages/bruno-converters/tests/postman/postman-to-bruno/postman-translations/postman-request.spec.js @@ -26,4 +26,20 @@ describe('postmanTranslations - request commands', () => { `; expect(postmanTranslation(inputScript)).toBe(expectedOutput); }); + + test('should handle legacy request object without pm prefix', () => { + const inputScript = ` + const url = request.url; + const method = request.method; + const body = request.body; + const name = request.name; + `; + const expectedOutput = ` + const url = req.getUrl(); + const method = req.getMethod(); + const body = req.getBody(); + const name = req.getName(); + `; + expect(postmanTranslation(inputScript)).toBe(expectedOutput); + }); }); \ No newline at end of file diff --git a/packages/bruno-converters/tests/postman/postman-translations/transpiler-tests/request.test.js b/packages/bruno-converters/tests/postman/postman-translations/transpiler-tests/request.test.js index a81bc6c72..a0469e2b9 100644 --- a/packages/bruno-converters/tests/postman/postman-translations/transpiler-tests/request.test.js +++ b/packages/bruno-converters/tests/postman/postman-translations/transpiler-tests/request.test.js @@ -105,4 +105,20 @@ describe('Request Translation', () => { expect(translatedCode).toContain('bru.setVar("lastRequestBody", JSON.stringify(requestData));'); expect(translatedCode).toContain('bru.setEnvVar("lastContentType", contentType);'); }); + + it('should translate legacy request.* properties', () => { + const code = ` + const url = request.url; + const method = request.method; + const body = request.body; + const name = request.name; + `; + const translatedCode = translateCode(code); + expect(translatedCode).toBe(` + const url = req.getUrl(); + const method = req.getMethod(); + const body = req.getBody(); + const name = req.getName(); + `); + }); }); \ No newline at end of file