summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/pending-beacon/pending_post_beacon-sendwithdata.tentative.https.window.js
blob: 77e91479e8b990b2b8240dc3fd6853e4d25ab980 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// META: script=/common/utils.js
// META: script=./resources/pending_beacon-helper.js

'use strict';

// Test empty data.
for (const dataType in BeaconDataType) {
  postBeaconSendDataTest(
      dataType, '', `Sent empty ${dataType}, and server got no data.`, {
        expectNoData: true,
      });
}

// Test small payload.
for (const [dataType, skipCharset] of Object.entries(
         BeaconDataTypeToSkipCharset)) {
  postBeaconSendDataTest(
      dataType, generateSequentialData(0, 1024, skipCharset),
      'Encoded and sent in POST request.');
}

// Test large payload.
for (const dataType in BeaconDataType) {
  postBeaconSendDataTest(
      dataType, generatePayload(65536), 'Sent out big data.');
}

test(() => {
  const uuid = token();
  const url = generateSetBeaconURL(uuid);
  let beacon = new PendingPostBeacon(url);
  assert_throws_js(TypeError, () => beacon.setData(new ReadableStream()));
}, 'setData() does not support ReadableStream.');

test(() => {
  const uuid = token();
  const url = generateSetBeaconURL(uuid);
  let beacon = new PendingPostBeacon(url);
  const formData = new FormData();
  formData.append('part1', 'value1');
  formData.append('part2', new Blob(['value2']), 'file.txt');
  assert_throws_js(RangeError, () => beacon.setData(formData));
}, 'setData() does not support multi-parts data.');