// META: script=/resources/testdriver.js // META: script=/common/utils.js // META: script=resources/fledge-util.sub.js // META: script=/common/subset-tests.js // META: timeout=long // META: variant=?1-5 // META: variant=?6-10 // META: variant=?11-last "use strict;" subsetTest(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().'); subsetTest(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().'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.'); subsetTest(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.');