send-report-to.https.window.js (5042B)
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-last 9 10 "use strict"; 11 12 subsetTest(promise_test, async test => { 13 const uuid = generateUuid(test); 14 await runReportTest( 15 test, uuid, 16 { reportResult: 17 `sendReportTo('${createSellerReportURL(uuid)}');`, 18 reportWinSuccessCondition: 19 'sellerSignals === null', 20 reportWin: 21 `sendReportTo('${createBidderReportURL(uuid)}');` }, 22 // expectedReportURLs: 23 [createSellerReportURL(uuid), createBidderReportURL(uuid)] 24 ); 25 }, 'Both send reports, seller passes nothing to bidder.'); 26 27 subsetTest(promise_test, async test => { 28 const uuid = generateUuid(test); 29 await runReportTest( 30 test, uuid, 31 { reportResult: 32 `sendReportTo('${createSellerReportURL(uuid)}');`, 33 reportWin: 34 '' }, 35 // expectedReportURLs: 36 [createSellerReportURL(uuid)] 37 ); 38 }, 'Only seller sends a report'); 39 40 subsetTest(promise_test, async test => { 41 const uuid = generateUuid(test); 42 await runReportTest( 43 test, uuid, 44 { reportResult: 45 `sendReportTo('${createSellerReportURL(uuid)}');`, 46 reportWin: 47 'throw new Error("Very serious exception")' }, 48 // expectedReportURLs: 49 [createSellerReportURL(uuid)] 50 ); 51 }, 'Only seller sends a report, bidder throws an exception'); 52 53 subsetTest(promise_test, async test => { 54 const uuid = generateUuid(test); 55 await runReportTest( 56 test, uuid, 57 { reportResult: 58 `sendReportTo('${createSellerReportURL(uuid)}');` }, 59 // expectedReportURLs: 60 [createSellerReportURL(uuid)] 61 ); 62 }, 'Only seller sends a report, bidder has no reportWin() method'); 63 64 subsetTest(promise_test, async test => { 65 const uuid = generateUuid(test); 66 await runReportTest( 67 test, uuid, 68 { reportResult: 69 '', 70 reportWinSuccessCondition: 71 'sellerSignals === null', 72 reportWin: 73 `sendReportTo('${createBidderReportURL(uuid)}');` }, 74 // expectedReportURLs: 75 [createBidderReportURL(uuid)] 76 ); 77 }, 'Only bidder sends a report'); 78 79 subsetTest(promise_test, async test => { 80 const uuid = generateUuid(test); 81 await runReportTest( 82 test, uuid, 83 { reportResult: 84 'return "foo";', 85 reportWinSuccessCondition: 86 'sellerSignals === "foo"', 87 reportWin: 88 `sendReportTo('${createBidderReportURL(uuid)}');` }, 89 // expectedReportURLs: 90 [createBidderReportURL(uuid)] 91 ); 92 }, 'Only bidder sends a report, seller passes a message to bidder'); 93 94 subsetTest(promise_test, async test => { 95 const uuid = generateUuid(test); 96 await runReportTest( 97 test, uuid, 98 { reportResult: 99 'throw new Error("Very serious exception")', 100 reportWinSuccessCondition: 101 'sellerSignals === null', 102 reportWin: 103 `sendReportTo('${createBidderReportURL(uuid)}');` }, 104 // expectedReportURLs: 105 [createBidderReportURL(uuid)] 106 ); 107 }, 'Only bidder sends a report, seller throws an exception'); 108 109 subsetTest(promise_test, async test => { 110 const uuid = generateUuid(test); 111 await runReportTest( 112 test, uuid, 113 { reportWinSuccessCondition: 114 'sellerSignals === null', 115 reportWin: 116 `sendReportTo('${createBidderReportURL(uuid)}');` }, 117 // expectedReportURLs: 118 [createBidderReportURL(uuid)] 119 ); 120 }, 'Only bidder sends a report, seller has no reportResult() method'); 121 122 subsetTest(promise_test, async test => { 123 const uuid = generateUuid(test); 124 await runReportTest( 125 test, uuid, 126 { reportResult: 127 `sendReportTo('${createSellerReportURL(uuid)}'); 128 sendReportTo('${createSellerReportURL(uuid)}'); 129 return 5;`, 130 reportWinSuccessCondition: 131 'sellerSignals === null', 132 reportWin: 133 `sendReportTo('${createBidderReportURL(uuid)}');` }, 134 // expectedReportURLs: 135 [createBidderReportURL(uuid)] 136 ); 137 }, 'Seller calls sendReportTo() twice, which throws an exception.'); 138 139 subsetTest(promise_test, async test => { 140 const uuid = generateUuid(test); 141 await runReportTest( 142 test, uuid, 143 { reportResult: 144 `sendReportTo('${createSellerReportURL(uuid)}');`, 145 reportWin: 146 `sendReportTo('${createBidderReportURL(uuid)}'); 147 sendReportTo('${createBidderReportURL(uuid)}');` }, 148 // expectedReportURLs: 149 [createSellerReportURL(uuid)] 150 ); 151 // Seller reports may be sent before bidder reports, since reportWin() 152 // takes output from reportResult() as input. Wait to make sure the 153 // bidder report URL really is not being requested. 154 await new Promise(resolve => test.step_timeout(resolve, 200)); 155 await waitForObservedRequests(uuid, [createSellerReportURL(uuid)]); 156 }, 'Bidder calls sendReportTo() twice, which throws an exception.');