1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "services/network/public/cpp/isolation_info_mojom_traits.h"
6
7 #include <vector>
8
9 #include "base/optional.h"
10 #include "mojo/public/cpp/test_support/test_utils.h"
11 #include "net/base/isolation_info.h"
12 #include "net/cookies/site_for_cookies.h"
13 #include "services/network/public/mojom/isolation_info.mojom.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "url/gurl.h"
16 #include "url/origin.h"
17
18 namespace mojo {
19
TEST(IsolationInfoMojomTraitsTest,SerializeAndDeserialize)20 TEST(IsolationInfoMojomTraitsTest, SerializeAndDeserialize) {
21 const url::Origin kOrigin1 = url::Origin::Create(GURL("https://a.test/"));
22 const url::Origin kOrigin2 = url::Origin::Create(GURL("https://b.test/"));
23 std::vector<net::IsolationInfo> keys = {
24 net::IsolationInfo(),
25 net::IsolationInfo::CreateTransient(),
26 net::IsolationInfo::CreateOpaqueAndNonTransient(),
27 net::IsolationInfo::Create(net::IsolationInfo::RequestType::kMainFrame,
28 kOrigin1, kOrigin1,
29 net::SiteForCookies::FromOrigin(kOrigin1)),
30 net::IsolationInfo::Create(net::IsolationInfo::RequestType::kSubFrame,
31 kOrigin1, kOrigin2,
32 net::SiteForCookies::FromOrigin(kOrigin1)),
33 net::IsolationInfo::Create(net::IsolationInfo::RequestType::kSubFrame,
34 kOrigin1, kOrigin2, net::SiteForCookies()),
35 net::IsolationInfo::Create(net::IsolationInfo::RequestType::kOther,
36 kOrigin1, kOrigin1,
37 net::SiteForCookies::FromOrigin(kOrigin1)),
38 net::IsolationInfo::Create(net::IsolationInfo::RequestType::kOther,
39 url::Origin(), url::Origin(),
40 net::SiteForCookies()),
41 };
42
43 for (auto original : keys) {
44 net::IsolationInfo copied;
45 EXPECT_TRUE(
46 mojo::test::SerializeAndDeserialize<network::mojom::IsolationInfo>(
47 &original, &copied));
48 EXPECT_TRUE(original.IsEqualForTesting(copied));
49 }
50 }
51
52 } // namespace mojo
53