diff options
Diffstat (limited to 'testing/web-platform/tests/fledge/tentative/direct-from-seller-signals.https.window.js')
-rw-r--r-- | testing/web-platform/tests/fledge/tentative/direct-from-seller-signals.https.window.js | 616 |
1 files changed, 616 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fledge/tentative/direct-from-seller-signals.https.window.js b/testing/web-platform/tests/fledge/tentative/direct-from-seller-signals.https.window.js new file mode 100644 index 0000000000..339bc32ee5 --- /dev/null +++ b/testing/web-platform/tests/fledge/tentative/direct-from-seller-signals.https.window.js @@ -0,0 +1,616 @@ +// 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-4 +// META: variant=?5-8 +// META: variant=?9-12 +// META: variant=?13-16 +// META: variant=?17-20 +// META: variant=?21-24 +// META: variant=?25-28 +// META: variant=?29-last + +"use strict;" + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/ null, + /*expectedAuctionSignals=*/ null, /*expectedPerBuyerSignals=*/ null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + {directFromSellerSignalsHeaderAdSlot: 'adSlot/0'}); +}, 'Test directFromSellerSignals with empty Ad-Auction-Signals header.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/1', + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/1' } + ); +}, 'Test directFromSellerSignals with only sellerSignals.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + 'auctionSignals/2', /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/2' } + ); +}, 'Test directFromSellerSignals with only auctionSignals.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, 'perBuyerSignals/3'), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/3' } + ); +}, 'Test directFromSellerSignals with only perBuyerSignals.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4' } + ); +}, 'Test directFromSellerSignals with sellerSignals, auctionSignals and perBuyerSignals.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/1', + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/1' } + ); + + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + 'auctionSignals/2', /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/2' } + ); +}, 'Test directFromSellerSignals with single fetch and multiple auctions'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + const ad_slot = Promise.resolve('adSlot/4'); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: ad_slot } + ); +}, 'Test directFromSellerSignals with resolved promise ad slot.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await joinInterestGroup(test, uuid); + + const adSlot = Promise.reject(new Error('This is a rejected promise.')); + let auctionConfig = + { seller: window.location.origin, + interestGroupBuyers: [window.location.origin], + resolveToConfig: true, + decisionLogicURL: createDecisionScriptURL(uuid), + directFromSellerSignalsHeaderAdSlot: adSlot }; + + try { + await navigator.runAdAuction(auctionConfig); + } catch(e) { + assert_true(e instanceof TypeError); + return; + } + throw "Exception unexpectedly not thrown."; +}, 'Test directFromSellerSignals with rejected promise ad slot.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + const validator = directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'); + let reportResult = `if (!(${validator.reportResultSuccessCondition})) { + sendReportTo('${createSellerReportURL(uuid, 'error')}'); + return false; + } + ${validator.reportResult}`; + let reportWin = `if (!(${validator.reportWinSuccessCondition})) { + sendReportTo('${createBidderReportURL(uuid, 'error')}'); + return false; + } + ${validator.reportWin}`; + let decisionScriptURLParams = { scoreAd : validator.scoreAd, + reportResult : reportResult }; + let biddingScriptURLParams = { generateBid : validator.generateBid, + reportWin : reportWin }; + let interestGroupOverrides = + { biddingLogicURL: createBiddingScriptURL(biddingScriptURLParams) }; + await joinInterestGroup(test, uuid, interestGroupOverrides); + + let adSlotResolve = null; + const adSlotPromise = new Promise((resolve, reject) => { adSlotResolve = resolve }); + let auctionConfig = + { seller: window.location.origin, + interestGroupBuyers: [window.location.origin], + resolveToConfig: true, + decisionLogicURL: createDecisionScriptURL(uuid, decisionScriptURLParams), + directFromSellerSignalsHeaderAdSlot: adSlotPromise }; + let resultPromise = navigator.runAdAuction(auctionConfig); + + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + adSlotResolve('adSlot/4'); + let result = await resultPromise; + createAndNavigateFencedFrame(test, result); + await waitForObservedRequests(uuid, [createSellerReportURL(uuid), createBidderReportURL(uuid)]); +}, 'Test directFromSellerSignals that runAdAuction will wait until the promise of fetch is resolved.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/5', + 'auctionSignals/5', /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/5' } + ); +}, 'Test directFromSellerSignals with mismatched perBuyerSignals.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': '*' }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/5', + 'auctionSignals/5', /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/5' } + ); +}, 'Test directFromSellerSignals does not support wildcard for buyerOrigin of perBuyerSignals.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/non-exist' } + ); +}, 'Test directFromSellerSignals with non-existent adSlot.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: null } + ); +}, 'Test directFromSellerSignals with null directFromSellerSignalsHeaderAdSlot.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + [createSellerReportURL(uuid), createBidderReportURL(uuid)] + ); +}, 'Test directFromSellerSignals with no directFromSellerSignalsHeaderAdSlot.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Negative-Test-Option': 'HTTP Error' }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot' } + ); +}, 'Test directFromSellerSignals with HTTP error.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Negative-Test-Option': 'No Ad-Auction-Signals Header' }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot' } + ); +}, 'Test directFromSellerSignals with no returned Ad-Auction-Signals Header.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Negative-Test-Option': 'Invalid Json' }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot' } + ); +}, 'Test directFromSellerSignals with invalid json in Ad-Auction-Signals header.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let codeToInsert = directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null); + codeToInsert.decisionScriptURLOrigin = OTHER_ORIGIN1; + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test, uuid, codeToInsert, + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4', + seller: OTHER_ORIGIN1 } + ); +}, 'Test directFromSellerSignals with different fetch and seller origins.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let codeToInsert = directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'); + codeToInsert.decisionScriptURLOrigin = OTHER_ORIGIN1; + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }, OTHER_ORIGIN1); + await runReportTest( + test, uuid, codeToInsert, + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4', + seller: OTHER_ORIGIN1 } + ); +}, 'Test directFromSellerSignals with same fetch and seller origins.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let iframe = await createIframe(test, OTHER_ORIGIN1); + await runInFrame(test, iframe, `await joinInterestGroup(test_instance, "${uuid}");`); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': OTHER_ORIGIN1 }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid, '1', OTHER_ORIGIN1)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4', + interestGroupBuyers: [OTHER_ORIGIN1] } + ); +}, 'Test directFromSellerSignals different interest group owner origin from top frame.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let iframe = await createIframe(test, OTHER_ORIGIN1, "join-ad-interest-group; run-ad-auction"); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': OTHER_ORIGIN1 }, OTHER_ORIGIN1); + await runInFrame( + test, iframe, + `await runReportTest( + test_instance, "${uuid}", + directFromSellerSignalsValidatorCode( + "${uuid}", 'sellerSignals/4', 'auctionSignals/4', 'perBuyerSignals/4'), + // expectedReportUrls + [createSellerReportURL("${uuid}"), createBidderReportURL("${uuid}")], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4' })`); +}, 'Test directFromSellerSignals with fetching in top frame and running auction in iframe.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let iframe = await createIframe(test, OTHER_ORIGIN1, "join-ad-interest-group; run-ad-auction"); + await runInFrame( + test, iframe, + `await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await runReportTest( + test_instance, "${uuid}", + directFromSellerSignalsValidatorCode( + "${uuid}", 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'), + // expectedReportUrls + [createSellerReportURL("${uuid}"), createBidderReportURL("${uuid}")], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4' })`); +}, 'Test directFromSellerSignals with fetching and running auction in the same iframe.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let iframe1 = await createIframe(test, OTHER_ORIGIN1); + let iframe2 = await createIframe(test, OTHER_ORIGIN2, "join-ad-interest-group; run-ad-auction"); + await runInFrame( + test, iframe1, + `await fetchDirectFromSellerSignals({ 'Buyer-Origin': OTHER_ORIGIN2 }, OTHER_ORIGIN2);`); + await runInFrame( + test, iframe2, + `await runReportTest( + test_instance, "${uuid}", + directFromSellerSignalsValidatorCode( + "${uuid}", 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'), + // expectedReportUrls + [createSellerReportURL("${uuid}"), createBidderReportURL("${uuid}")], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4' })`); +}, 'Test directFromSellerSignals with fetching in iframe 1 and running auction in iframe 2.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let iframe = await createIframe(test, OTHER_ORIGIN1); + await runInFrame( + test, iframe, + `await fetchDirectFromSellerSignals( + { 'Buyer-Origin': "${window.location.origin}" }, "${window.location.origin}");`); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals/4', + 'auctionSignals/4', 'perBuyerSignals/4'), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/4'} + ); +}, 'Test directFromSellerSignals with fetching in iframe and running auction in top frame.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Negative-Test-Option': 'Network Error' }); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sellerSignals', + 'auctionSignals', /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot' } + ); +}, 'Test directFromSellerSignals with network error.'); + +subsetTest(promise_test, async test => { + let dfss = false; + navigator.runAdAuction({ + get directFromSellerSignalsHeaderAdSlot() { dfss = true; } + }).catch((e) => {}); + assert_true(dfss); +}, 'Test directFromSellerSignals feature detection.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await fetchDirectFromSellerSignals( + { 'Buyer-Origin': window.location.origin, 'Alternative-Response': 'Overwrite adSlot/1'}); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'altSellerSignals/1', + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/1' } + ); +}, 'Test directFromSellerSignals with 2 responses -- the later overwrites the former.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await fetchDirectFromSellerSignals( + { 'Buyer-Origin': window.location.origin, 'Alternative-Response': 'Overwrite adSlot/1'}); + await fetchDirectFromSellerSignals( + { 'Buyer-Origin': window.location.origin, 'Alternative-Response': 'Overwrite adSlot/1 v2'}); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'altV2SellerSignals/1', + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/1' } + ); +}, 'Test directFromSellerSignals with 3 responses -- the last response overwrites the former responses.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals({ 'Buyer-Origin': window.location.origin }); + await fetchDirectFromSellerSignals( + { 'Buyer-Origin': window.location.origin, 'Alternative-Response': 'Overwrite adSlot/1'}); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, /*expectedSellerSignals=*/null, + 'auctionSignals/2', /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/2' } + ); +}, 'Test directFromSellerSignals with 2 responses -- old non-overwritten ad slot remains.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals( + { 'Buyer-Origin': window.location.origin, 'Alternative-Response': 'Duplicate adSlot/1'}); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'firstSellerSignals/1', + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/1' } + ); +}, 'Test invalid directFromSellerSignals with duplicate adSlot in response -- the second is ignored.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals( + { 'Buyer-Origin': window.location.origin, 'Alternative-Response': 'Duplicate adSlot/1'}); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'nonDupSellerSignals/2', + /*expectedAuctionSignals=*/null, /*expectedPerBuyerSignals=*/null), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/2' } + ); +}, 'Test invalid directFromSellerSignals with duplicate adSlot in response, selecting a non duplicated adSlot.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await fetchDirectFromSellerSignals( + { 'Buyer-Origin': window.location.origin, + 'Alternative-Response': 'Two keys with same values'}); + await runReportTest( + test, uuid, + directFromSellerSignalsValidatorCode( + uuid, 'sameSellerSignals', + 'sameAuctionSignals', 'samePerBuyerSignals'), + // expectedReportUrls + [createSellerReportURL(uuid), createBidderReportURL(uuid)], + // renderURLOverride + null, + // auctionConfigOverrides + { directFromSellerSignalsHeaderAdSlot: 'adSlot/1' } + ); +}, 'Test invalid directFromSellerSignals with duplicate values in response.'); |