blob: 48ce1fa26364ba5157237e34285fc6ba38137a96 [file] [log] [blame]
// META: script=/resources/testdriver.js
// META: script=/common/utils.js
// META: script=resources/fledge-util.js
// META: timeout=long
"use strict;"
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
`registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`,
reportWin:
'' },
// expectedReportUrls:
[`${createSellerBeaconUrl(uuid)}, body: `],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "",
destination: ["seller"]
});`)
);
}, 'Seller calls registerAdBeacon().');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
'',
reportWin:
`registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` },
// expectedReportUrls:
[`${createBidderBeaconUrl(uuid)}, body: `],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "",
destination: ["buyer"]
});`)
);
}, 'Buyer calls registerAdBeacon().');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
`registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`,
reportWin:
'' },
// expectedReportUrls:
[`${createSellerBeaconUrl(uuid)}, body: body`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body",
destination: ["seller"]
});`)
);
}, 'Seller calls registerAdBeacon(), beacon sent with body.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
'',
reportWin:
`registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` },
// expectedReportUrls:
[`${createBidderBeaconUrl(uuid)}, body: body`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body",
destination: ["buyer"]
});`)
);
}, 'Buyer calls registerAdBeacon(), beacon sent with body.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
`registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`,
reportWin:
'' },
// expectedReportUrls:
[`${createSellerBeaconUrl(uuid)}, body: body1`,
`${createSellerBeaconUrl(uuid)}, body: body2`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body1",
destination: ["seller"]
});
window.fence.reportEvent({
eventType: "beacon",
eventData: "body2",
destination: ["seller"]
});`)
);
}, 'Seller calls registerAdBeacon(). reportEvent() called twice.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
'',
reportWin:
`registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` },
// expectedReportUrls:
[`${createBidderBeaconUrl(uuid)}, body: body1`,
`${createBidderBeaconUrl(uuid)}, body: body2`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body1",
destination: ["buyer"]
});
window.fence.reportEvent({
eventType: "beacon",
eventData: "body2",
destination: ["buyer"]
});`)
);
}, 'Buyer calls registerAdBeacon(). reportEvent() called twice.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
`registerAdBeacon({beacon1: '${createSellerBeaconUrl(uuid, '1')}',
beacon2: '${createSellerBeaconUrl(uuid, '2')}'});`,
reportWin:
'' },
// expectedReportUrls:
[`${createSellerBeaconUrl(uuid, '1')}, body: body1`,
`${createSellerBeaconUrl(uuid, '2')}, body: body2`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon1",
eventData: "body1",
destination: ["seller"]
});
window.fence.reportEvent({
eventType: "beacon2",
eventData: "body2",
destination: ["seller"]
});`)
);
}, 'Seller calls registerAdBeacon() with multiple beacons.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
'',
reportWin:
`registerAdBeacon({beacon1: '${createBidderBeaconUrl(uuid, '1')}',
beacon2: '${createBidderBeaconUrl(uuid, '2')}'});`
},
// expectedReportUrls:
[`${createBidderBeaconUrl(uuid, '1')}, body: body1`,
`${createBidderBeaconUrl(uuid, '2')}, body: body2`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon1",
eventData: "body1",
destination: ["buyer"]
});
window.fence.reportEvent({
eventType: "beacon2",
eventData: "body2",
destination: ["buyer"]
});`)
);
}, 'Buyer calls registerAdBeacon() with multiple beacons.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
`registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`,
reportWin:
`registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` },
// expectedReportUrls:
[`${createSellerBeaconUrl(uuid)}, body: body`,
`${createBidderBeaconUrl(uuid)}, body: body`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body",
destination: ["seller","buyer"]
});`)
);
}, 'Seller and buyer call registerAdBeacon() with shared reportEvent() call.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
`registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`,
reportWin:
`registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` },
// expectedReportUrls:
[`${createSellerBeaconUrl(uuid)}, body: body1`,
`${createBidderBeaconUrl(uuid)}, body: body2`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body1",
destination: ["seller"]
});
window.fence.reportEvent({
eventType: "beacon",
eventData: "body2",
destination: ["buyer"]
});`)
);
}, 'Seller and buyer call registerAdBeacon() with separate reportEvent() calls.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
// Multiple registerAdBeacon() call should result in an exception,
// throwing away all beacons and other types of reports.
`sendReportTo('${createSellerReportUrl(uuid)}');
registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});
registerAdBeacon({beacon1: '${createSellerBeaconUrl(uuid)}'});`,
reportWinSuccessCondition:
'sellerSignals === null',
reportWin:
`registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});` },
// expectedReportUrls:
[`${createBidderBeaconUrl(uuid)}, body: body`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body",
destination: ["seller","buyer"]
});`)
);
}, 'Seller calls registerAdBeacon() multiple times.');
promise_test(async test => {
const uuid = generateUuid(test);
await runReportTest(
test, uuid,
{ reportResult:
`registerAdBeacon({beacon: '${createSellerBeaconUrl(uuid)}'});`,
reportWin:
// Multiple registerAdBeacon() call should result in an exception,
// throwing away all beacons and other types of reports.
`sendReportTo('${createBidderReportUrl(uuid)}');
registerAdBeacon({beacon: '${createBidderBeaconUrl(uuid)}'});
registerAdBeacon({beacon1: '${createBidderBeaconUrl(uuid)}'});` },
// expectedReportUrls:
[`${createSellerBeaconUrl(uuid)}, body: body`],
// renderUrlOverride:
createRenderUrl(
uuid,
`window.fence.reportEvent({
eventType: "beacon",
eventData: "body",
destination: ["seller","buyer"]
});`)
);
}, 'Buyer calls registerAdBeacon() multiple times.');