blob: f67d0499aac7a66860c2a8dff12fcb96872fe14c [file] [log] [blame]
/*
* Copyright 2014 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Author: jefftk@google.com (Jeff Kaufman)
#include "pagespeed/kernel/http/domain_registry.h"
#include "pagespeed/kernel/base/gtest.h"
namespace net_instaweb {
namespace {
TEST(DomainRegistry, MinimalPrivateSuffix) {
domain_registry::Init();
// com is a public suffix, so both google.com and www.google.com should yield
// google.com
EXPECT_EQ("google.com",
domain_registry::MinimalPrivateSuffix("google.com"));
EXPECT_EQ("google.com",
domain_registry::MinimalPrivateSuffix("www.google.com"));
// We should allow trailing dots, which specify fully-qualified domain names.
EXPECT_EQ("google.com.",
domain_registry::MinimalPrivateSuffix("www.google.com."));
EXPECT_EQ("google.com.",
domain_registry::MinimalPrivateSuffix("google.com."));
// But two trailing dots is an error, and on errors we "fail secure" by
// using the whole string.
EXPECT_EQ("www.google.com..",
domain_registry::MinimalPrivateSuffix("www.google.com.."));
// co.uk is a public suffix, so *google.co.uk just becomes google.uk
EXPECT_EQ("google.co.uk",
domain_registry::MinimalPrivateSuffix("google.co.uk"));
EXPECT_EQ("google.co.uk",
domain_registry::MinimalPrivateSuffix("www.google.co.uk"));
EXPECT_EQ("google.co.uk",
domain_registry::MinimalPrivateSuffix("foo.bar.google.co.uk"));
// Check that we handle lots of url components properly.
EXPECT_EQ("l.co.uk", domain_registry::MinimalPrivateSuffix(
"a.b.c.d.e.f.g.h.i.j.k.l.co.uk"));
// Check that we handle public suffixes that are not tlds.
EXPECT_EQ("example.appspot.com",
domain_registry::MinimalPrivateSuffix("example.appspot.com"));
EXPECT_EQ(
"example.appspot.com",
domain_registry::MinimalPrivateSuffix("www.example.appspot.com"));
// If a tld doesn't exist, again fail secure.
EXPECT_EQ(
"a.b.c.this.doesntexist",
domain_registry::MinimalPrivateSuffix("a.b.c.this.doesntexist"));
// Check that we don't give errors on various kinds of invalid hostnames.
EXPECT_EQ("com", domain_registry::MinimalPrivateSuffix("com"));
EXPECT_EQ("", domain_registry::MinimalPrivateSuffix(""));
EXPECT_EQ(".", domain_registry::MinimalPrivateSuffix("."));
EXPECT_EQ("..", domain_registry::MinimalPrivateSuffix(".."));
EXPECT_EQ("..doesntexist.",
domain_registry::MinimalPrivateSuffix("..doesntexist."));
}
} // namespace
} // namespace net_instaweb