1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2020 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 "net/base/scheme_host_port_matcher.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace net {
- namespace {
- TEST(SchemeHostPortMatcherTest, ParseMultipleRules) {
- SchemeHostPortMatcher matcher =
- SchemeHostPortMatcher::FromRawString(".google.com , .foobar.com:30");
- EXPECT_EQ(2u, matcher.rules().size());
- EXPECT_TRUE(matcher.Includes(GURL("http://baz.google.com:40")));
- EXPECT_FALSE(matcher.Includes(GURL("http://google.com:40")));
- EXPECT_TRUE(matcher.Includes(GURL("http://bar.foobar.com:30")));
- EXPECT_FALSE(matcher.Includes(GURL("http://bar.foobar.com")));
- EXPECT_FALSE(matcher.Includes(GURL("http://bar.foobar.com:33")));
- }
- TEST(SchemeHostPortMatcherTest, WithBadInputs) {
- SchemeHostPortMatcher matcher = SchemeHostPortMatcher::FromRawString(
- ":// , , .google.com , , http://baz");
- EXPECT_EQ(2u, matcher.rules().size());
- EXPECT_EQ("*.google.com", matcher.rules()[0]->ToString());
- EXPECT_EQ("http://baz", matcher.rules()[1]->ToString());
- EXPECT_TRUE(matcher.Includes(GURL("http://baz.google.com:40")));
- EXPECT_TRUE(matcher.Includes(GURL("http://baz")));
- EXPECT_FALSE(matcher.Includes(GURL("http://google.com")));
- }
- // Tests that URLMatcher does not include logic specific to ProxyBypassRules.
- // * Should not implicitly bypass localhost or link-local addresses
- // * Should not match proxy bypass specific rules like <-loopback> and <local>
- //
- // Historically, SchemeHostPortMatcher was refactored out of ProxyBypassRules.
- // This test confirms that the layering separation is as expected.
- TEST(SchemeHostPortMatcherTest, DoesNotMimicProxyBypassRules) {
- // Should not parse <-loopback> as its own rule (will treat it as a hostname
- // rule).
- SchemeHostPortMatcher matcher =
- SchemeHostPortMatcher::FromRawString("<-loopback>");
- EXPECT_EQ(1u, matcher.rules().size());
- EXPECT_EQ("<-loopback>", matcher.rules().front()->ToString());
- // Should not parse <local> as its own rule (will treat it as a hostname
- // rule).
- matcher = SchemeHostPortMatcher::FromRawString("<local>");
- EXPECT_EQ(1u, matcher.rules().size());
- EXPECT_EQ("<local>", matcher.rules().front()->ToString());
- // Should not implicitly match localhost or link-local addresses.
- matcher = SchemeHostPortMatcher::FromRawString("www.example.com");
- EXPECT_EQ(SchemeHostPortMatcherResult::kNoMatch,
- matcher.Evaluate(GURL("http://localhost")));
- EXPECT_EQ(SchemeHostPortMatcherResult::kNoMatch,
- matcher.Evaluate(GURL("http://169.254.1.1")));
- }
- } // namespace
- } // namespace net
|