diff options
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.py | 126 |
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 |