From ff927b2cf8e176e6dc59c02639b38b65a1b3833a Mon Sep 17 00:00:00 2001 From: Daijiro Wachi Date: Fri, 17 Feb 2017 21:32:46 +0100 Subject: [PATCH] test: add cases for unescape & unescapeBuffer These two functions in the querystring are used as a fallback. To test them, two test cases were added which make errors that will be caught. PR-URL: https://github.com/nodejs/node/pull/11326 Reviewed-By: James M Snell Reviewed-By: Timothy Gu Reviewed-By: Yuta Hiroto Reviewed-By: Michael Dawson Reviewed-By: Colin Ihrig --- test/parallel/test-querystring.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/parallel/test-querystring.js b/test/parallel/test-querystring.js index 988e210c4f2194..2c8e756efda0de 100644 --- a/test/parallel/test-querystring.js +++ b/test/parallel/test-querystring.js @@ -105,6 +105,17 @@ const qsNoMungeTestCases = [ ['trololol=yes&lololo=no', {'trololol': 'yes', 'lololo': 'no'}] ]; +const qsUnescapeTestCases = [ + ['there is nothing to unescape here', + 'there is nothing to unescape here'], + ['there%20are%20several%20spaces%20that%20need%20to%20be%20unescaped', + 'there are several spaces that need to be unescaped'], + ['there%2Qare%0-fake%escaped values in%%%%this%9Hstring', + 'there%2Qare%0-fake%escaped values in%%%%this%9Hstring'], + ['%20%21%22%23%24%25%26%27%28%29%2A%2B%2C%2D%2E%2F%30%31%32%33%34%35%36%37', + ' !"#$%&\'()*+,-./01234567'] +]; + assert.strictEqual('918854443121279438895193', qs.parse('id=918854443121279438895193').id); @@ -298,6 +309,12 @@ function demoDecode(str) { check(qs.parse('a=a&b=b&c=c', null, null, { decodeURIComponent: demoDecode }), { aa: 'aa', bb: 'bb', cc: 'cc' }); +// Test QueryString.unescape +function errDecode(str) { + throw new Error('To jump to the catch scope'); +} +check(qs.parse('a=a', null, null, { decodeURIComponent: errDecode }), + { a: 'a' }); // Test custom encode function demoEncode(str) { @@ -308,6 +325,12 @@ assert.strictEqual( qs.stringify(obj, null, null, { encodeURIComponent: demoEncode }), 'a=a&b=b&c=c'); +// Test QueryString.unescapeBuffer +qsUnescapeTestCases.forEach(function(testCase) { + assert.strictEqual(qs.unescape(testCase[0]), testCase[1]); + assert.strictEqual(qs.unescapeBuffer(testCase[0]).toString(), testCase[1]); +}); + // test overriding .unescape const prevUnescape = qs.unescape; qs.unescape = function(str) {