// Copyright (c) 2010 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/host_mapping_rules.h" #include "net/base/host_port_pair.h" #include "testing/gtest/include/gtest/gtest.h" namespace net { namespace { TEST(HostMappingRulesTest, SetRulesFromString) { HostMappingRules rules; rules.SetRulesFromString( "map *.com baz , map *.net bar:60, EXCLUDE *.foo.com"); HostPortPair host_port("test", 1234); EXPECT_FALSE(rules.RewriteHost(&host_port)); EXPECT_EQ("test", host_port.host); EXPECT_EQ(1234u, host_port.port); host_port = HostPortPair("chrome.net", 80); EXPECT_TRUE(rules.RewriteHost(&host_port)); EXPECT_EQ("bar", host_port.host); EXPECT_EQ(60u, host_port.port); host_port = HostPortPair("crack.com", 80); EXPECT_TRUE(rules.RewriteHost(&host_port)); EXPECT_EQ("baz", host_port.host); EXPECT_EQ(80u, host_port.port); host_port = HostPortPair("wtf.foo.com", 666); EXPECT_FALSE(rules.RewriteHost(&host_port)); EXPECT_EQ("wtf.foo.com", host_port.host); EXPECT_EQ(666u, host_port.port); } // Parsing bad rules should silently discard the rule (and never crash). TEST(HostMappingRulesTest, ParseInvalidRules) { HostMappingRules rules; EXPECT_FALSE(rules.AddRuleFromString("xyz")); EXPECT_FALSE(rules.AddRuleFromString("")); EXPECT_FALSE(rules.AddRuleFromString(" ")); EXPECT_FALSE(rules.AddRuleFromString("EXCLUDE")); EXPECT_FALSE(rules.AddRuleFromString("EXCLUDE foo bar")); EXPECT_FALSE(rules.AddRuleFromString("INCLUDE")); EXPECT_FALSE(rules.AddRuleFromString("INCLUDE x")); EXPECT_FALSE(rules.AddRuleFromString("INCLUDE x :10")); } } // namespace } // namespace net