1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/interest_group/subresource_url_builder.h"
#include <optional>
#include "base/unguessable_token.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/common/interest_group/auction_config.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace content {
namespace {
using BundleSubresourceInfo = SubresourceUrlBuilder::BundleSubresourceInfo;
blink::DirectFromSellerSignalsSubresource CreateSubresource(
const GURL& bundle_url) {
blink::DirectFromSellerSignalsSubresource subresource;
subresource.bundle_url = bundle_url;
return subresource;
}
TEST(SubresourceUrlBuilderTest, NoSignals) {
SubresourceUrlBuilder builder(std::nullopt);
EXPECT_FALSE(builder.seller_signals());
EXPECT_FALSE(builder.auction_signals());
EXPECT_EQ(0u, builder.per_buyer_signals().size());
}
TEST(SubresourceUrlBuilderTest, Empty) {
// All fields construct to empty / nullopt.
blink::DirectFromSellerSignals direct_from_seller_signals;
SubresourceUrlBuilder builder(direct_from_seller_signals);
EXPECT_FALSE(builder.seller_signals());
EXPECT_FALSE(builder.auction_signals());
EXPECT_EQ(0u, builder.per_buyer_signals().size());
}
TEST(SubresourceUrlBuilderTest, AllFieldsPopulated) {
const url::Origin buyer1_origin =
url::Origin::Create(GURL("https://buyer1.test"));
const url::Origin buyer2_origin =
url::Origin::Create(GURL("https://buyer2.test"));
const GURL bundle_url1 = GURL("https://seller.test/bundle1");
const GURL bundle_url2 = GURL("https://seller.test/bundle2");
blink::DirectFromSellerSignals direct_from_seller_signals;
direct_from_seller_signals.prefix = GURL("https://seller.test/signals");
blink::DirectFromSellerSignalsSubresource buyer1_signals =
CreateSubresource(bundle_url1);
direct_from_seller_signals.per_buyer_signals[buyer1_origin] = buyer1_signals;
blink::DirectFromSellerSignalsSubresource buyer2_signals =
CreateSubresource(bundle_url2);
direct_from_seller_signals.per_buyer_signals[buyer2_origin] = buyer2_signals;
blink::DirectFromSellerSignalsSubresource seller_signals =
CreateSubresource(bundle_url1);
direct_from_seller_signals.seller_signals = seller_signals;
blink::DirectFromSellerSignalsSubresource auction_signals =
CreateSubresource(bundle_url2);
direct_from_seller_signals.auction_signals = auction_signals;
SubresourceUrlBuilder builder(direct_from_seller_signals);
ASSERT_TRUE(builder.seller_signals());
EXPECT_EQ(GURL("https://seller.test/signals?sellerSignals"),
builder.seller_signals()->subresource_url);
EXPECT_EQ(bundle_url1,
builder.seller_signals()->info_from_renderer.bundle_url);
EXPECT_EQ(seller_signals.token,
builder.seller_signals()->info_from_renderer.token);
ASSERT_TRUE(builder.auction_signals());
EXPECT_EQ(GURL("https://seller.test/signals?auctionSignals"),
builder.auction_signals()->subresource_url);
EXPECT_EQ(bundle_url2,
builder.auction_signals()->info_from_renderer.bundle_url);
EXPECT_EQ(auction_signals.token,
builder.auction_signals()->info_from_renderer.token);
ASSERT_EQ(2u, builder.per_buyer_signals().size());
const BundleSubresourceInfo& buyer1_full_info =
builder.per_buyer_signals().at(buyer1_origin);
EXPECT_EQ(GURL("https://seller.test/"
"signals?perBuyerSignals=https%3A%2F%2Fbuyer1.test"),
buyer1_full_info.subresource_url);
EXPECT_EQ(bundle_url1, buyer1_full_info.info_from_renderer.bundle_url);
EXPECT_EQ(buyer1_signals.token, buyer1_full_info.info_from_renderer.token);
const BundleSubresourceInfo& buyer2_full_info =
builder.per_buyer_signals().at(buyer2_origin);
EXPECT_EQ(GURL("https://seller.test/"
"signals?perBuyerSignals=https%3A%2F%2Fbuyer2.test"),
buyer2_full_info.subresource_url);
EXPECT_EQ(bundle_url2, buyer2_full_info.info_from_renderer.bundle_url);
EXPECT_EQ(buyer2_signals.token, buyer2_full_info.info_from_renderer.token);
}
} // namespace
} // namespace content
|