197 lines
5.9 KiB
JavaScript
197 lines
5.9 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-last
|
|
|
|
|
|
"use strict";
|
|
|
|
// This test ensures proper handling of deprecatedRenderURLReplacements within auctionConfigOverrides.
|
|
// It validates that these replacements are correctly applied to the winning bid's renderURL by
|
|
// injecting a URL with matching macros into an interest group and ensuring that a new url with
|
|
// the replacements in it, is tracked and observed.
|
|
const makeTest = ({
|
|
// Test name
|
|
name,
|
|
// Overrides to the interest group.
|
|
interestGroupOverrides = {},
|
|
// Overrides to the auction config.
|
|
auctionConfigOverrides = {},
|
|
// This is what goes into the renderURL and is expected to be replaced.
|
|
beforeReplacements,
|
|
// This is what's expected when 'beforeReplacements' is replaced.
|
|
afterReplacements,
|
|
}) => {
|
|
subsetTest(promise_test, async test => {
|
|
const uuid = generateUuid(test);
|
|
let urlBeforeReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', beforeReplacements);
|
|
let urlAfterReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', afterReplacements);
|
|
interestGroupOverrides.ads = [{ renderURL: urlBeforeReplacements }];
|
|
await joinInterestGroup(test, uuid, interestGroupOverrides);
|
|
|
|
await runBasicFledgeAuctionAndNavigate(test, uuid, auctionConfigOverrides);
|
|
await waitForObservedRequests(
|
|
uuid,
|
|
[urlAfterReplacements, createSellerReportURL(uuid), createBidderReportURL(uuid)]);
|
|
}, name);
|
|
};
|
|
|
|
makeTest({
|
|
name: 'Replacements with brackets.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO}': 'SSP' }
|
|
},
|
|
beforeReplacements: "${EXAMPLE-MACRO}",
|
|
afterReplacements: 'SSP',
|
|
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Replacements with percents.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%EXAMPLE-MACRO%%': 'SSP' }
|
|
},
|
|
beforeReplacements: "%%EXAMPLE-MACRO%%",
|
|
afterReplacements: 'SSP',
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Multiple replacements within a URL.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO1}': 'SSP1', '%%EXAMPLE-MACRO2%%': 'SSP2' }
|
|
},
|
|
beforeReplacements: "${EXAMPLE-MACRO1}/%%EXAMPLE-MACRO2%%",
|
|
afterReplacements: 'SSP1/SSP2',
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Recursive and reduce size with brackets.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${1}': '1' }
|
|
},
|
|
beforeReplacements: "${${${1}}}",
|
|
afterReplacements: "${${1}}"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Recursive and increase size with brackets.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${1}': '${${1}}' }
|
|
},
|
|
beforeReplacements: "${1}",
|
|
afterReplacements: "${${1}}"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Replacements use a single pass with brackets.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${1}': '${2}', '${2}': '${1}' }
|
|
},
|
|
beforeReplacements: "${1}${2}",
|
|
afterReplacements: "${2}${1}"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Multiple instances of same substitution string with brackets.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${1}': '${2}' }
|
|
},
|
|
beforeReplacements: "{${1}${1}}",
|
|
afterReplacements: "{${2}${2}}"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Mismatched replacement with brackets.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${2}': '${1}' }
|
|
},
|
|
beforeReplacements: "${1}",
|
|
afterReplacements: "${1}"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Recursive and reduce size with percents.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%1%%': '1' }
|
|
},
|
|
beforeReplacements: "%%%%1%%%%",
|
|
afterReplacements: "%%1%%"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Recursive and increase size with percents.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%1%%': '%%%%1%%%%' }
|
|
},
|
|
beforeReplacements: "%%1%%",
|
|
afterReplacements: "%%%%1%%%%"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Replacements use a single pass with percents.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%1%%': '%%2%%', '%%2%%': '%%1%%' }
|
|
},
|
|
beforeReplacements: "%%1%%%%2%%",
|
|
afterReplacements: "%%2%%%%1%%"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Multiple instances of same substitution string with percents.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%1%%': '%%2%%' }
|
|
},
|
|
beforeReplacements: "%%1%%%%1%%",
|
|
afterReplacements: "%%2%%%%2%%"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Mismatched replacement with percents.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%2%%': '%%1%%' }
|
|
},
|
|
beforeReplacements: "%%1%%",
|
|
afterReplacements: "%%1%%"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Case sensativity.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%foo%%': '%%bar%%' }
|
|
},
|
|
beforeReplacements: "%%FOO%%%%foo%%",
|
|
afterReplacements: "%%FOO%%%%bar%%"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Super macro, a macro with a macro inside it basically, with percents.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '%%%%foo%%%%': 'foo' }
|
|
},
|
|
beforeReplacements: "%%%%foo%%%%",
|
|
afterReplacements: "foo"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Super macro, with brackets.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${${foo}}': 'foo' }
|
|
},
|
|
beforeReplacements: "${${foo}}",
|
|
afterReplacements: "foo"
|
|
});
|
|
|
|
makeTest({
|
|
name: 'Super macro, with both.',
|
|
auctionConfigOverrides: {
|
|
deprecatedRenderURLReplacements: { '${%%foo%%}': 'foo', '%%${bar}%%':'bar' }
|
|
},
|
|
beforeReplacements: "${%%foo%%}%%${bar}%%",
|
|
afterReplacements: "foobar"
|
|
});
|