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.');