feat: improve postman translations: pm.request and pm.response (#4517)

This commit is contained in:
pooja-bruno 2025-04-16 19:19:31 +05:30 committed by GitHub
parent e5ebe20a20
commit 1703346bb6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 68 additions and 15 deletions

View File

@ -15,11 +15,17 @@ const replacements = {
'pm\\.expect\\(': 'expect(',
'pm\\.environment\\.has\\(([^)]+)\\)': 'bru.getEnvVar($1) !== undefined && bru.getEnvVar($1) !== null',
'pm\\.response\\.code': 'res.getStatus()',
'pm\\.response\\.text\\(': 'res.getBody()?.toString(',
'pm\\.response\\.text\\(\\)': 'JSON.stringify(res.getBody())',
'pm\\.expect\\.fail\\(': 'expect.fail(',
'pm\\.response\\.responseTime': 'res.getResponseTime()',
'pm\\.environment\\.name': 'bru.getEnvName()',
'pm\\.response\\.status': 'res.statusText',
'pm\\.response\\.headers': 'req.getHeaders()',
"tests\\['([^']+)'\\]\\s*=\\s*([^;]+);": 'test("$1", function() { expect(Boolean($2)).to.be.true; });',
'pm\\.request\\.url': 'req.getUrl()',
'pm\\.request\\.method': 'req.getMethod()',
'pm\\.request\\.headers': 'req.getHeaders()',
'pm\\.request\\.body': 'req.getBody()',
// deprecated translations
'postman\\.setEnvironmentVariable\\(': 'bru.setEnvVar(',
'postman\\.getEnvironmentVariable\\(': 'bru.getEnvVar(',

View File

@ -137,17 +137,3 @@ describe('postmanTranslation function', () => {
expect(postmanTranslation(inputScript)).toBe(expectedOutput);
});
});
test('should handle response commands', () => {
const inputScript = `
const responseTime = pm.response.responseTime;
const responseCode = pm.response.code;
const responseText = pm.response.text();
`;
const expectedOutput = `
const responseTime = res.getResponseTime();
const responseCode = res.getStatus();
const responseText = res.getBody()?.toString();
`;
expect(postmanTranslation(inputScript)).toBe(expectedOutput);
});

View File

@ -0,0 +1,27 @@
const { default: postmanTranslation } = require("../../../src/postman/postman-translations");
describe('postmanTranslations - request commands', () => {
test('should handle request commands', () => {
const inputScript = `
const requestUrl = pm.request.url;
const requestMethod = pm.request.method;
const requestHeaders = pm.request.headers;
const requestBody = pm.request.body;
pm.test('Request method is POST', function() {
pm.expect(pm.request.method).to.equal('POST');
});
`;
const expectedOutput = `
const requestUrl = req.getUrl();
const requestMethod = req.getMethod();
const requestHeaders = req.getHeaders();
const requestBody = req.getBody();
test('Request method is POST', function() {
expect(req.getMethod()).to.equal('POST');
});
`;
expect(postmanTranslation(inputScript)).toBe(expectedOutput);
});
});

View File

@ -0,0 +1,34 @@
const { default: postmanTranslation } = require("../../../src/postman/postman-translations");
describe('postmanTranslations - response commands', () => {
test('should handle response commands', () => {
const inputScript = `
const responseTime = pm.response.responseTime;
const responseCode = pm.response.code;
const responseText = pm.response.text();
const responseJson = pm.response.json();
const responseStatus = pm.response.status;
const responseHeaders = pm.response.headers;
pm.test('Status code is 200', function() {
pm.response.to.have.status(200);
});
`;
const expectedOutput = `
const responseTime = res.getResponseTime();
const responseCode = res.getStatus();
const responseText = JSON.stringify(res.getBody());
const responseJson = res.getBody();
const responseStatus = res.statusText;
const responseHeaders = req.getHeaders();
test('Status code is 200', function() {
expect(res.getStatus()).to.equal(200);
});
`;
expect(postmanTranslation(inputScript)).toBe(expectedOutput);
});
});