xref: /aosp_15_r20/external/cronet/net/quic/quic_address_mismatch_test.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2014 The Chromium Authors
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 "net/quic/quic_address_mismatch.h"
6 
7 #include "testing/gtest/include/gtest/gtest.h"
8 
9 namespace net::test {
10 
11 // Test all cases of the GetAddressMismatch function.
TEST(QuicAddressMismatchTest,GetAddressMismatch)12 TEST(QuicAddressMismatchTest, GetAddressMismatch) {
13   IPAddress ip4_1;
14   IPAddress ip4_2;
15   IPAddress ip6_1;
16   IPAddress ip6_2;
17   IPAddress ip4_mapped_1;
18   IPAddress ip4_mapped_2;
19   ASSERT_TRUE(ip4_1.AssignFromIPLiteral("1.2.3.4"));
20   ASSERT_TRUE(ip4_2.AssignFromIPLiteral("5.6.7.8"));
21   ASSERT_TRUE(ip6_1.AssignFromIPLiteral("1234::1"));
22   ASSERT_TRUE(ip6_2.AssignFromIPLiteral("1234::2"));
23   ip4_mapped_1 = ConvertIPv4ToIPv4MappedIPv6(ip4_1);
24   ip4_mapped_2 = ConvertIPv4ToIPv4MappedIPv6(ip4_2);
25   ASSERT_NE(ip4_1, ip4_2);
26   ASSERT_NE(ip6_1, ip6_2);
27   ASSERT_NE(ip4_mapped_1, ip4_mapped_2);
28 
29   EXPECT_EQ(-1, GetAddressMismatch(IPEndPoint(), IPEndPoint()));
30   EXPECT_EQ(-1, GetAddressMismatch(IPEndPoint(), IPEndPoint(ip4_1, 443)));
31   EXPECT_EQ(-1, GetAddressMismatch(IPEndPoint(ip4_1, 443), IPEndPoint()));
32 
33   EXPECT_EQ(QUIC_ADDRESS_AND_PORT_MATCH_V4_V4,
34             GetAddressMismatch(IPEndPoint(ip4_1, 443), IPEndPoint(ip4_1, 443)));
35   EXPECT_EQ(QUIC_ADDRESS_AND_PORT_MATCH_V4_V4,
36             GetAddressMismatch(IPEndPoint(ip4_1, 443),
37                                IPEndPoint(ip4_mapped_1, 443)));
38   EXPECT_EQ(QUIC_ADDRESS_AND_PORT_MATCH_V4_V4,
39             GetAddressMismatch(IPEndPoint(ip4_mapped_1, 443),
40                                IPEndPoint(ip4_mapped_1, 443)));
41   EXPECT_EQ(QUIC_ADDRESS_AND_PORT_MATCH_V6_V6,
42             GetAddressMismatch(IPEndPoint(ip6_1, 443), IPEndPoint(ip6_1, 443)));
43 
44   EXPECT_EQ(QUIC_PORT_MISMATCH_V4_V4,
45             GetAddressMismatch(IPEndPoint(ip4_1, 80), IPEndPoint(ip4_1, 443)));
46   EXPECT_EQ(
47       QUIC_PORT_MISMATCH_V4_V4,
48       GetAddressMismatch(IPEndPoint(ip4_1, 80), IPEndPoint(ip4_mapped_1, 443)));
49   EXPECT_EQ(QUIC_PORT_MISMATCH_V4_V4,
50             GetAddressMismatch(IPEndPoint(ip4_mapped_1, 80),
51                                IPEndPoint(ip4_mapped_1, 443)));
52   EXPECT_EQ(QUIC_PORT_MISMATCH_V6_V6,
53             GetAddressMismatch(IPEndPoint(ip6_1, 80), IPEndPoint(ip6_1, 443)));
54 
55   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V4,
56             GetAddressMismatch(IPEndPoint(ip4_1, 443), IPEndPoint(ip4_2, 443)));
57   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V4,
58             GetAddressMismatch(IPEndPoint(ip4_1, 443),
59                                IPEndPoint(ip4_mapped_2, 443)));
60   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V4,
61             GetAddressMismatch(IPEndPoint(ip4_mapped_1, 443),
62                                IPEndPoint(ip4_mapped_2, 443)));
63   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V4,
64             GetAddressMismatch(IPEndPoint(ip4_1, 80), IPEndPoint(ip4_2, 443)));
65   EXPECT_EQ(
66       QUIC_ADDRESS_MISMATCH_V4_V4,
67       GetAddressMismatch(IPEndPoint(ip4_1, 80), IPEndPoint(ip4_mapped_2, 443)));
68   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V4,
69             GetAddressMismatch(IPEndPoint(ip4_mapped_1, 80),
70                                IPEndPoint(ip4_mapped_2, 443)));
71   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V6_V6,
72             GetAddressMismatch(IPEndPoint(ip6_1, 443), IPEndPoint(ip6_2, 443)));
73   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V6_V6,
74             GetAddressMismatch(IPEndPoint(ip6_1, 80), IPEndPoint(ip6_2, 443)));
75   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V6,
76             GetAddressMismatch(IPEndPoint(ip4_1, 443), IPEndPoint(ip6_1, 443)));
77   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V6,
78             GetAddressMismatch(IPEndPoint(ip4_mapped_1, 443),
79                                IPEndPoint(ip6_1, 443)));
80   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V4_V6,
81             GetAddressMismatch(IPEndPoint(ip4_1, 80), IPEndPoint(ip6_1, 443)));
82   EXPECT_EQ(
83       QUIC_ADDRESS_MISMATCH_V4_V6,
84       GetAddressMismatch(IPEndPoint(ip4_mapped_1, 80), IPEndPoint(ip6_1, 443)));
85   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V6_V4,
86             GetAddressMismatch(IPEndPoint(ip6_1, 443), IPEndPoint(ip4_1, 443)));
87   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V6_V4,
88             GetAddressMismatch(IPEndPoint(ip6_1, 443),
89                                IPEndPoint(ip4_mapped_1, 443)));
90   EXPECT_EQ(QUIC_ADDRESS_MISMATCH_V6_V4,
91             GetAddressMismatch(IPEndPoint(ip6_1, 80), IPEndPoint(ip4_1, 443)));
92   EXPECT_EQ(
93       QUIC_ADDRESS_MISMATCH_V6_V4,
94       GetAddressMismatch(IPEndPoint(ip6_1, 80), IPEndPoint(ip4_mapped_1, 443)));
95 }
96 
97 }  // namespace net::test
98