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
content / browser / interest_group / subresource_url_builder_unittest.cc [blame]
// 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