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