diff options
Diffstat (limited to 'testing/web-platform/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js')
-rw-r--r-- | testing/web-platform/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js b/testing/web-platform/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js new file mode 100644 index 0000000000..4f8bc1cc7f --- /dev/null +++ b/testing/web-platform/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js @@ -0,0 +1,196 @@ +// 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-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" +}); |