diff options
author | Dmitry Volyntsev <xeioex@nginx.com> | 2025-01-29 21:35:08 -0800 |
---|---|---|
committer | Dmitry Volyntsev <xeioexception@gmail.com> | 2025-02-07 18:14:25 -0800 |
commit | f289dcb99a9e4c9b72ca8d1c60659a43e58547cd (patch) | |
tree | 0781d9f51b31c56a2ac21bf9921ac3a7fb5ffcd6 /src | |
parent | 246f4ca082f125fd1fd20ddc7cb45e40f19de04d (diff) | |
download | njs-f289dcb99a9e4c9b72ca8d1c60659a43e58547cd.tar.gz njs-f289dcb99a9e4c9b72ca8d1c60659a43e58547cd.zip |
QuickJS: added querystring module.
Diffstat (limited to 'src')
-rw-r--r-- | src/test/njs_unit_test.c | 354 |
1 files changed, 0 insertions, 354 deletions
diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 81fee436..e99a6d8a 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -20491,354 +20491,6 @@ static njs_unit_test_t njs_crypto_module_test[] = njs_str("TypeError: \"this\" is not a hash object") }, }; -static njs_unit_test_t njs_querystring_module_test[] = -{ - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz');" - "njs.dump(obj)"), - njs_str("{baz:'fuz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=');" - "njs.dump(obj)"), - njs_str("{baz:''}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax');" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&');" - "njs.dump(obj)"), - njs_str("{baz:'fuz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('&baz=fuz');" - "njs.dump(obj)"), - njs_str("{baz:'fuz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('&&&&&baz=fuz');" - "njs.dump(obj)"), - njs_str("{baz:'fuz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('=fuz');" - "njs.dump(obj)"), - njs_str("{:'fuz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('=fuz=');" - "njs.dump(obj)"), - njs_str("{:'fuz='}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('===fu=z');" - "njs.dump(obj)"), - njs_str("{:'==fu=z'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&baz=tax');" - "njs.dump(obj)"), - njs_str("{baz:['fuz','tax']}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('freespace');" - "njs.dump(obj)"), - njs_str("{freespace:''}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('name&value=12');" - "njs.dump(obj)"), - njs_str("{name:'',value:'12'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', 'fuz');" - "njs.dump(obj)"), - njs_str("{baz:'',&muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', '');" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', null);" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', undefined);" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz123muz=tax', 123);" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuzαααmuz=tax', 'ααα');" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', '=');" - "njs.dump(obj)"), - njs_str("{baz:'',fuz&muz:'',tax:''}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', null, 'fuz');" - "njs.dump(obj)"), - njs_str("{baz=:'',muz=tax:''}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', null, '&');" - "njs.dump(obj)"), - njs_str("{baz=fuz:'',muz=tax:''}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz123fuz&muz123tax', null, 123);" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('bazαααfuz&muzαααtax', null, 'ααα');" - "njs.dump(obj)"), - njs_str("{baz:'fuz',muz:'tax'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=fuz&muz=tax', null, null, {maxKeys: 1});" - "njs.dump(obj)"), - njs_str("{baz:'fuz'}") }, - - { njs_str("var qs = require('querystring'); var out = [];" - "var obj = qs.parse('baz=fuz&muz=tax', null, null, {decodeURIComponent: (key) => {out.push(key)}});" - "out.join('; ');"), - njs_str("baz; fuz; muz; tax") }, - - { njs_str("var qs = require('querystring'); var i = 0;" - "var obj = qs.parse('baz=fuz&muz=tax', null, null, {decodeURIComponent: (key) => 'α' + i++});" - "njs.dump(obj);"), - njs_str("{α0:'α1',α2:'α3'}") }, - - { njs_str("var qs = require('querystring');" - "qs.parse('baz=fuz&muz=tax', null, null, {decodeURIComponent: 123});"), - njs_str("TypeError: option decodeURIComponent is not a function") }, - - { njs_str("var qs = require('querystring');" - "qs.unescape = 123;" - "qs.parse('baz=fuz&muz=tax');"), - njs_str("TypeError: QueryString.unescape is not a function") }, - - { njs_str("var qs = require('querystring'); var out = [];" - "qs.unescape = (key) => {out.push(key)};" - "qs.parse('baz=fuz&muz=tax');" - "out.join('; ');"), - njs_str("baz; fuz; muz; tax") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('ba%32z=f%32uz');" - "njs.dump(obj)"), - njs_str("{ba2z:'f2uz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('ba%32z=f%32uz');" - "njs.dump(obj)"), - njs_str("{ba2z:'f2uz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('ba%F0%9F%92%A9z=f%F0%9F%92%A9uz');" - "njs.dump(obj)"), - njs_str("{ba💩z:'f💩uz'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('======');" - "njs.dump(obj)"), - njs_str("{:'====='}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=%F0%9F%A9');" - "njs.dump(obj)"), - njs_str("{baz:'�'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=αααααα%\x00\x01\x02αααα');" - "njs.dump(obj)"), - njs_str("{baz:'αααααα%\\u0000\\u0001\\u0002αααα'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=%F6α');" - "njs.dump(obj)"), - njs_str("{baz:'�α'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=%F6');" - "njs.dump(obj)"), - njs_str("{baz:'�'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=%FG');" - "njs.dump(obj)"), - njs_str("{baz:'%FG'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=%F');" - "njs.dump(obj)"), - njs_str("{baz:'%F'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('baz=%');" - "njs.dump(obj)"), - njs_str("{baz:'%'}") }, - - { njs_str("var qs = require('querystring');" - "var obj = qs.parse('ba+z=f+uz');" - "njs.dump(obj)"), - njs_str("{ba z:'f uz'}") }, - - - { njs_str("var qs = require('querystring');" - "qs.parse('X='+'α'.repeat(33)).X.length"), - njs_str("33") }, - - { njs_str("var qs = require('querystring');" - "var x = qs.parse('X='+'α1'.repeat(33)).X;" - "[x.length, x[33], x[34]]"), - njs_str("66,1,α") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz'})"), - njs_str("baz=fuz") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'})"), - njs_str("baz=fuz&muz=tax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baαz': 'fαuz', 'muαz': 'tαax'});"), - njs_str("ba%CE%B1z=f%CE%B1uz&mu%CE%B1z=t%CE%B1ax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': ['fuz', 'tax']})"), - njs_str("baz=fuz&baz=tax") }, - - { njs_str("var qs = require('querystring');" - njs_declare_sparse_array("arr", 2) - "arr[0] = 0; arr[1] = 1.5;" - "qs.stringify({'baz': arr})"), - njs_str("baz=0&baz=1.5") }, - - { njs_str("var qs = require('querystring'); var out = [];" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'}, null, null, {encodeURIComponent: (key) => {out.push(key)}});" - "out.join('; ')"), - njs_str("baz; fuz; muz; tax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'}, null, null, {encodeURIComponent: 123});" - "out.join('; ')"), - njs_str("TypeError: option encodeURIComponent is not a function") }, - - { njs_str("var qs = require('querystring');" - "qs.escape = 123;" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'})"), - njs_str("TypeError: QueryString.escape is not a function") }, - - { njs_str("var qs = require('querystring'); var out = [];" - "qs.escape = (key) => {out.push(key)};" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'});" - "out.join('; ')"), - njs_str("baz; fuz; muz; tax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'}, '****')"), - njs_str("baz=fuz****muz=tax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'}, null, '^^^^')"), - njs_str("baz^^^^fuz&muz^^^^tax") }, - - { njs_str("var qs = require('querystring');" - "var obj = {A:'α'}; obj['δ'] = 'D';" - "var s = qs.stringify(obj,'γ=','&β'); [s, s.length]"), - njs_str("A&β%CE%B1γ=%CE%B4&βD,20") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'}, '', '')"), - njs_str("baz=fuz&muz=tax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'}, undefined, undefined)"), - njs_str("baz=fuz&muz=tax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({'baz': 'fuz', 'muz': 'tax'}, '?', '/')"), - njs_str("baz/fuz?muz/tax") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify('123')"), - njs_str("") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify(123)"), - njs_str("") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({X:{toString(){return 3}}})"), - njs_str("X=") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify({ name: undefined, age: 12 })"), - njs_str("name=&age=12") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify(Object.create({ name: undefined, age: 12 }))"), - njs_str("") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify([])"), - njs_str("") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify(['','',''])"), - njs_str("0=&1=&2=") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify([undefined, null, Symbol(), Object(0), Object('test'), Object(false),,,])"), - njs_str("0=&1=&2=&3=&4=&5=") }, - -#if 0 - { njs_str("var qs = require('querystring');" - "qs.stringify([NaN, Infinity, -Infinity, 2**69, 2**70])"), - njs_str("0=&1=&2=&3=590295810358705700000&4=1.1805916207174113e%2B21") }, -#else - { njs_str("var qs = require('querystring');" - "qs.stringify([NaN, Infinity, -Infinity, 2**69, 2**70])"), - njs_str("0=&1=&2=&3=590295810358705700000&4=1.1805916207174114e%2B21") }, -#endif - - { njs_str("var qs = require('querystring');" - "qs.stringify([[1,2,3],[4,5,6]])"), - njs_str("0=1&0=2&0=3&1=4&1=5&1=6") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify([['a',,,],['b',,,]])"), - njs_str("0=a&0=&0=&1=b&1=&1=") }, - - { njs_str("var qs = require('querystring');" - "qs.stringify([[,'a','b',,]])"), - njs_str("0=&0=a&0=b&0=") }, - - { njs_str("var qs = require('querystring');" - "qs.escape('abcααααdef')"), - njs_str("abc%CE%B1%CE%B1%CE%B1%CE%B1def") }, - - { njs_str("var qs = require('querystring');" - "qs.unescape('abc%CE%B1%CE%B1%CE%B1%CE%B1def')"), - njs_str("abcααααdef") }, -}; - #define NJS_XML_DOC "const xml = require('xml');" \ "let data = `<note><to b=\"bar\" a= \"foo\" >Tove</to><from>Jani</from></note>`;" \ @@ -23918,12 +23570,6 @@ static njs_test_suite_t njs_suites[] = njs_nitems(njs_crypto_module_test), njs_unit_test }, - { njs_str("querystring module"), - { .repeat = 1, .unsafe = 1 }, - njs_querystring_module_test, - njs_nitems(njs_querystring_module_test), - njs_unit_test }, - { njs_str("externals"), { .externals = 1, .repeat = 1, .unsafe = 1 }, njs_externals_test, |