tor-browser

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

reporting-arguments.https.window.js (12280B)


      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-15
     10 // META: variant=?16-last
     11 
     12 "use strict";
     13 
     14 // Simplified version of reportTest() for validating arguments to reporting
     15 // methods. Only takes expressions to check in reporting methods. "uuid" is
     16 // optional, and one is generated if not passed one.
     17 async function runReportArgumentValidationTest(
     18    test, reportResultSuccessCondition, reportWinSuccessCondition, uuid) {
     19  if (!uuid)
     20    uuid = generateUuid(test);
     21  await runReportTest(
     22      test, uuid,
     23      { reportResultSuccessCondition:
     24          reportResultSuccessCondition,
     25        reportResult:
     26          `sendReportTo('${createSellerReportURL(uuid)}');`,
     27        reportWinSuccessCondition:
     28          reportWinSuccessCondition,
     29        reportWin:
     30          `sendReportTo('${createBidderReportURL(uuid)}');` },
     31      [createSellerReportURL(uuid), createBidderReportURL(uuid)]
     32  );
     33 }
     34 
     35 /////////////////////////////////////////////////////////////////////
     36 // reportResult() to reportWin() message passing tests
     37 /////////////////////////////////////////////////////////////////////
     38 
     39 subsetTest(promise_test, async test => {
     40  const uuid = generateUuid(test);
     41  await runReportTest(
     42      test, uuid,
     43      { reportResult:
     44          `sendReportTo('${createSellerReportURL(uuid)}');
     45           return 45;`,
     46        reportWinSuccessCondition:
     47          'sellerSignals === 45',
     48        reportWin:
     49          `sendReportTo('${createBidderReportURL(uuid)}');` },
     50      // expectedReportURLs:
     51      [createSellerReportURL(uuid), createBidderReportURL(uuid)]
     52  );
     53 }, 'Seller passes number to bidder.');
     54 
     55 subsetTest(promise_test, async test => {
     56  const uuid = generateUuid(test);
     57  await runReportTest(
     58      test, uuid,
     59      { reportResult:
     60          `sendReportTo('${createSellerReportURL(uuid)}');
     61           return 'foo';`,
     62        reportWinSuccessCondition:
     63          'sellerSignals === "foo"',
     64        reportWin:
     65          `sendReportTo('${createBidderReportURL(uuid)}');` },
     66      // expectedReportURLs:
     67      [createSellerReportURL(uuid), createBidderReportURL(uuid)]
     68  );
     69 }, 'Seller passes string to bidder.');
     70 
     71 subsetTest(promise_test, async test => {
     72  const uuid = generateUuid(test);
     73  await runReportTest(
     74      test, uuid,
     75      { reportResult:
     76          `sendReportTo('${createSellerReportURL(uuid)}');
     77           return [3, 1, 2];`,
     78        reportWinSuccessCondition:
     79          'JSON.stringify(sellerSignals) === "[3,1,2]"',
     80        reportWin:
     81          `sendReportTo('${createBidderReportURL(uuid)}');` },
     82      // expectedReportURLs:
     83      [createSellerReportURL(uuid), createBidderReportURL(uuid)]
     84  );
     85 }, 'Seller passes array to bidder.');
     86 
     87 subsetTest(promise_test, async test => {
     88  const uuid = generateUuid(test);
     89  await runReportTest(
     90      test, uuid,
     91      { reportResult:
     92          `sendReportTo('${createSellerReportURL(uuid)}');
     93           return {a: 4, b:['c', null, {}]};`,
     94        reportWinSuccessCondition:
     95          `JSON.stringify(sellerSignals) === '{"a":4,"b":["c",null,{}]}'`,
     96        reportWin:
     97          `sendReportTo('${createBidderReportURL(uuid)}');` },
     98      // expectedReportURLs:
     99      [createSellerReportURL(uuid), createBidderReportURL(uuid)]
    100  );
    101 }, 'Seller passes object to bidder.');
    102 
    103 /////////////////////////////////////////////////////////////////////
    104 // reportResult() / reportWin() browserSignals tests.
    105 /////////////////////////////////////////////////////////////////////
    106 
    107 subsetTest(promise_test, async test => {
    108  await runReportArgumentValidationTest(
    109    test,
    110    // reportResultSuccessCondition:
    111    `browserSignals.topWindowHostname === "${window.location.hostname}"`,
    112    // reportWinSuccessCondition:
    113    `browserSignals.topWindowHostname === "${window.location.hostname}"`
    114  );
    115 }, 'browserSignals.topWindowHostname test.');
    116 
    117 subsetTest(promise_test, async test => {
    118  await runReportArgumentValidationTest(
    119    test,
    120    // reportResultSuccessCondition:
    121    `browserSignals.seller === undefined`,
    122    // reportWinSuccessCondition:
    123    `browserSignals.seller === "${window.location.origin}"`
    124  );
    125 }, 'browserSignals.seller test.');
    126 
    127 subsetTest(promise_test, async test => {
    128  await runReportArgumentValidationTest(
    129    test,
    130    // reportResultSuccessCondition:
    131    `browserSignals.topLevelSeller === undefined &&
    132     browserSignals.componentSeller === undefined`,
    133    // reportWinSuccessCondition:
    134    `browserSignals.topLevelSeller === undefined &&
    135     browserSignals.componentSeller === undefined`
    136  );
    137 }, 'browserSignals.topLevelSeller and browserSignals.componentSeller test.');
    138 
    139 subsetTest(promise_test, async test => {
    140  const uuid = generateUuid(test);
    141  await runReportArgumentValidationTest(
    142    test,
    143    // reportResultSuccessCondition:
    144    `browserSignals.renderURL === "${createRenderURL(uuid)}"`,
    145    // reportWinSuccessCondition:
    146    `browserSignals.renderURL === "${createRenderURL(uuid)}"`,
    147    uuid
    148  );
    149 }, 'browserSignals.renderURL test.');
    150 
    151 subsetTest(promise_test, async test => {
    152  await runReportArgumentValidationTest(
    153    test,
    154    // reportResultSuccessCondition:
    155    `browserSignals.bid === 9`,
    156    // reportWinSuccessCondition:
    157    `browserSignals.bid === 9`
    158  );
    159 }, 'browserSignals.bid test.');
    160 
    161 subsetTest(promise_test, async test => {
    162  await runReportArgumentValidationTest(
    163    test,
    164    // reportResultSuccessCondition:
    165    `browserSignals.desirability === 18`,
    166    // reportWinSuccessCondition:
    167    `browserSignals.desirability === undefined`
    168  );
    169 }, 'browserSignals.desirability test.');
    170 
    171 subsetTest(promise_test, async test => {
    172  await runReportArgumentValidationTest(
    173    test,
    174    // reportResultSuccessCondition:
    175    `browserSignals.topLevelSellerSignals === undefined`,
    176    // reportWinSuccessCondition:
    177    `browserSignals.topLevelSellerSignals === undefined`
    178  );
    179 }, 'browserSignals.topLevelSellerSignals test.');
    180 
    181 subsetTest(promise_test, async test => {
    182  await runReportArgumentValidationTest(
    183    test,
    184    // reportResultSuccessCondition:
    185    `browserSignals.dataVersion === undefined`,
    186    // reportWinSuccessCondition:
    187    `browserSignals.dataVersion === undefined`
    188  );
    189 }, 'browserSignals.dataVersion test.');
    190 
    191 subsetTest(promise_test, async test => {
    192  await runReportArgumentValidationTest(
    193    test,
    194    // reportResultSuccessCondition:
    195    `browserSignals.modifiedBid === undefined`,
    196    // reportWinSuccessCondition:
    197    `browserSignals.modifiedBid === undefined`
    198  );
    199 }, 'browserSignals.modifiedBid test.');
    200 
    201 subsetTest(promise_test, async test => {
    202  const uuid = generateUuid(test);
    203  await runReportArgumentValidationTest(
    204    test,
    205    // reportResultSuccessCondition:
    206    `browserSignals.highestScoringOtherBid === 0`,
    207    // reportWinSuccessCondition:
    208    `browserSignals.highestScoringOtherBid === 0`,
    209    uuid
    210  );
    211 }, 'browserSignals.highestScoringOtherBid with no other interest groups test.');
    212 
    213 subsetTest(promise_test, async test => {
    214  const uuid = generateUuid(test);
    215  await joinInterestGroup(test, uuid,
    216    {
    217      biddingLogicURL: createBiddingScriptURL({ bid: -2 }),
    218                            name: 'other interest group 1' });
    219  await joinInterestGroup(test, uuid,
    220    {
    221      biddingLogicURL: createBiddingScriptURL({ bid: -1 }),
    222                            name: 'other interest group 2' });
    223  await runReportArgumentValidationTest(
    224    test,
    225    // reportResultSuccessCondition:
    226    `browserSignals.highestScoringOtherBid === 0`,
    227    // reportWinSuccessCondition:
    228    `browserSignals.highestScoringOtherBid === 0`,
    229    uuid
    230  );
    231 }, 'browserSignals.highestScoringOtherBid with other groups that do not bid.');
    232 
    233 subsetTest(promise_test, async test => {
    234  const uuid = generateUuid(test);
    235  await joinInterestGroup(test, uuid,
    236    {
    237      biddingLogicURL: createBiddingScriptURL({ bid: 2 }),
    238                            name: 'other interest group 1' });
    239  await joinInterestGroup(test, uuid,
    240    {
    241      biddingLogicURL: createBiddingScriptURL({ bid: 5 }),
    242                            name: 'other interest group 2' });
    243  await joinInterestGroup(test, uuid,
    244    {
    245      biddingLogicURL: createBiddingScriptURL({ bid: 2 }),
    246                            name: 'other interest group 3' });
    247  await runReportArgumentValidationTest(
    248    test,
    249    // reportResultSuccessCondition:
    250    `browserSignals.highestScoringOtherBid === 5`,
    251    // reportWinSuccessCondition:
    252    `browserSignals.highestScoringOtherBid === 5`,
    253    uuid
    254  );
    255 }, 'browserSignals.highestScoringOtherBid with other bids.');
    256 
    257 subsetTest(promise_test, async test => {
    258  await runReportArgumentValidationTest(
    259    test,
    260    // reportResultSuccessCondition:
    261    `browserSignals.interestGroupName === undefined`,
    262    // reportWinSuccessCondition:
    263    `browserSignals.interestGroupName === 'default name'`
    264  );
    265 }, 'browserSignals.interestGroupName test.');
    266 
    267 subsetTest(promise_test, async test => {
    268  await runReportArgumentValidationTest(
    269    test,
    270    // reportResultSuccessCondition:
    271    `browserSignals.madeHighestScoringOtherBid === undefined`,
    272    // reportWinSuccessCondition:
    273    `browserSignals.madeHighestScoringOtherBid === false`
    274  );
    275 }, 'browserSignals.madeHighestScoringOtherBid with no other bids.');
    276 
    277 subsetTest(promise_test, async test => {
    278  const uuid = generateUuid(test);
    279  await joinInterestGroup(test, uuid,
    280    {
    281      biddingLogicURL: createBiddingScriptURL({ bid: -1 }),
    282                            name: 'other interest group 2' });
    283  await runReportArgumentValidationTest(
    284    test,
    285    // reportResultSuccessCondition:
    286    `browserSignals.madeHighestScoringOtherBid === undefined`,
    287    // reportWinSuccessCondition:
    288    `browserSignals.madeHighestScoringOtherBid === false`
    289  );
    290 }, 'browserSignals.madeHighestScoringOtherBid with group that did not bid.');
    291 
    292 subsetTest(promise_test, async test => {
    293  const uuid = generateUuid(test);
    294  await joinInterestGroup(test, uuid,
    295    {
    296      biddingLogicURL: createBiddingScriptURL({ bid: 1 }),
    297      name: 'other interest group 2' });
    298 await runReportArgumentValidationTest(
    299    test,
    300    // reportResultSuccessCondition:
    301    `browserSignals.madeHighestScoringOtherBid === undefined`,
    302    // reportWinSuccessCondition:
    303    `browserSignals.madeHighestScoringOtherBid === true`,
    304    uuid
    305  );
    306 }, 'browserSignals.madeHighestScoringOtherBid with other bid.');
    307 
    308 subsetTest(promise_test, async test => {
    309  const uuid = generateUuid(test);
    310  await runReportTest(
    311      test, uuid,
    312      { reportResultSuccessCondition:
    313          `browserSignals.reportingTimeout === undefined`,
    314        reportResult:
    315          `sendReportTo('${createSellerReportURL(uuid)}');`,
    316        reportWinSuccessCondition:
    317          'browserSignals.reportingTimeout === 100',
    318        reportWin:
    319          `sendReportTo('${createBidderReportURL(uuid)}');` },
    320      // expectedReportURLs:
    321      [createSellerReportURL(uuid), createBidderReportURL(uuid)],
    322      // renderURLOverride
    323      null,
    324      // auctionConfigOverrides
    325      {reportingTimeout: 100});
    326 }, 'browserSignals.reportingTimeout with custom value from auction config.');
    327 
    328 subsetTest(promise_test, async test => {
    329  const uuid = generateUuid(test);
    330  await runReportTest(
    331      test, uuid,
    332      { reportResultSuccessCondition:
    333          `browserSignals.reportingTimeout === undefined`,
    334        reportResult:
    335          `sendReportTo('${createSellerReportURL(uuid)}');`,
    336        reportWinSuccessCondition:
    337          'browserSignals.reportingTimeout === 5000',
    338        reportWin:
    339          `sendReportTo('${createBidderReportURL(uuid)}');` },
    340      // expectedReportURLs:
    341      [createSellerReportURL(uuid), createBidderReportURL(uuid)],
    342      // renderURLOverride
    343      null,
    344      // auctionConfigOverrides
    345      {reportingTimeout: 1234567890});
    346 }, 'browserSignals.reportingTimeout above the cap value.');
    347 
    348 subsetTest(promise_test, async test => {
    349  await runReportArgumentValidationTest(
    350    test,
    351    // reportResultSuccessCondition:
    352    `browserSignals.reportingTimeout === undefined`,
    353    // reportWinSuccessCondition:
    354    `browserSignals.reportingTimeout === 50`
    355  );
    356 }, 'browserSignals.reportingTimeout default value.');