Skip to content

Commit

Permalink
Bug 1921337 [wpt PR 48352] - Web platform tests for Fledge Deal suppo…
Browse files Browse the repository at this point in the history
…rt., a=testonly

Automatic update from web-platform-tests
Web platform tests for Fledge Deal support.

This tests that all of the following receive the expected
reporting ids in every major scenario possible involving the
`selectableBuyerAndSellerReportingIds`.

These do not test anything with k-anon enforcement on, but
a TODO was added for that.

Bug: 356654297
Change-Id: Iaec6d54141abb33b0a43382736dc5d197d66f60e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5868409
Reviewed-by: Orr Bernstein <orrb@google.com>
Commit-Queue: Youssef Bourouphael <ybourouphael@google.com>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1360755}

--

wpt-commits: 8d500adf7d6937060f1195e63ea02f17700be14b
wpt-pr: 48352
  • Loading branch information
HabibiYou authored and moz-wptsync-bot committed Oct 2, 2024
1 parent 844d2e8 commit 69765c4
Show file tree
Hide file tree
Showing 2 changed files with 310 additions and 0 deletions.
1 change: 1 addition & 0 deletions testing/web-platform/tests/fledge/tentative/TODO
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,4 @@ If possible:
* reporting timeout being 0.
* Test input with invalid https origin in web platform tests for both trusted bidding
and scoring signals coordinators.
* Test selectable buyer and seller reporting ids with k-anonymity enforcement.
Original file line number Diff line number Diff line change
@@ -0,0 +1,309 @@
// 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-5
// META: variant=?6-last


"use strict;"

const makeTest = ({
// Name of the test.
name,
// The value of the selectableReportingIds to be used in the test.
selectableBuyerAndSellerReportingIds = undefined,
// The value of the buyerAndSellerReportingId to be used in the test.
buyerAndSellerReportingId = undefined,
// The value of the buyerReportingId to be used in the test.
buyerReportingId = undefined,
// The javascript comparison to be used in generateBid()
generateBidComparison,
// what gets returned by generateBid()
generateBidReturn,
// The javascript comparison to be used in scoreAd()
scoreAdComparison,
// The javascript comparison to be used in reportWin()
reportWinComparison,
// The javascript comparison to be used in reportResult()
reportResultComparison,
// Whether we expect the auction to have a winner or not.
expectWinner = true,
}) => {
subsetTest(promise_test, async test => {
const uuid = generateUuid(test);
let renderURL = createRenderURL(uuid);
const bidderReportURL = createBidderReportURL(uuid);
const sellerReportURL = createSellerReportURL(uuid);

let interestGroupOverrides = {};
interestGroupOverrides.ads = [{
renderURL: renderURL,
selectableBuyerAndSellerReportingIds: selectableBuyerAndSellerReportingIds,
buyerAndSellerReportingId: buyerAndSellerReportingId,
buyerReportingId: buyerReportingId,
}];
interestGroupOverrides.biddingLogicURL = createBiddingScriptURL(
{
generateBid:
`
if(${(generateBidComparison)}){
return ${generateBidReturn};
}
throw "Failed comparison in generateBid: " + interestGroup["ads"][0];
`,
reportWin:
`
if(${reportWinComparison})
sendReportTo('${bidderReportURL}')
else
throw "Failed comparison in reportWin";
`
});

let auctionConfigOverrides = {};
auctionConfigOverrides.decisionLogicURL = createDecisionScriptURL(
uuid,
{
scoreAd:
`
if (${scoreAdComparison}){
return {desirability: 10, bid: 10}
}
throw "Failed comparison in scoreAd ";
`,
reportResult:
`
if(${reportResultComparison})
sendReportTo("${sellerReportURL}");
else
throw "Failed comparison in reportResult";
`
});

await joinInterestGroup(test, uuid, interestGroupOverrides);

if (expectWinner) {
await runBasicFledgeAuctionAndNavigate(test, uuid, auctionConfigOverrides);
await waitForObservedRequests(
uuid,
[bidderReportURL, sellerReportURL]);
}
else {
await runBasicFledgeTestExpectingNoWinner(test, uuid, auctionConfigOverrides);
}
}, name);
};

// Verify that basic form of selectableReportingIds and selectedReportingId are where they should be.
makeTest({
name: "selectableBuyerAndSellerReportingIds",
selectableBuyerAndSellerReportingIds: ["selectable_id1", "selectable_id2"],
generateBidComparison: `deepEquals(interestGroup["ads"][0].selectableBuyerAndSellerReportingIds, ["selectable_id1", "selectable_id2"])`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL,
selectedBuyerAndSellerReportingId:interestGroup.ads[0].selectableBuyerAndSellerReportingIds[0]}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
});

// Verify the buyer and seller reporting id is where we expect it when it is present alongside the selected reporting id.
makeTest({
name: "selectableBuyerAndSellerReportingIds and buyerAndSellerReportingId",
selectableBuyerAndSellerReportingIds: ["selectable_id1", "selectable_id2"],
buyerAndSellerReportingId: "buyer_and_seller_reporting_id",
generateBidComparison: `deepEquals(interestGroup["ads"][0].selectableBuyerAndSellerReportingIds, ["selectable_id1", "selectable_id2"]) &&
interestGroup["ads"][0].buyerAndSellerReportingId === "buyer_and_seller_reporting_id"`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL,
selectedBuyerAndSellerReportingId:interestGroup.ads[0].selectableBuyerAndSellerReportingIds[0]}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
});

// Verify the buyer reporting id is where we expect it when it is present alongside the selected reporting id.
makeTest({
name: "selectableBuyerAndSellerReportingIds and buyerReportingId",
selectableBuyerAndSellerReportingIds: ["selectable_id1", "selectable_id2"],
buyerReportingId: "buyer_reporting_id",
generateBidComparison: `deepEquals(interestGroup["ads"][0].selectableBuyerAndSellerReportingIds, ["selectable_id1", "selectable_id2"]) &&
interestGroup["ads"][0].buyerReportingId === "buyer_reporting_id"`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL,
selectedBuyerAndSellerReportingId:interestGroup.ads[0].selectableBuyerAndSellerReportingIds[0]}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === "buyer_reporting_id"`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
});

// Verify all reporting ids are where we expect when they are all present alongside the selected reporting id.
makeTest({
name: "selectableBuyerAndSellerReportingIds, buyerAndSellerReportingId, and buyerReportingId",
selectableBuyerAndSellerReportingIds: ["selectable_id1", "selectable_id2"],
buyerAndSellerReportingId: "buyer_and_seller_reporting_id",
buyerReportingId: "buyer_reporting_id",
generateBidComparison: `deepEquals(interestGroup["ads"][0].selectableBuyerAndSellerReportingIds, ["selectable_id1", "selectable_id2"]) &&
interestGroup["ads"][0].buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
interestGroup["ads"][0].buyerReportingId === "buyer_reporting_id"`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL,
selectedBuyerAndSellerReportingId:interestGroup.ads[0].selectableBuyerAndSellerReportingIds[0]}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === "buyer_reporting_id"`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === "selectable_id1" &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
});

// Verify old behavior occurs when no id was selected, even though there was selectable ids.
makeTest({
name: "selectableBuyerAndSellerReportingIds but none selected, buyerAndSellerReportingId, and buyerReportingId",
selectableBuyerAndSellerReportingIds: ["selectable_id1", "selectable_id2"],
buyerAndSellerReportingId: "buyer_and_seller_reporting_id",
buyerReportingId: "buyer_reporting_id",
generateBidComparison: `deepEquals(interestGroup["ads"][0].selectableBuyerAndSellerReportingIds, ["selectable_id1", "selectable_id2"]) &&
interestGroup["ads"][0].buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
interestGroup["ads"][0].buyerReportingId === "buyer_reporting_id"`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
});

// Make sure if there was a selectedReportingId that's not within the selectables,
// that the worklet throws an error and the auction does not have a winner.
makeTest({
name: "selected not included selectables",
selectableBuyerAndSellerReportingIds: ["selectable_id1", "selectable_id2"],
buyerAndSellerReportingId: "buyer_and_seller_reporting_id",
buyerReportingId: "buyer_reporting_id",
generateBidComparison: `deepEquals(interestGroup["ads"][0].selectableBuyerAndSellerReportingIds, ["selectable_id1", "selectable_id2"]) &&
interestGroup["ads"][0].buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
interestGroup["ads"][0].buyerReportingId === "buyer_reporting_id"`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL, selectedBuyerAndSellerReportingId:"invalid_id"}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `false`,
reportResultComparison: `false"`,
expectWinner: false
});

// Make sure if there was a selectedReportingId but no selectables,
// that the worklet throws an error and the auction does not have a winner
makeTest({
name: "selected without selectables",
buyerAndSellerReportingId: "buyer_and_seller_reporting_id",
buyerReportingId: "buyer_reporting_id",
generateBidComparison: `interestGroup["ads"][0].selectableBuyerAndSellerReportingIds === undefined &&
interestGroup["ads"][0].buyerAndSellerReportingId === undefined &&
interestGroup["ads"][0].buyerReportingId === undefined`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL, selectedBuyerAndSellerReportingId:"invalid_id"}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `false`,
reportResultComparison: `false`,
expectWinner: false
});

// Verify old behavior occurs when there are no present selectable ids.
makeTest({
name: "buyerAndSellerReportingId, and buyerReportingId, but no selectables present",
buyerAndSellerReportingId: "buyer_and_seller_reporting_id",
buyerReportingId: "buyer_reporting_id",
generateBidComparison: `interestGroup["ads"][0].selectableBuyerAndSellerReportingIds === undefined &&
interestGroup["ads"][0].buyerAndSellerReportingId === undefined &&
interestGroup["ads"][0].buyerReportingId === undefined`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
});

makeTest({
name: "only buyerAndSellerReportingId",
buyerAndSellerReportingId: "buyer_and_seller_reporting_id",
generateBidComparison: `interestGroup["ads"][0].selectableBuyerAndSellerReportingIds === undefined &&
interestGroup["ads"][0].buyerAndSellerReportingId === undefined &&
interestGroup["ads"][0].buyerReportingId === undefined`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === "buyer_and_seller_reporting_id" &&
browserSignals.buyerReportingId === undefined`,
});

makeTest({
name: "only buyerReportingId",
buyerReportingId: "buyer_reporting_id",
generateBidComparison: `interestGroup["ads"][0].selectableBuyerAndSellerReportingIds === undefined &&
interestGroup["ads"][0].buyerAndSellerReportingId === undefined &&
interestGroup["ads"][0].buyerReportingId === undefined`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === "buyer_reporting_id"`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
});

makeTest({
name: "no reporting ids, expect IG name",
generateBidComparison: `interestGroup["ads"][0].selectableBuyerAndSellerReportingIds === undefined &&
interestGroup["ads"][0].buyerAndSellerReportingId === undefined &&
interestGroup["ads"][0].buyerReportingId === undefined`,
generateBidReturn: `{bid:10, render: interestGroup.ads[0].renderURL}`,
scoreAdComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
reportWinComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined &&
browserSignals.interestGroupName === "default name"`,
reportResultComparison: `browserSignals.selectedBuyerAndSellerReportingId === undefined &&
browserSignals.buyerAndSellerReportingId === undefined &&
browserSignals.buyerReportingId === undefined`,
});

0 comments on commit 69765c4

Please sign in to comment.