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.');
|