tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

websocket-error.any.js (2340B)


      1 // META: global=window,worker
      2 
      3 'use strict';
      4 
      5 test(() => {
      6  const error = new WebSocketError();
      7  assert_equals(error.code, 0, 'DOMException code should be 0');
      8  assert_equals(error.name, 'WebSocketError', 'name should be correct');
      9  assert_equals(error.message, '', 'DOMException message should be empty');
     10  assert_equals(error.closeCode, null, 'closeCode should be null');
     11  assert_equals(error.reason, '', 'reason should be empty');
     12 }, 'WebSocketError defaults should be correct');
     13 
     14 test(() => {
     15  const error = new WebSocketError('message', { closeCode: 3456, reason: 'reason' });
     16  assert_equals(error.code, 0, 'DOMException code should be 0');
     17  assert_equals(error.name, 'WebSocketError', 'name should be correct');
     18  assert_equals(error.message, 'message', 'DOMException message should be set');
     19  assert_equals(error.closeCode, 3456, 'closeCode should match');
     20  assert_equals(error.reason, 'reason', 'reason should match');
     21 }, 'WebSocketError should be initialised from arguments');
     22 
     23 for (const invalidCode of [999, 1001, 2999, 5000]) {
     24  test(() => {
     25    assert_throws_dom('InvalidAccessError', () => new WebSocketError('', { closeCode: invalidCode }),
     26                      'invalid code should throw an InvalidAccessError');
     27  }, `new WebSocketError with invalid code ${invalidCode} should throw`);
     28 }
     29 
     30 test(() => {
     31  const error = new WebSocketError('', { closeCode: 3333 });
     32  assert_equals(error.closeCode, 3333, 'code should be used');
     33  assert_equals(error.reason, '', 'reason should be empty');
     34 }, 'passing only close code to WebSocketError should work');
     35 
     36 test(() => {
     37  const error = new WebSocketError('', { reason: 'specified' });
     38  assert_equals(error.closeCode, 1000, 'code should be defaulted');
     39  assert_equals(error.reason, 'specified', 'reason should be used');
     40 }, 'passing a non-empty reason should cause the close code to be set to 1000');
     41 
     42 test(() => {
     43  assert_throws_dom('SyntaxError', () => new WebSocketError('', { closeCode: 1000, reason: 'x'.repeat(124) }),
     44                    'overlong reason should trigger SyntaxError');
     45 }, 'overlong reason should throw');
     46 
     47 test(() => {
     48  assert_throws_dom('SyntaxError', () => new WebSocketError('', { reason: '🔌'.repeat(32) }),
     49                    'overlong reason should throw');
     50 }, 'reason should be rejected based on utf-8 bytes, not character count');