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