From f2057f77b231d88ea94ad88e84e4fd9f99506880 Mon Sep 17 00:00:00 2001 From: Daniel Lopretto Date: Wed, 24 Mar 2021 02:22:03 -0400 Subject: [PATCH] Testing and cleanup of transformResponse (#3377) - Tests for transformResponse - Remove eslint error by renaming the var - Test that there data a length to avoid JSON.parse headache - Use `util.isString()` over `typeof` Co-authored-by: Jay --- lib/defaults.js | 8 +++---- test/unit/defaults/transformReponse.js | 30 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 test/unit/defaults/transformReponse.js diff --git a/lib/defaults.js b/lib/defaults.js index 2b2a1a7d55..c7492a5d06 100644 --- a/lib/defaults.js +++ b/lib/defaults.js @@ -55,13 +55,13 @@ var defaults = { }], transformResponse: [function transformResponse(data) { - /*eslint no-param-reassign:0*/ - if (typeof data === 'string') { + var result = data; + if (utils.isString(result) && result.length) { try { - data = JSON.parse(data); + result = JSON.parse(result); } catch (e) { /* Ignore */ } } - return data; + return result; }], /** diff --git a/test/unit/defaults/transformReponse.js b/test/unit/defaults/transformReponse.js new file mode 100644 index 0000000000..162b98d717 --- /dev/null +++ b/test/unit/defaults/transformReponse.js @@ -0,0 +1,30 @@ +var defaults = require('../../../lib/defaults'); +var transformData = require('../../../lib/core/transformData'); +var assert = require('assert'); + +describe('transformResponse', function () { + describe('200 request', function () { + it('parses json', function () { + var data = '{"message": "hello, world"}'; + var result = transformData(data, {'content-type': 'application/json'}, defaults.transformResponse); + assert.strictEqual(result.message, 'hello, world'); + }); + it('ignores XML', function () { + var data = 'hello, world'; + var result = transformData(data, {'content-type': 'text/xml'}, defaults.transformResponse); + assert.strictEqual(result, data); + }); + }); + describe('204 request', function () { + it('does not parse the empty string', function () { + var data = ''; + var result = transformData(data, {'content-type': undefined}, defaults.transformResponse); + assert.strictEqual(result, ''); + }); + it('does not parse undefined', function () { + var data = undefined; + var result = transformData(data, {'content-type': undefined}, defaults.transformResponse); + assert.strictEqual(result, data); + }); + }); +}); \ No newline at end of file