deprecated-render-url-replacements.https.window.js (6021B)
1 // META: script=/resources/testdriver.js 2 // META: script=/resources/testdriver-vendor.js 3 // META: script=/common/utils.js 4 // META: script=resources/fledge-util.sub.js 5 // META: script=/common/subset-tests.js 6 // META: timeout=long 7 // META: variant=?1-5 8 // META: variant=?6-10 9 // META: variant=?11-15 10 // META: variant=?16-last 11 12 13 "use strict"; 14 15 // This test ensures proper handling of deprecatedRenderURLReplacements within auctionConfigOverrides. 16 // It validates that these replacements are correctly applied to the winning bid's renderURL by 17 // injecting a URL with matching macros into an interest group and ensuring that a new url with 18 // the replacements in it, is tracked and observed. 19 const makeTest = ({ 20 // Test name 21 name, 22 // Overrides to the interest group. 23 interestGroupOverrides = {}, 24 // Overrides to the auction config. 25 auctionConfigOverrides = {}, 26 // This is what goes into the renderURL and is expected to be replaced. 27 beforeReplacements, 28 // This is what's expected when 'beforeReplacements' is replaced. 29 afterReplacements, 30 }) => { 31 subsetTest(promise_test, async test => { 32 const uuid = generateUuid(test); 33 let urlBeforeReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', beforeReplacements); 34 let urlAfterReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', afterReplacements); 35 interestGroupOverrides.ads = [{ renderURL: urlBeforeReplacements }]; 36 await joinInterestGroup(test, uuid, interestGroupOverrides); 37 38 await runBasicFledgeAuctionAndNavigate(test, uuid, auctionConfigOverrides); 39 await waitForObservedRequests( 40 uuid, 41 [urlAfterReplacements, createSellerReportURL(uuid), createBidderReportURL(uuid)]); 42 }, name); 43 }; 44 45 makeTest({ 46 name: 'Replacements with brackets.', 47 auctionConfigOverrides: { 48 deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO}': 'SSP' } 49 }, 50 beforeReplacements: "${EXAMPLE-MACRO}", 51 afterReplacements: 'SSP', 52 53 }); 54 55 makeTest({ 56 name: 'Replacements with percents.', 57 auctionConfigOverrides: { 58 deprecatedRenderURLReplacements: { '%%EXAMPLE-MACRO%%': 'SSP' } 59 }, 60 beforeReplacements: "%%EXAMPLE-MACRO%%", 61 afterReplacements: 'SSP', 62 }); 63 64 makeTest({ 65 name: 'Multiple replacements within a URL.', 66 auctionConfigOverrides: { 67 deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO1}': 'SSP1', '%%EXAMPLE-MACRO2%%': 'SSP2' } 68 }, 69 beforeReplacements: "${EXAMPLE-MACRO1}/%%EXAMPLE-MACRO2%%", 70 afterReplacements: 'SSP1/SSP2', 71 }); 72 73 makeTest({ 74 name: 'Recursive and reduce size with brackets.', 75 auctionConfigOverrides: { 76 deprecatedRenderURLReplacements: { '${1}': '1' } 77 }, 78 beforeReplacements: "${${${1}}}", 79 afterReplacements: "${${1}}" 80 }); 81 82 makeTest({ 83 name: 'Recursive and increase size with brackets.', 84 auctionConfigOverrides: { 85 deprecatedRenderURLReplacements: { '${1}': '${${1}}' } 86 }, 87 beforeReplacements: "${1}", 88 afterReplacements: "${${1}}" 89 }); 90 91 makeTest({ 92 name: 'Replacements use a single pass with brackets.', 93 auctionConfigOverrides: { 94 deprecatedRenderURLReplacements: { '${1}': '${2}', '${2}': '${1}' } 95 }, 96 beforeReplacements: "${1}${2}", 97 afterReplacements: "${2}${1}" 98 }); 99 100 makeTest({ 101 name: 'Multiple instances of same substitution string with brackets.', 102 auctionConfigOverrides: { 103 deprecatedRenderURLReplacements: { '${1}': '${2}' } 104 }, 105 beforeReplacements: "{${1}${1}}", 106 afterReplacements: "{${2}${2}}" 107 }); 108 109 makeTest({ 110 name: 'Mismatched replacement with brackets.', 111 auctionConfigOverrides: { 112 deprecatedRenderURLReplacements: { '${2}': '${1}' } 113 }, 114 beforeReplacements: "${1}", 115 afterReplacements: "${1}" 116 }); 117 118 makeTest({ 119 name: 'Recursive and reduce size with percents.', 120 auctionConfigOverrides: { 121 deprecatedRenderURLReplacements: { '%%1%%': '1' } 122 }, 123 beforeReplacements: "%%%%1%%%%", 124 afterReplacements: "%%1%%" 125 }); 126 127 makeTest({ 128 name: 'Recursive and increase size with percents.', 129 auctionConfigOverrides: { 130 deprecatedRenderURLReplacements: { '%%1%%': '%%%%1%%%%' } 131 }, 132 beforeReplacements: "%%1%%", 133 afterReplacements: "%%%%1%%%%" 134 }); 135 136 makeTest({ 137 name: 'Replacements use a single pass with percents.', 138 auctionConfigOverrides: { 139 deprecatedRenderURLReplacements: { '%%1%%': '%%2%%', '%%2%%': '%%1%%' } 140 }, 141 beforeReplacements: "%%1%%%%2%%", 142 afterReplacements: "%%2%%%%1%%" 143 }); 144 145 makeTest({ 146 name: 'Multiple instances of same substitution string with percents.', 147 auctionConfigOverrides: { 148 deprecatedRenderURLReplacements: { '%%1%%': '%%2%%' } 149 }, 150 beforeReplacements: "%%1%%%%1%%", 151 afterReplacements: "%%2%%%%2%%" 152 }); 153 154 makeTest({ 155 name: 'Mismatched replacement with percents.', 156 auctionConfigOverrides: { 157 deprecatedRenderURLReplacements: { '%%2%%': '%%1%%' } 158 }, 159 beforeReplacements: "%%1%%", 160 afterReplacements: "%%1%%" 161 }); 162 163 makeTest({ 164 name: 'Case sensativity.', 165 auctionConfigOverrides: { 166 deprecatedRenderURLReplacements: { '%%foo%%': '%%bar%%' } 167 }, 168 beforeReplacements: "%%FOO%%%%foo%%", 169 afterReplacements: "%%FOO%%%%bar%%" 170 }); 171 172 makeTest({ 173 name: 'Super macro, a macro with a macro inside it basically, with percents.', 174 auctionConfigOverrides: { 175 deprecatedRenderURLReplacements: { '%%%%foo%%%%': 'foo' } 176 }, 177 beforeReplacements: "%%%%foo%%%%", 178 afterReplacements: "foo" 179 }); 180 181 makeTest({ 182 name: 'Super macro, with brackets.', 183 auctionConfigOverrides: { 184 deprecatedRenderURLReplacements: { '${${foo}}': 'foo' } 185 }, 186 beforeReplacements: "${${foo}}", 187 afterReplacements: "foo" 188 }); 189 190 makeTest({ 191 name: 'Super macro, with both.', 192 auctionConfigOverrides: { 193 deprecatedRenderURLReplacements: { '${%%foo%%}': 'foo', '%%${bar}%%':'bar' } 194 }, 195 beforeReplacements: "${%%foo%%}%%${bar}%%", 196 afterReplacements: "foobar" 197 });