tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

register-ad-beacon.https.window.js (10015B)


      1 // META: script=/resources/testdriver.js
      2 // META: script=/resources/testdriver-vendor.js
      3 // META: script=/common/utils.js
      4 // META: script=resources/fledge-util.sub.js
      5 // META: script=/common/subset-tests.js
      6 // META: timeout=long
      7 // META: variant=?1-5
      8 // META: variant=?6-10
      9 // META: variant=?11-last
     10 
     11 "use strict";
     12 
     13 subsetTest(promise_test, async test => {
     14  const uuid = generateUuid(test);
     15  await runReportTest(
     16      test, uuid,
     17      { reportResult:
     18          `registerAdBeacon({beacon: '${createSellerBeaconURL(uuid)}'});`,
     19        reportWin:
     20          '' },
     21      // expectedReportURLs:
     22      [`${createSellerBeaconURL(uuid)}, body: `],
     23      // renderURLOverride:
     24      createRenderURL(
     25          uuid,
     26          `window.fence.reportEvent({
     27              eventType: "beacon",
     28              eventData: "",
     29              destination: ["seller"]
     30          });`)
     31  );
     32 }, 'Seller calls registerAdBeacon().');
     33 
     34 subsetTest(promise_test, async test => {
     35  const uuid = generateUuid(test);
     36  await runReportTest(
     37      test, uuid,
     38      { reportResult:
     39          '',
     40        reportWin:
     41          `registerAdBeacon({beacon: '${createBidderBeaconURL(uuid)}'});`
     42      },
     43      // expectedReportURLs:
     44      [`${createBidderBeaconURL(uuid)}, body: `],
     45      // renderURLOverride:
     46      createRenderURL(
     47          uuid,
     48          `window.fence.reportEvent({
     49              eventType: "beacon",
     50              eventData: "",
     51              destination: ["buyer"]
     52          });`)
     53  );
     54 }, 'Buyer calls registerAdBeacon().');
     55 
     56 subsetTest(promise_test, async test => {
     57  const uuid = generateUuid(test);
     58  await runReportTest(
     59      test, uuid,
     60      { reportResult:
     61          `registerAdBeacon({beacon: '${createSellerBeaconURL(uuid)}'});`,
     62        reportWin:
     63          '' },
     64      // expectedReportURLs:
     65      [`${createSellerBeaconURL(uuid)}, body: body`],
     66      // renderURLOverride:
     67      createRenderURL(
     68          uuid,
     69          `window.fence.reportEvent({
     70              eventType: "beacon",
     71              eventData: "body",
     72              destination: ["seller"]
     73          });`)
     74  );
     75 }, 'Seller calls registerAdBeacon(), beacon sent with body.');
     76 
     77 subsetTest(promise_test, async test => {
     78  const uuid = generateUuid(test);
     79  await runReportTest(
     80      test, uuid,
     81      { reportResult:
     82          '',
     83        reportWin:
     84          `registerAdBeacon({beacon: '${createBidderBeaconURL(uuid)}'});` },
     85      // expectedReportURLs:
     86      [`${createBidderBeaconURL(uuid)}, body: body`],
     87      // renderURLOverride:
     88      createRenderURL(
     89          uuid,
     90          `window.fence.reportEvent({
     91              eventType: "beacon",
     92              eventData: "body",
     93              destination: ["buyer"]
     94          });`)
     95  );
     96 }, 'Buyer calls registerAdBeacon(), beacon sent with body.');
     97 
     98 subsetTest(promise_test, async test => {
     99  const uuid = generateUuid(test);
    100  await runReportTest(
    101      test, uuid,
    102      { reportResult:
    103          `registerAdBeacon({beacon: '${createSellerBeaconURL(uuid)}'});`,
    104        reportWin:
    105          '' },
    106      // expectedReportURLs:
    107      [`${createSellerBeaconURL(uuid)}, body: body1`,
    108      `${createSellerBeaconURL(uuid)}, body: body2`],
    109      // renderURLOverride:
    110      createRenderURL(
    111          uuid,
    112          `window.fence.reportEvent({
    113              eventType: "beacon",
    114              eventData: "body1",
    115              destination: ["seller"]
    116          });
    117          window.fence.reportEvent({
    118              eventType: "beacon",
    119              eventData: "body2",
    120              destination: ["seller"]
    121          });`)
    122  );
    123 }, 'Seller calls registerAdBeacon(). reportEvent() called twice.');
    124 
    125 subsetTest(promise_test, async test => {
    126  const uuid = generateUuid(test);
    127  await runReportTest(
    128      test, uuid,
    129      { reportResult:
    130          '',
    131        reportWin:
    132          `registerAdBeacon({beacon: '${createBidderBeaconURL(uuid)}'});` },
    133      // expectedReportURLs:
    134      [`${createBidderBeaconURL(uuid)}, body: body1`,
    135       `${createBidderBeaconURL(uuid)}, body: body2`],
    136      // renderURLOverride:
    137      createRenderURL(
    138          uuid,
    139          `window.fence.reportEvent({
    140              eventType: "beacon",
    141              eventData: "body1",
    142              destination: ["buyer"]
    143          });
    144          window.fence.reportEvent({
    145              eventType: "beacon",
    146              eventData: "body2",
    147              destination: ["buyer"]
    148          });`)
    149  );
    150 }, 'Buyer calls registerAdBeacon(). reportEvent() called twice.');
    151 
    152 subsetTest(promise_test, async test => {
    153  const uuid = generateUuid(test);
    154  await runReportTest(
    155      test, uuid,
    156      { reportResult:
    157        `registerAdBeacon({beacon1: '${createSellerBeaconURL(uuid, '1')}',
    158                             beacon2: '${createSellerBeaconURL(uuid, '2')}'});`,
    159        reportWin:
    160          '' },
    161      // expectedReportURLs:
    162      [`${createSellerBeaconURL(uuid, '1')}, body: body1`,
    163       `${createSellerBeaconURL(uuid, '2')}, body: body2`],
    164      // renderURLOverride:
    165      createRenderURL(
    166          uuid,
    167          `window.fence.reportEvent({
    168              eventType: "beacon1",
    169              eventData: "body1",
    170              destination: ["seller"]
    171          });
    172          window.fence.reportEvent({
    173              eventType: "beacon2",
    174              eventData: "body2",
    175              destination: ["seller"]
    176          });`)
    177  );
    178 }, 'Seller calls registerAdBeacon() with multiple beacons.');
    179 
    180 subsetTest(promise_test, async test => {
    181  const uuid = generateUuid(test);
    182  await runReportTest(
    183      test, uuid,
    184      { reportResult:
    185          '',
    186        reportWin:
    187          `registerAdBeacon({beacon1: '${createBidderBeaconURL(uuid, '1')}',
    188                             beacon2: '${createBidderBeaconURL(uuid, '2')}'});`
    189      },
    190      // expectedReportURLs:
    191      [`${createBidderBeaconURL(uuid, '1')}, body: body1`,
    192       `${createBidderBeaconURL(uuid, '2')}, body: body2`],
    193      // renderURLOverride:
    194      createRenderURL(
    195          uuid,
    196          `window.fence.reportEvent({
    197              eventType: "beacon1",
    198              eventData: "body1",
    199              destination: ["buyer"]
    200          });
    201          window.fence.reportEvent({
    202              eventType: "beacon2",
    203              eventData: "body2",
    204              destination: ["buyer"]
    205          });`)
    206  );
    207 }, 'Buyer calls registerAdBeacon() with multiple beacons.');
    208 
    209 subsetTest(promise_test, async test => {
    210  const uuid = generateUuid(test);
    211  await runReportTest(
    212      test, uuid,
    213      { reportResult:
    214          `registerAdBeacon({beacon: '${createSellerBeaconURL(uuid)}'});`,
    215        reportWin:
    216          `registerAdBeacon({beacon: '${createBidderBeaconURL(uuid)}'});` },
    217      // expectedReportURLs:
    218      [`${createSellerBeaconURL(uuid)}, body: body`,
    219       `${createBidderBeaconURL(uuid)}, body: body`],
    220      // renderURLOverride:
    221      createRenderURL(
    222          uuid,
    223          `window.fence.reportEvent({
    224              eventType: "beacon",
    225              eventData: "body",
    226              destination: ["seller","buyer"]
    227          });`)
    228  );
    229 }, 'Seller and buyer call registerAdBeacon() with shared reportEvent() call.');
    230 
    231 subsetTest(promise_test, async test => {
    232  const uuid = generateUuid(test);
    233  await runReportTest(
    234      test, uuid,
    235      { reportResult:
    236          `registerAdBeacon({beacon: '${createSellerBeaconURL(uuid)}'});`,
    237        reportWin:
    238          `registerAdBeacon({beacon: '${createBidderBeaconURL(uuid)}'});` },
    239      // expectedReportURLs:
    240      [`${createSellerBeaconURL(uuid)}, body: body1`,
    241       `${createBidderBeaconURL(uuid)}, body: body2`],
    242      // renderURLOverride:
    243      createRenderURL(
    244          uuid,
    245          `window.fence.reportEvent({
    246            eventType: "beacon",
    247            eventData: "body1",
    248            destination: ["seller"]
    249          });
    250          window.fence.reportEvent({
    251              eventType: "beacon",
    252              eventData: "body2",
    253              destination: ["buyer"]
    254          });`)
    255  );
    256 }, 'Seller and buyer call registerAdBeacon() with separate reportEvent() calls.');
    257 
    258 subsetTest(promise_test, async test => {
    259  const uuid = generateUuid(test);
    260  await runReportTest(
    261      test, uuid,
    262      { reportResult:
    263          // Multiple registerAdBeacon() call should result in an exception,
    264          // throwing away all beacons and other types of reports.
    265          `sendReportTo('${createSellerReportURL(uuid)}');
    266           registerAdBeacon({beacon: '${createSellerBeaconURL(uuid)}'});
    267           registerAdBeacon({beacon1: '${createSellerBeaconURL(uuid)}'});`,
    268        reportWinSuccessCondition:
    269          'sellerSignals === null',
    270        reportWin:
    271          `registerAdBeacon({beacon: '${createBidderBeaconURL(uuid)}'});` },
    272      // expectedReportURLs:
    273      [`${createBidderBeaconURL(uuid)}, body: body`],
    274      // renderURLOverride:
    275      createRenderURL(
    276          uuid,
    277          `window.fence.reportEvent({
    278              eventType: "beacon",
    279              eventData: "body",
    280              destination: ["seller","buyer"]
    281          });`)
    282  );
    283 }, 'Seller calls registerAdBeacon() multiple times.');
    284 
    285 subsetTest(promise_test, async test => {
    286  const uuid = generateUuid(test);
    287  await runReportTest(
    288      test, uuid,
    289      { reportResult:
    290          `registerAdBeacon({beacon: '${createSellerBeaconURL(uuid)}'});`,
    291        reportWin:
    292          // Multiple registerAdBeacon() call should result in an exception,
    293          // throwing away all beacons and other types of reports.
    294          `sendReportTo('${createBidderReportURL(uuid)}');
    295           registerAdBeacon({beacon: '${createBidderBeaconURL(uuid)}'});
    296           registerAdBeacon({beacon1: '${createBidderBeaconURL(uuid)}'});` },
    297      // expectedReportURLs:
    298      [`${createSellerBeaconURL(uuid)}, body: body`],
    299      // renderURLOverride:
    300      createRenderURL(
    301          uuid,
    302          `window.fence.reportEvent({
    303              eventType: "beacon",
    304              eventData: "body",
    305              destination: ["seller","buyer"]
    306          });`)
    307  );
    308 }, 'Buyer calls registerAdBeacon() multiple times.');