test(function() {
    var params = new URLSearchParams('a=1&a=2&a=3');
    assert_true(params.has('a'), 'Search params object has name "a"');
    assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"');
    params.set('first', 4);
    assert_true(params.has('a'), 'Search params object has name "a"');
    assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"');
    params.set('a', 4);
    assert_true(params.has('a'), 'Search params object has name "a"');
    assert_equals(params.get('a'), '4', 'Search params object has name "a" with value "4"');
}, 'URLSearchParams.set');
test(function() {
    var params = new URLSearchParams('a=b&c=d&&');
    params.append('first', 1);
    params.append('first', 2);
    assert_true(params.has('a'), 'Search params object has name "a"');
    assert_true(params.has('c'), 'Search params object has name "c"');
    assert_true(params.has('first'), 'Search params object has name "first"');
    assert_false(params.has('d'), 'Search params object has no name "d"');
    params.delete('first');
    assert_false(params.has('first'), 'Search params object has no name "first"');
}, 'has() following delete()');
test(function() {
    var params = new URLSearchParams();
    params.append('first', 1);
    assert_true(params.has('first'), 'Search params object has name "first"');
    assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
    params.delete('first');
    assert_false(params.has('first'), 'Search params object has no "first" name');
    params.append('first', 1);
    params.append('first', 10);
    params.delete('first');
    assert_false(params.has('first'), 'Search params object has no "first" name');
}, 'Deleting appended multiple');
Example #4
0
test(function() {
    var seed = new URLSearchParams('a=b&c=d');
    var params = new URLSearchParams(seed);
    assert_true(params != null, 'constructor returned non-null value.');
    assert_equals(params.get('a'), 'b');
    assert_equals(params.get('c'), 'd');
    assert_false(params.has('d'));
    // The name-value pairs are copied when created; later updates
    // should not be observable.
    seed.append('e', 'f');
    assert_false(params.has('e'));
    params.append('g', 'h');
    assert_false(seed.has('g'));
}, 'URLSearchParams constructor, object.');
function has(n, param) {
  const params = new URLSearchParams(str);

  bench.start();
  for (var i = 0; i < n; i += 1)
    params.has(param);
  bench.end(n);
}
Example #6
0
test(function() {
    var params = new URLSearchParams('a=b');
    assert_true(params != null, 'constructor returned non-null value.');
    assert_true(params.has('a'), 'Search params object has name "a"');
    assert_false(params.has('b'), 'Search params object has not got name "b"');
    var params = new URLSearchParams('a=b&c');
    assert_true(params != null, 'constructor returned non-null value.');
    assert_true(params.has('a'), 'Search params object has name "a"');
    assert_true(params.has('c'), 'Search params object has name "c"');
    var params = new URLSearchParams('&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8');
    assert_true(params != null, 'constructor returned non-null value.');
    assert_true(params.has('a'), 'Search params object has name "a"');
    assert_true(params.has('a b'), 'Search params object has name "a b"');
    assert_true(params.has(' '), 'Search params object has name " "');
    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øø"');
}, 'URLSearchParams constructor, string.');
test(function() {
    var params = new URLSearchParams('a=1&a=2&a=3&a');
    assert_true(params.has('a'), 'Search params object has name "a"');
    var matches = params.getAll('a');
    assert_true(matches && matches.length == 4, 'Search params object has values for name "a"');
    assert_array_equals(matches, ['1', '2', '3', ''], 'Search params object has expected name "a" values');
    params.set('a', 'one');
    assert_equals(params.get('a'), 'one', 'Search params object has name "a" with value "one"');
    var matches = params.getAll('a');
    assert_true(matches && matches.length == 1, 'Search params object has values for name "a"');
    assert_array_equals(matches, ['one'], 'Search params object has expected name "a" values');
}, 'getAll() multiples');
Example #8
0
test(function() {
    var params = new URLSearchParams();
    params.append('first', 1);
    params.append('second', 2);
    params.append('third', '');
    params.append('first', 10);
    assert_true(params.has('first'), 'Search params object has name "first"');
    assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
    assert_equals(params.get('second'), '2', 'Search params object has name "second" with value "2"');
    assert_equals(params.get('third'), '', 'Search params object has name "third" with value ""');
    params.append('first', 10);
    assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
}, 'Append multiple');
test(function() {
    var params = new URLSearchParams('a=b&c=d');
    assert_true(params.has('a'));
    assert_true(params.has('c'));
    assert_false(params.has('e'));
    params = new URLSearchParams('a=b&c=d&a=e');
    assert_true(params.has('a'));
    params = new URLSearchParams('=b&c=d');
    assert_true(params.has(''));
    params = new URLSearchParams('null=a');
    assert_true(params.has(null));
}, 'Has basics');
Example #10
0
  function sendResponse(statusCode, data) {
    const headers = {'Access-Control-Allow-Origin': '*'};

    if (filePath.endsWith('.js')) {
      headers['Content-Type'] = 'text/javascript';
    } else if (filePath.endsWith('.css')) {
      headers['Content-Type'] = 'text/css';
    } else if (filePath.endsWith('.svg')) {
      headers['Content-Type'] = 'image/svg+xml';
    } else if (filePath.endsWith('.png')) {
      headers['Content-Type'] = 'image/png';
    } else if (filePath.endsWith('.gif')) {
      headers['Content-Type'] = 'image/gif';
    } else if (filePath.endsWith('.jpg') || filePath.endsWith('.jpeg')) {
      headers['Content-Type'] = 'image/jpeg';
    } else if (filePath.endsWith('.webp')) {
      headers['Content-Type'] = 'image/webp';
    } else if (filePath.endsWith('.json')) {
      headers['Content-Type'] = 'application/json';
    }

    let delay = 0;
    let useGzip = false;
    if (queryString) {
      const params = new URLSearchParams(queryString);
      // set document status-code
      if (params.has('status_code')) {
        statusCode = parseInt(params.get('status_code'), 10);
      }

      // set delay of request when present
      if (params.has('delay')) {
        delay = parseInt(params.get('delay'), 10) || 2000;
      }

      if (params.has('extra_header')) {
        const extraHeaders = new URLSearchParams(params.get('extra_header'));
        for (const [headerName, headerValue] of extraHeaders) {
          if (HEADER_SAFELIST.has(headerName.toLowerCase())) {
            headers[headerName] = headers[headerName] || [];
            headers[headerName].push(headerValue);
          }
        }
      }

      if (params.has('gzip')) {
        useGzip = Boolean(params.get('gzip'));
      }

      // redirect url to new url if present
      if (params.has('redirect')) {
        return setTimeout(sendRedirect, delay, params.get('redirect'));
      }
    }

    if (useGzip) {
      data = zlib.gzipSync(data);
      headers['Content-Encoding'] = 'gzip';
    }

    response.writeHead(statusCode, headers);

    // Delay the response
    if (delay > 0) {
      return setTimeout(finishResponse, delay, data);
    }

    finishResponse(data);
  }