1 // Copyright 2019 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/network_isolation_key_mojom_traits.h"
6
7 #include "base/stl_util.h"
8 #include "base/test/scoped_feature_list.h"
9 #include "mojo/public/cpp/test_support/test_utils.h"
10 #include "net/base/features.h"
11 #include "services/network/public/mojom/network_isolation_key.mojom.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "url/gurl.h"
14 #include "url/origin.h"
15
16 namespace mojo {
17
TEST(NetworkIsolationKeyMojomTraitsTest,SerializeAndDeserialize)18 TEST(NetworkIsolationKeyMojomTraitsTest, SerializeAndDeserialize) {
19 std::vector<net::NetworkIsolationKey> keys = {
20 net::NetworkIsolationKey(), net::NetworkIsolationKey::CreateTransient(),
21 net::NetworkIsolationKey::CreateOpaqueAndNonTransient(),
22 net::NetworkIsolationKey(url::Origin::Create(GURL("http://a.test/")),
23 url::Origin::Create(GURL("http://b.test/")))};
24
25 for (auto original : keys) {
26 SCOPED_TRACE(original.ToDebugString());
27 net::NetworkIsolationKey copied;
28 EXPECT_TRUE(mojo::test::SerializeAndDeserialize<
29 network::mojom::NetworkIsolationKey>(&original, &copied));
30 EXPECT_EQ(original, copied);
31 }
32 }
33
34 class NetworkIsolationKeyMojomTraitsWithFrameOriginTest : public testing::Test {
35 public:
NetworkIsolationKeyMojomTraitsWithFrameOriginTest()36 NetworkIsolationKeyMojomTraitsWithFrameOriginTest() {
37 feature_list_.InitAndEnableFeature(
38 net::features::kAppendFrameOriginToNetworkIsolationKey);
39 }
40
41 private:
42 base::test::ScopedFeatureList feature_list_;
43 };
44
TEST_F(NetworkIsolationKeyMojomTraitsWithFrameOriginTest,SerializeAndDeserialize)45 TEST_F(NetworkIsolationKeyMojomTraitsWithFrameOriginTest,
46 SerializeAndDeserialize) {
47 std::vector<net::NetworkIsolationKey> keys = {
48 net::NetworkIsolationKey(), net::NetworkIsolationKey::CreateTransient(),
49 net::NetworkIsolationKey::CreateOpaqueAndNonTransient(),
50 net::NetworkIsolationKey(url::Origin::Create(GURL("http://a.test/")),
51 url::Origin::Create(GURL("http://b.test/"))),
52 net::NetworkIsolationKey(
53 url::Origin::Create(GURL("http://foo.a.test/")),
54 url::Origin::Create(GURL("http://bar.b.test/")))};
55
56 for (auto original : keys) {
57 SCOPED_TRACE(original.ToDebugString());
58 net::NetworkIsolationKey copied;
59 EXPECT_TRUE(mojo::test::SerializeAndDeserialize<
60 network::mojom::NetworkIsolationKey>(&original, &copied));
61 EXPECT_EQ(original, copied);
62 EXPECT_EQ(original.GetTopFrameSite(), copied.GetTopFrameSite());
63 EXPECT_EQ(original.GetFrameSite(), copied.GetFrameSite());
64 EXPECT_EQ(original.IsTransient(), copied.IsTransient());
65 }
66 }
67
68 } // namespace mojo
69