diff --git a/test/parallel/test-querystring-escape.js b/test/parallel/test-querystring-escape.js index 17073a66bda35a..c62f19a0ae858f 100644 --- a/test/parallel/test-querystring-escape.js +++ b/test/parallel/test-querystring-escape.js @@ -9,6 +9,11 @@ assert.deepStrictEqual(qs.escape('test'), 'test'); assert.deepStrictEqual(qs.escape({}), '%5Bobject%20Object%5D'); assert.deepStrictEqual(qs.escape([5, 10]), '5%2C10'); assert.deepStrictEqual(qs.escape('Ŋōđĕ'), '%C5%8A%C5%8D%C4%91%C4%95'); +assert.deepStrictEqual(qs.escape('testŊōđĕ'), 'test%C5%8A%C5%8D%C4%91%C4%95'); +assert.deepStrictEqual(qs.escape(`${String.fromCharCode(0xD800 + 1)}test`), + '%F0%90%91%B4est'); +assert.throws(() => qs.escape(String.fromCharCode(0xD800 + 1)), + /^URIError: URI malformed$/); // using toString for objects assert.strictEqual( @@ -17,9 +22,11 @@ assert.strictEqual( ); // toString is not callable, must throw an error -assert.throws(() => qs.escape({toString: 5})); +assert.throws(() => qs.escape({toString: 5}), + /^TypeError: Cannot convert object to primitive value$/); // should use valueOf instead of non-callable toString assert.strictEqual(qs.escape({toString: 5, valueOf: () => 'test'}), 'test'); -assert.throws(() => qs.escape(Symbol('test'))); +assert.throws(() => qs.escape(Symbol('test')), + /^TypeError: Cannot convert a Symbol value to a string$/); diff --git a/test/parallel/test-querystring.js b/test/parallel/test-querystring.js index 2c8e756efda0de..d8d1fbfbcf927e 100644 --- a/test/parallel/test-querystring.js +++ b/test/parallel/test-querystring.js @@ -308,6 +308,8 @@ function demoDecode(str) { } check(qs.parse('a=a&b=b&c=c', null, null, { decodeURIComponent: demoDecode }), { aa: 'aa', bb: 'bb', cc: 'cc' }); +check(qs.parse('a=a&b=b&c=c', null, '==', { decodeURIComponent: (str) => str }), + { 'a=a': '', 'b=b': '', 'c=c': '' }); // Test QueryString.unescape function errDecode(str) {