107 lines
3.6 KiB
JavaScript
107 lines
3.6 KiB
JavaScript
// META: script=/resources/testdriver.js
|
|
// META: script=/resources/testdriver-vendor.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-10
|
|
// META: variant=?11-15
|
|
// META: variant=?16-20
|
|
// META: variant=?21-25
|
|
// META: variant=?26-30
|
|
// META: variant=?31-35
|
|
// META: variant=?36-40
|
|
// META: variant=?41-45
|
|
// META: variant=?46-last
|
|
|
|
"use strict";
|
|
|
|
// The tests in this file focus on simple auctions (one bidder, one seller, one
|
|
// origin, one frame) which have no winning bid, either due to errors or due to
|
|
// there being no bids, except where tests fit better with another set of tests.
|
|
|
|
// Errors common to Protected Audiences network requests. These strings will be
|
|
// appended to URLs to make the Python scripts that generate responses respond
|
|
// with errors.
|
|
const COMMON_NETWORK_ERRORS = [
|
|
'error=close-connection',
|
|
'error=http-error',
|
|
'error=no-content-type',
|
|
'error=wrong-content-type',
|
|
'error=bad-allow-fledge',
|
|
'error=fledge-not-allowed',
|
|
'error=no-allow-fledge',
|
|
'error=no-body',
|
|
];
|
|
|
|
const BIDDING_LOGIC_SCRIPT_ERRORS = [
|
|
...COMMON_NETWORK_ERRORS,
|
|
'error=no-generateBid',
|
|
'generateBid=throw 1;',
|
|
'generateBid=This does not compile',
|
|
// Default timeout test. Doesn't check how long timing out takes.
|
|
'generateBid=while(1);',
|
|
// Bad return values:
|
|
'generateBid=return 5;',
|
|
'generateBid=return "Foo";',
|
|
'generateBid=return interestGroup.ads[0].renderURL;',
|
|
'generateBid=return {bid: 1, render: "https://not-in-ads-array.test/"};',
|
|
'generateBid=return {bid: 1};',
|
|
'generateBid=return {render: interestGroup.ads[0].renderURL};',
|
|
// These are not bidding rather than errors.
|
|
'generateBid=return {bid:0, render: interestGroup.ads[0].renderURL};',
|
|
'generateBid=return {bid:-1, render: interestGroup.ads[0].renderURL};'
|
|
];
|
|
|
|
const DECISION_LOGIC_SCRIPT_ERRORS = [
|
|
...COMMON_NETWORK_ERRORS,
|
|
'error=no-scoreAd',
|
|
'scoreAd=throw 1;',
|
|
'scoreAd=This does not compile',
|
|
// Default timeout test. Doesn't check how long timing out takes.
|
|
'scoreAd=while(1);',
|
|
// Bad return values:
|
|
'scoreAd=return "Foo";',
|
|
'scoreAd=return {desirability: "Foo"};',
|
|
// These are rejecting the bid rather than errors.
|
|
'scoreAd=return 0;',
|
|
'scoreAd=return -1;',
|
|
'scoreAd=return {desirability: 0};',
|
|
'scoreAd=return {desirability: -1};'
|
|
];
|
|
|
|
const BIDDING_WASM_HELPER_ERRORS = [
|
|
...COMMON_NETWORK_ERRORS,
|
|
'error=not-wasm'
|
|
];
|
|
|
|
for (let error of BIDDING_LOGIC_SCRIPT_ERRORS) {
|
|
subsetTest(promise_test, (async (error, test) => {
|
|
let biddingLogicURL = `${BASE_URL}resources/bidding-logic.sub.py?${error}`;
|
|
await joinGroupAndRunBasicFledgeTestExpectingNoWinner(
|
|
test,
|
|
{interestGroupOverrides: {biddingLogicURL: biddingLogicURL}}
|
|
);
|
|
}).bind(undefined, error), `Bidding logic script: ${error}`);
|
|
}
|
|
|
|
for (let error of DECISION_LOGIC_SCRIPT_ERRORS) {
|
|
subsetTest(promise_test, (async (error, test) => {
|
|
let decisionLogicURL =
|
|
`${BASE_URL}resources/decision-logic.sub.py?${error}`;
|
|
await joinGroupAndRunBasicFledgeTestExpectingNoWinner(
|
|
test, { auctionConfigOverrides: { decisionLogicURL: decisionLogicURL } }
|
|
);
|
|
}).bind(undefined, error), `Decision logic script: ${error}`);
|
|
}
|
|
|
|
for (let error of BIDDING_WASM_HELPER_ERRORS) {
|
|
subsetTest(promise_test, (async (error, test) => {
|
|
let biddingWasmHelperURL =
|
|
`${BASE_URL}resources/wasm-helper.py?${error}`;
|
|
await joinGroupAndRunBasicFledgeTestExpectingNoWinner(
|
|
test, { interestGroupOverrides: { biddingWasmHelperURL: biddingWasmHelperURL } }
|
|
);
|
|
}).bind(undefined, error), `Bidding WASM helper: ${error}`);
|
|
}
|