summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fledge/tentative/resources/bidding-logic.sub.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/fledge/tentative/resources/bidding-logic.sub.py')
-rw-r--r--testing/web-platform/tests/fledge/tentative/resources/bidding-logic.sub.py126
1 files changed, 69 insertions, 57 deletions
diff --git a/testing/web-platform/tests/fledge/tentative/resources/bidding-logic.sub.py b/testing/web-platform/tests/fledge/tentative/resources/bidding-logic.sub.py
index 707e37f36b..e17f2c2c75 100644
--- a/testing/web-platform/tests/fledge/tentative/resources/bidding-logic.sub.py
+++ b/testing/web-platform/tests/fledge/tentative/resources/bidding-logic.sub.py
@@ -1,71 +1,83 @@
from pathlib import Path
+from fledge.tentative.resources import fledge_http_server_util
+
# General bidding logic script. Depending on query parameters, it can
-# simulate a variety of network errors, and its generateBid() and
-# reportWin() functions can have arbitrary Javascript code injected
-# in them. generateBid() will by default return a bid of 9 for the
+# simulate a variety of network errors, and its generateBid(), reportWin(),
+# and reportAdditionalBidWin() functions can have arbitrary Javascript code
+# injected in them. generateBid() will by default return a bid of 9 for the
# first ad.
def main(request, response):
- error = request.GET.first(b"error", None)
+ if fledge_http_server_util.handle_cors_headers_and_preflight(request, response):
+ return
+
+ error = request.GET.first(b"error", None)
- if error == b"close-connection":
- # Close connection without writing anything, to simulate a network
- # error. The write call is needed to avoid writing the default headers.
- response.writer.write("")
- response.close_connection = True
- return
+ if error == b"close-connection":
+ # Close connection without writing anything, to simulate a network
+ # error. The write call is needed to avoid writing the default headers.
+ response.writer.write("")
+ response.close_connection = True
+ return
- if error == b"http-error":
- response.status = (404, b"OK")
- else:
- response.status = (200, b"OK")
+ if error == b"http-error":
+ response.status = (404, b"OK")
+ else:
+ response.status = (200, b"OK")
- if error == b"wrong-content-type":
- response.headers.set(b"Content-Type", b"application/json")
- elif error != b"no-content-type":
- response.headers.set(b"Content-Type", b"application/javascript")
+ if error == b"wrong-content-type":
+ response.headers.set(b"Content-Type", b"application/json")
+ elif error != b"no-content-type":
+ response.headers.set(b"Content-Type", b"application/javascript")
- if error == b"bad-allow-fledge":
- response.headers.set(b"Ad-Auction-Allowed", b"sometimes")
- elif error == b"fledge-not-allowed":
- response.headers.set(b"Ad-Auction-Allowed", b"false")
- elif error != b"no-allow-fledge":
- response.headers.set(b"Ad-Auction-Allowed", b"true")
+ if error == b"bad-allow-fledge":
+ response.headers.set(b"Ad-Auction-Allowed", b"sometimes")
+ elif error == b"fledge-not-allowed":
+ response.headers.set(b"Ad-Auction-Allowed", b"false")
+ elif error != b"no-allow-fledge":
+ response.headers.set(b"Ad-Auction-Allowed", b"true")
- if error == b"no-body":
- return b''
+ if error == b"no-body":
+ return b''
- body = (Path(__file__).parent.resolve() / 'worklet-helpers.js').read_text().encode("ASCII")
- if error != b"no-generateBid":
- # Use bid query param if present. Otherwise, use a bid of 9.
- bid = (request.GET.first(b"bid", None) or b"9").decode("ASCII")
+ body = (Path(__file__).parent.resolve() / 'worklet-helpers.js').read_text().encode("ASCII")
+ if error != b"no-generateBid":
+ # Use bid query param if present. Otherwise, use a bid of 9.
+ bid = (request.GET.first(b"bid", None) or b"9").decode("ASCII")
- bidCurrency = ""
- bidCurrencyParam = request.GET.first(b"bidCurrency", None)
- if bidCurrencyParam != None:
- bidCurrency = "bidCurrency: '" + bidCurrencyParam.decode("ASCII") + "',"
+ bidCurrency = ""
+ bidCurrencyParam = request.GET.first(b"bidCurrency", None)
+ if bidCurrencyParam != None:
+ bidCurrency = "bidCurrency: '" + bidCurrencyParam.decode("ASCII") + "',"
- allowComponentAuction = ""
- allowComponentAuctionParam = request.GET.first(b"allowComponentAuction", None)
- if allowComponentAuctionParam != None:
- allowComponentAuction = f"allowComponentAuction: {allowComponentAuctionParam.decode('ASCII')},"
+ allowComponentAuction = ""
+ allowComponentAuctionParam = request.GET.first(b"allowComponentAuction", None)
+ if allowComponentAuctionParam != None:
+ allowComponentAuction = f"allowComponentAuction: {allowComponentAuctionParam.decode('ASCII')},"
- body += f"""
- function generateBid(interestGroup, auctionSignals, perBuyerSignals,
- trustedBiddingSignals, browserSignals,
- directFromSellerSignals) {{
- {{{{GET[generateBid]}}}};
- return {{
- bid: {bid},
- {bidCurrency}
- {allowComponentAuction}
- render: interestGroup.ads[0].renderURL
- }};
- }}""".encode()
- if error != b"no-reportWin":
- body += b"""
- function reportWin(auctionSignals, perBuyerSignals, sellerSignals,
- browserSignals, directFromSellerSignals) {
- {{GET[reportWin]}};
- }"""
- return body
+ body += f"""
+ function generateBid(interestGroup, auctionSignals, perBuyerSignals,
+ trustedBiddingSignals, browserSignals,
+ directFromSellerSignals) {{
+ {{{{GET[generateBid]}}}};
+ return {{
+ bid: {bid},
+ {bidCurrency}
+ {allowComponentAuction}
+ render: interestGroup.ads[0].renderURL
+ }};
+ }}""".encode()
+ if error != b"no-reportWin":
+ body += b"""
+ function reportWin(auctionSignals, perBuyerSignals, sellerSignals,
+ browserSignals, directFromSellerSignals) {
+ {{GET[reportWin]}};
+ }"""
+ if error != b"no-reportAdditionalBidWin":
+ body += b"""
+ function reportAdditionalBidWin(auctionSignals, perBuyerSignals,
+ sellerSignals, browserSignals,
+ directFromSellerSignals) {
+ {{GET[reportAdditionalBidWin]}};
+ }"""
+ return body