diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/fledge/tentative/auction-config.https.sub.window.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/fledge/tentative/auction-config.https.sub.window.js')
-rw-r--r-- | testing/web-platform/tests/fledge/tentative/auction-config.https.sub.window.js | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fledge/tentative/auction-config.https.sub.window.js b/testing/web-platform/tests/fledge/tentative/auction-config.https.sub.window.js new file mode 100644 index 0000000000..1455871dad --- /dev/null +++ b/testing/web-platform/tests/fledge/tentative/auction-config.https.sub.window.js @@ -0,0 +1,214 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js + +"use strict;" + +// The tests in this file focus on calls to runAdAuction with various +// auctionConfigs. + +const makeTest = ({ + // Test name + name, + // Expectation function (EXPECT_NULL, etc.) + expect, + // Overrides to the auction config. + auctionConfigOverrides = {}, +}) => { + promise_test(async test => { + const uuid = generateUuid(test); + // Join an interest group so the auction actually runs. + await joinInterestGroup(test, uuid); + let auctionResult; + try { + auctionResult = await runBasicFledgeAuction(test, uuid, auctionConfigOverrides); + } catch (e) { + auctionResult = e; + } + expect(auctionResult); + }, name); +}; + +// Expect an unsuccessful auction (yielding null). +const EXPECT_NO_WINNER = auctionResult => { + assert_equals(auctionResult, null, 'Auction unexpected had a winner'); +}; + +// Expect an exception of the given type. +const EXPECT_EXCEPTION = exceptionType => auctionResult => { + assert_not_equals(auctionResult, null, "got null instead of expected error"); + assert_true(auctionResult instanceof Error, "did not get expected error: " + auctionResult); + assert_throws_js(exceptionType, () => { throw auctionResult; }); +}; + +makeTest({ + name: 'no buyers => no winners', + expect: EXPECT_NO_WINNER, + auctionConfigOverrides: {interestGroupBuyers: []}, +}); + +makeTest({ + name: 'seller is not an https URL', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {seller: "ftp://not-https"}, +}); + +makeTest({ + name: 'decisionLogicUrl is invalid', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { decisionLogicUrl: "https://foo:99999999999" }, +}); + +makeTest({ + name: 'decisionLogicUrl is cross-origin with seller', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { decisionLogicUrl: "https://example.com" }, +}); + +makeTest({ + name: 'trustedScoringSignalsUrl is invalid', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { trustedScoringSignalsUrl: "https://foo:99999999999" }, +}); + +makeTest({ + name: 'trustedScoringSignalsUrl is cross-origin with seller', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { trustedScoringSignalsUrl: "https://example.com" }, +}); + +makeTest({ + name: 'interestGroupBuyer is invalid', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { interestGroupBuyers: ["https://foo:99999999999"] }, +}); + +makeTest({ + name: 'interestGroupBuyer is not https', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { interestGroupBuyers: ["http://example.com"] }, +}); + +makeTest({ + name: 'only one interestGroupBuyer is invalid', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { + interestGroupBuyers: ["https://example.com", "https://foo:99999999999"], + }, +}); + +makeTest({ + name: 'only one interestGroupBuyer is not https', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { + interestGroupBuyers: ["https://example.com", "http://example.com"], + }, +}); + +makeTest({ + name: 'auctionSignals is invalid as JSON', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { auctionSignals: { sig: BigInt(13) } }, +}); + +makeTest({ + name: 'sellerSignals is invalid as JSON', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { sellerSignals: { sig: BigInt(13) } }, +}); + +makeTest({ + name: 'directFromSellerSignals is invalid', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { directFromSellerSignals: "https://foo:99999999999" }, +}); + +makeTest({ + name: 'directFromSellerSignals is cross-origin with seller', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { directFromSellerSignals: "https://example.com" }, +}); + +makeTest({ + name: 'directFromSellerSignals has nonempty query', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { directFromSellerSignals: window.location.origin + "?foo=bar" }, +}); + +makeTest({ + name: 'perBuyerSignals has invalid URL in a key', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { perBuyerSignals: { "https://foo:99999999999" : {} }}, +}); + +makeTest({ + name: 'perBuyerSignals value is invalid as JSON', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { + perBuyerSignals: { "https://example.com" : { sig: BigInt(1) }, + }}, +}); + +makeTest({ + name: 'perBuyerGroupLimits has invalid URL in a key', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { perBuyerGroupLimits: { "https://foo:99999999999" : 5 }}, +}); + +makeTest({ + name: 'perBuyerExperimentGroupIds has invalid URL in a key', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { perBuyerExperimentGroupIds: { "https://foo:99999999999" : 11 }}, +}); + +makeTest({ + name: 'perBuyerPrioritySignals has invalid URL in a key', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { + perBuyerPrioritySignals: { "https://foo:99999999999" : { sig: 2.5} }, + }, +}); + +makeTest({ + name: 'perBuyerPrioritySignals has a value with a key with prefix "browserSignals"', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { + perBuyerPrioritySignals: { "https://example.com" : { "browserSignals.foo" : true } }, + }, +}); + +makeTest({ + name: 'component auctions are not allowed within component auctions', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { + interestGroupBuyers: undefined, + componentAuctions: [ + { + seller: window.location.origin, + decisionLogicUrl: window.location.origin, + interestGroupBuyers: undefined, + componentAuctions: [ + { + seller: window.location.origin, + decisionLogicUrl: window.location.origin, + } + ], + }, + ], + }, +}); + +makeTest({ + name: 'component auctions are not allowed with interestGroupBuyers', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: { + interestGroupBuyers: ["https://example.com"], + componentAuctions: [ + { + seller: window.location.origin, + decisionLogicUrl: window.location.origin, + interestGroupBuyers: [], + }, + ], + }, +}); |