Skip to content

Commit

Permalink
Add test cases for URLSearchParams parsing %
Browse files Browse the repository at this point in the history
  • Loading branch information
ijjk authored and domenic committed Jun 15, 2020
1 parent 16bf932 commit c79fe56
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
6 changes: 5 additions & 1 deletion url/urlencoded-parser.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@
{ "input": '%a=a', "output": [['%a', 'a']] },
{ "input": '%a_=a', "output": [['%a_', 'a']] },
{ "input": '%61=a', "output": [['a', 'a']] },
{ "input": '%61+%4d%4D=', "output": [['a MM', '']] }
{ "input": '%61+%4d%4D=', "output": [['a MM', '']] },
{ "input": "id=0&value=%", "output": [['id', '0'], ['value', '%']] },
{ "input": "b=%2sf%2a", "output": [['b', '%2sf*']]},
{ "input": "b=%2%2af%2a", "output": [['b', '%2*f*']]},
{ "input": "b=%%2a", "output": [['b', '%*']]}
].forEach((val) => {
test(() => {
let sp = new URLSearchParams(val.input),
Expand Down
22 changes: 22 additions & 0 deletions url/urlsearchparams-constructor.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,28 @@ test(function() {
assert_false(params.has('c'), 'Search params object did not have the name "c"');
assert_true(params.has(' c'), 'Search params object has name " c"');
assert_true(params.has('møø'), 'Search params object has name "møø"');

params = new URLSearchParams('id=0&value=%');
assert_true(params != null, 'constructor returned non-null value.');
assert_true(params.has('id'), 'Search params object has name "id"');
assert_true(params.has('value'), 'Search params object has name "value"');
assert_equals(params.get('id'), '0');
assert_equals(params.get('value'), '%');

params = new URLSearchParams('b=%2sf%2a');
assert_true(params != null, 'constructor returned non-null value.');
assert_true(params.has('b'), 'Search params object has name "b"');
assert_equals(params.get('b'), '%2sf*');

params = new URLSearchParams('b=%2%2af%2a');
assert_true(params != null, 'constructor returned non-null value.');
assert_true(params.has('b'), 'Search params object has name "b"');
assert_equals(params.get('b'), '%2*f*');

params = new URLSearchParams('b=%%2a');
assert_true(params != null, 'constructor returned non-null value.');
assert_true(params.has('b'), 'Search params object has name "b"');
assert_equals(params.get('b'), '%*');
}, 'URLSearchParams constructor, string.');

test(function() {
Expand Down
12 changes: 12 additions & 0 deletions url/urlsearchparams-stringifier.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ test(function() {
params.delete('a');
params.append('a%b', 'c');
assert_equals(params + '', 'a%25b=c');

params = new URLSearchParams('id=0&value=%')
assert_equals(params + '', 'id=0&value=%25')
}, 'Serialize %');

test(function() {
Expand Down Expand Up @@ -107,6 +110,15 @@ test(function() {
// The lone '=' _does_ survive the roundtrip.
params = new URLSearchParams('a=&a=b');
assert_equals(params.toString(), 'a=&a=b');

params = new URLSearchParams('b=%2sf%2a');
assert_equals(params.toString(), 'b=%252sf*');

params = new URLSearchParams('b=%2%2af%2a');
assert_equals(params.toString(), 'b=%252*f*');

params = new URLSearchParams('b=%%2a');
assert_equals(params.toString(), 'b=%25*');
}, 'URLSearchParams.toString');

test(() => {
Expand Down

0 comments on commit c79fe56

Please sign in to comment.