diff options
author | Daijiro Wachi <daijiro.wachi@gmail.com> | 2017-02-17 21:32:46 +0100 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2017-02-19 12:39:20 -0800 |
commit | 02acea92d22217e11b9eb59abf9ff261a56d1a9e (patch) | |
tree | e59f84c678924990523dbb9d05c065c73dc5c01a | |
parent | 7b76f822a0e5ca71c5a7dfcf6fc26f300105600f (diff) | |
download | node-new-02acea92d22217e11b9eb59abf9ff261a56d1a9e.tar.gz |
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 <jasnell@gmail.com>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
-rw-r--r-- | test/parallel/test-querystring.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/parallel/test-querystring.js b/test/parallel/test-querystring.js index 3b42cff718..5b6c06958a 100644 --- a/test/parallel/test-querystring.js +++ b/test/parallel/test-querystring.js @@ -123,6 +123,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); @@ -331,6 +342,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) { @@ -341,6 +358,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) { |