diff --git a/packages/bruno-converters/src/utils/bruno-to-postman-translator.js b/packages/bruno-converters/src/utils/bruno-to-postman-translator.js index 68c52aa4a..351535ea0 100644 --- a/packages/bruno-converters/src/utils/bruno-to-postman-translator.js +++ b/packages/bruno-converters/src/utils/bruno-to-postman-translator.js @@ -70,7 +70,7 @@ const simpleTranslations = { 'req.headers': 'pm.request.headers', 'req.body': 'pm.request.body', 'req.getHeader': 'pm.request.headers.get', - 'req.setHeader': 'pm.request.headers.set', + // Note: req.setHeader is handled in complexTransformations because it needs arg restructuring (two args -> object) 'req.deleteHeader': 'pm.request.headers.remove', // URL helper methods @@ -318,6 +318,28 @@ const complexTransformations = [ return updateCall; } }, + // req.setHeader(key, value) -> pm.request.headers.upsert({key: key, value: value}) + { + pattern: 'req.setHeader', + transform: (path) => { + const args = path.value.arguments; + if (!args || args.length < 2) { + return j.callExpression( + buildMemberExpressionFromString('pm.request.headers.upsert'), + args || [] + ); + } + return j.callExpression( + buildMemberExpressionFromString('pm.request.headers.upsert'), + [ + j.objectExpression([ + j.property('init', j.identifier('key'), args[0]), + j.property('init', j.identifier('value'), args[1]) + ]) + ] + ); + } + }, // req.setHeaders(headers) -> loop calling pm.request.headers.upsert() for each header { pattern: 'req.setHeaders', diff --git a/packages/bruno-converters/tests/bruno/bruno-to-postman-translations/request.test.js b/packages/bruno-converters/tests/bruno/bruno-to-postman-translations/request.test.js index 1fe2df865..29f4ec83d 100644 --- a/packages/bruno-converters/tests/bruno/bruno-to-postman-translations/request.test.js +++ b/packages/bruno-converters/tests/bruno/bruno-to-postman-translations/request.test.js @@ -73,10 +73,10 @@ describe('Bruno to Postman Request Translation', () => { expect(translatedCode).toBe('const contentType = pm.request.headers.get("Content-Type");'); }); - it('should translate req.setHeader() to pm.request.headers.set()', () => { + it('should translate req.setHeader() to pm.request.headers.upsert() with object arg', () => { const code = 'req.setHeader("Authorization", "Bearer token123");'; const translatedCode = translateBruToPostman(code); - expect(translatedCode).toBe('pm.request.headers.set("Authorization", "Bearer token123");'); + expect(translatedCode).toContain('pm.request.headers.upsert({\n key: "Authorization",\n value: "Bearer token123"\n})'); }); it('should translate req.deleteHeader() to pm.request.headers.remove()', () => {