From f3d2053878837ff95a66e5f5bde4dd4c6a0949ff Mon Sep 17 00:00:00 2001 From: Hiroki Uchikawa Date: Fri, 1 Feb 2019 17:15:07 +0900 Subject: [PATCH] Make the encode option a boolean value to determine whether to encode --- .../@node-red/nodes/core/io/21-httprequest.js | 10 +++++++--- test/nodes/core/io/21-httprequest_spec.js | 10 +++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js index d1d9fe440..633f3a7a9 100644 --- a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js +++ b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js @@ -161,9 +161,13 @@ module.exports = function(RED) { // This case clears a cookie for HTTP In/Response nodes. // Ignore for this node. } else if (typeof msg.cookies[name] === 'object') { - // If the encode option is specified, pass it. - var options = msg.cookies[name].encode ? {encode: msg.cookies[name].encode} : undefined; - opts.jar.setCookie(cookie.serialize(name, msg.cookies[name].value, options), url); + if(msg.cookies[name].encode === false){ + // If the encode option is false, the value is not encoded. + opts.jar.setCookie(cookie.serialize(name, msg.cookies[name].value, {encode: String}), url); + } else { + // The value is encoded by encodeURIComponent(). + opts.jar.setCookie(cookie.serialize(name, msg.cookies[name].value), url); + } } else { opts.jar.setCookie(cookie.serialize(name, msg.cookies[name]), url); } diff --git a/test/nodes/core/io/21-httprequest_spec.js b/test/nodes/core/io/21-httprequest_spec.js index 5562127d1..04b191e2d 100644 --- a/test/nodes/core/io/21-httprequest_spec.js +++ b/test/nodes/core/io/21-httprequest_spec.js @@ -1106,27 +1106,27 @@ describe('HTTP Request Node', function() { done(err); } }); - n1.receive({payload:"foo", cookies:{data:{value:value}}}); + n1.receive({payload:"foo", cookies:{data:{value:value, encode:true}}}); }); }); - it('should encode cookie by specified function', function(done) { + it('should not encode cookie when encode option is false', function(done) { var flow = [{id:"n1",type:"http request",wires:[["n2"]],method:"GET",ret:"obj",url:getTestURL('/checkCookie')}, {id:"n2", type:"helper"}]; helper.load(httpRequestNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - var value = ',/?:@ &+$#'; + var value = '!#$%&\'()*+-./:<>?@[]^_`{|}~'; n2.on("input", function(msg) { try { - msg.payload.should.have.property('data',encodeURI(value)); + msg.payload.should.have.property('data',value); msg.should.have.property('statusCode',200); done(); } catch(err) { done(err); } }); - n1.receive({payload:"foo", cookies:{data:{value:value,encode:encodeURI}}}); + n1.receive({payload:"foo", cookies:{data:{value:value, encode:false}}}); }); });