blob: b206ecfb1c1d01a678c9e688312b00df1c7d67b7 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/platform/network/network_utils.h"
#include "net/base/ip_address.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
namespace blink {
TEST(NetworkUtilsTest, IsReservedIPAddress) {
// Unreserved IPv4 addresses (in various forms).
EXPECT_FALSE(network_utils::IsReservedIPAddress("8.8.8.8"));
EXPECT_FALSE(network_utils::IsReservedIPAddress("99.64.0.0"));
EXPECT_FALSE(network_utils::IsReservedIPAddress("212.15.0.0"));
EXPECT_FALSE(network_utils::IsReservedIPAddress("212.15"));
EXPECT_FALSE(network_utils::IsReservedIPAddress("212.15.0"));
EXPECT_FALSE(network_utils::IsReservedIPAddress("3557752832"));
// Reserved IPv4 addresses (in various forms).
EXPECT_TRUE(network_utils::IsReservedIPAddress("192.168.0.0"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("192.168.0.6"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("10.0.0.5"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("10.0.0"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("10.0"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("3232235526"));
// Unreserved IPv6 addresses.
EXPECT_FALSE(network_utils::IsReservedIPAddress(
"[FFC0:ba98:7654:3210:FEDC:BA98:7654:3210]"));
EXPECT_FALSE(network_utils::IsReservedIPAddress(
"[2000:ba98:7654:2301:EFCD:BA98:7654:3210]"));
// IPv4-mapped to IPv6
EXPECT_FALSE(network_utils::IsReservedIPAddress("[::ffff:8.8.8.8]"));
// Reserved IPv6 addresses.
EXPECT_TRUE(network_utils::IsReservedIPAddress("[::1]"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("[::192.9.5.5]"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("[::ffff:192.168.1.1]"));
EXPECT_TRUE(network_utils::IsReservedIPAddress("[FEED::BEEF]"));
EXPECT_TRUE(network_utils::IsReservedIPAddress(
"[FEC0:ba98:7654:3210:FEDC:BA98:7654:3210]"));
// Not IP addresses at all.
EXPECT_FALSE(network_utils::IsReservedIPAddress("example.com"));
EXPECT_FALSE(network_utils::IsReservedIPAddress("127.0.0.1.example.com"));
// Moar IPv4
for (int i = 0; i < 256; i++) {
net::IPAddress address(i, 0, 0, 1);
std::string address_string = address.ToString();
if (i == 0 || i == 10 || i == 127 || i > 223) {
EXPECT_TRUE(network_utils::IsReservedIPAddress(
String::FromUTF8(address_string.data(), address_string.length())));
} else {
EXPECT_FALSE(network_utils::IsReservedIPAddress(
String::FromUTF8(address_string.data(), address_string.length())));
}
}
}
TEST(NetworkUtilsTest, GetDomainAndRegistry) {
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
"", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
".", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
"..", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
"com", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
".com", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
"www.example.com:8000",
network_utils::kIncludePrivateRegistries));
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
"localhost", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("", network_utils::GetDomainAndRegistry(
"127.0.0.1", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("example.com",
network_utils::GetDomainAndRegistry(
"example.com", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("example.com",
network_utils::GetDomainAndRegistry(
"www.example.com", network_utils::kIncludePrivateRegistries));
EXPECT_EQ("example.com", network_utils::GetDomainAndRegistry(
"static.example.com",
network_utils::kIncludePrivateRegistries));
EXPECT_EQ("example.com", network_utils::GetDomainAndRegistry(
"multilevel.www.example.com",
network_utils::kIncludePrivateRegistries));
EXPECT_EQ("example.co.uk",
network_utils::GetDomainAndRegistry(
"www.example.co.uk", network_utils::kIncludePrivateRegistries));
// Verify proper handling of 'private registries'.
EXPECT_EQ("foo.appspot.com", network_utils::GetDomainAndRegistry(
"www.foo.appspot.com",
network_utils::kIncludePrivateRegistries));
EXPECT_EQ("appspot.com", network_utils::GetDomainAndRegistry(
"www.foo.appspot.com",
network_utils::kExcludePrivateRegistries));
// Verify that unknown registries are included.
EXPECT_EQ("example.notarealregistry",
network_utils::GetDomainAndRegistry(
"www.example.notarealregistry",
network_utils::kIncludePrivateRegistries));
}
} // namespace blink