| OLD | NEW |
| (Empty) |
| 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 "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_configurator.
h" | |
| 6 | |
| 7 #include <string> | |
| 8 | |
| 9 #include "base/memory/scoped_ptr.h" | |
| 10 #include "base/prefs/pref_registry_simple.h" | |
| 11 #include "base/prefs/scoped_user_pref_update.h" | |
| 12 #include "base/prefs/testing_pref_service.h" | |
| 13 #include "base/test/test_simple_task_runner.h" | |
| 14 #include "base/values.h" | |
| 15 #include "chrome/common/pref_names.h" | |
| 16 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_event
_store.h" | |
| 17 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param
s.h" | |
| 18 #include "net/base/capturing_net_log.h" | |
| 19 #include "testing/gmock/include/gmock/gmock.h" | |
| 20 #include "testing/gtest/include/gtest/gtest.h" | |
| 21 | |
| 22 class DataReductionProxyConfigTest : public testing::Test { | |
| 23 public: | |
| 24 void SetUp() override { | |
| 25 PrefRegistrySimple* registry = pref_service_.registry(); | |
| 26 registry->RegisterDictionaryPref(prefs::kProxy); | |
| 27 net_log_.reset(new net::CapturingNetLog()); | |
| 28 data_reduction_proxy_event_store_.reset( | |
| 29 new data_reduction_proxy::DataReductionProxyEventStore( | |
| 30 new base::TestSimpleTaskRunner())); | |
| 31 config_.reset(new DataReductionProxyChromeConfigurator( | |
| 32 &pref_service_, | |
| 33 new base::TestSimpleTaskRunner(), | |
| 34 net_log_.get(), | |
| 35 data_reduction_proxy_event_store_.get())); | |
| 36 } | |
| 37 | |
| 38 void CheckProxyConfig( | |
| 39 const std::string& expected_mode, | |
| 40 const std::string& expected_server, | |
| 41 const std::string& expected_bypass_list) { | |
| 42 | |
| 43 const base::DictionaryValue* dict = | |
| 44 pref_service_.GetDictionary(prefs::kProxy); | |
| 45 std::string mode; | |
| 46 std::string server; | |
| 47 std::string bypass_list; | |
| 48 dict->GetString("mode", &mode); | |
| 49 ASSERT_EQ(expected_mode, mode); | |
| 50 dict->GetString("server", &server); | |
| 51 ASSERT_EQ(expected_server, server); | |
| 52 dict->GetString("bypass_list", &bypass_list); | |
| 53 ASSERT_EQ(expected_bypass_list, bypass_list); | |
| 54 } | |
| 55 | |
| 56 scoped_ptr<DataReductionProxyChromeConfigurator> config_; | |
| 57 TestingPrefServiceSimple pref_service_; | |
| 58 scoped_ptr<net::NetLog> net_log_; | |
| 59 scoped_ptr<data_reduction_proxy::DataReductionProxyEventStore> | |
| 60 data_reduction_proxy_event_store_; | |
| 61 }; | |
| 62 | |
| 63 TEST_F(DataReductionProxyConfigTest, TestUnrestricted) { | |
| 64 config_->Enable(false, | |
| 65 false, | |
| 66 "https://www.foo.com:443/", | |
| 67 "http://www.bar.com:80/", | |
| 68 ""); | |
| 69 CheckProxyConfig( | |
| 70 "fixed_servers", | |
| 71 "http=https://www.foo.com:443,http://www.bar.com:80,direct://;", | |
| 72 ""); | |
| 73 } | |
| 74 | |
| 75 TEST_F(DataReductionProxyConfigTest, TestUnrestrictedSSL) { | |
| 76 config_->Enable(false, | |
| 77 false, | |
| 78 "https://www.foo.com:443/", | |
| 79 "http://www.bar.com:80/", | |
| 80 "http://www.ssl.com:80/"); | |
| 81 CheckProxyConfig( | |
| 82 "fixed_servers", | |
| 83 "http=https://www.foo.com:443,http://www.bar.com:80,direct://;" | |
| 84 "https=http://www.ssl.com:80,direct://;", | |
| 85 ""); | |
| 86 } | |
| 87 | |
| 88 TEST_F(DataReductionProxyConfigTest, TestUnrestrictedWithBypassRule) { | |
| 89 config_->AddHostPatternToBypass("<local>"); | |
| 90 config_->AddHostPatternToBypass("*.goo.com"); | |
| 91 config_->Enable(false, | |
| 92 false, | |
| 93 "https://www.foo.com:443/", | |
| 94 "http://www.bar.com:80/", | |
| 95 ""); | |
| 96 CheckProxyConfig( | |
| 97 "fixed_servers", | |
| 98 "http=https://www.foo.com:443,http://www.bar.com:80,direct://;", | |
| 99 "<local>, *.goo.com"); | |
| 100 } | |
| 101 | |
| 102 TEST_F(DataReductionProxyConfigTest, TestUnrestrictedWithoutFallback) { | |
| 103 config_->Enable(false, false, "https://www.foo.com:443/", "", ""); | |
| 104 CheckProxyConfig("fixed_servers", | |
| 105 "http=https://www.foo.com:443,direct://;", | |
| 106 ""); | |
| 107 } | |
| 108 | |
| 109 TEST_F(DataReductionProxyConfigTest, TestRestricted) { | |
| 110 config_->Enable(true, | |
| 111 false, | |
| 112 "https://www.foo.com:443/", | |
| 113 "http://www.bar.com:80/", | |
| 114 ""); | |
| 115 CheckProxyConfig("fixed_servers", | |
| 116 "http=http://www.bar.com:80,direct://;", | |
| 117 ""); | |
| 118 } | |
| 119 | |
| 120 TEST_F(DataReductionProxyConfigTest, TestFallbackRestricted) { | |
| 121 config_->Enable(false, | |
| 122 true, | |
| 123 "https://www.foo.com:443/", | |
| 124 "http://www.bar.com:80/", | |
| 125 ""); | |
| 126 CheckProxyConfig("fixed_servers", | |
| 127 "http=https://www.foo.com:443,direct://;", | |
| 128 ""); | |
| 129 } | |
| 130 | |
| 131 TEST_F(DataReductionProxyConfigTest, TestBothRestricted) { | |
| 132 DictionaryPrefUpdate update(&pref_service_, prefs::kProxy); | |
| 133 base::DictionaryValue* dict = update.Get(); | |
| 134 dict->SetString("mode", "system"); | |
| 135 | |
| 136 config_->Enable(true, | |
| 137 true, | |
| 138 "https://www.foo.com:443/", | |
| 139 "http://www.bar.com:80/", | |
| 140 ""); | |
| 141 CheckProxyConfig("system", "", ""); | |
| 142 } | |
| 143 | |
| 144 TEST_F(DataReductionProxyConfigTest, TestDisable) { | |
| 145 data_reduction_proxy::DataReductionProxyParams params( | |
| 146 data_reduction_proxy::DataReductionProxyParams:: | |
| 147 kAllowAllProxyConfigurations); | |
| 148 config_->Enable(false, | |
| 149 false, | |
| 150 params.origin().spec(), | |
| 151 params.fallback_origin().spec(), | |
| 152 ""); | |
| 153 config_->Disable(); | |
| 154 CheckProxyConfig("system", "", ""); | |
| 155 } | |
| 156 | |
| 157 TEST_F(DataReductionProxyConfigTest, TestDisableWithUserOverride) { | |
| 158 data_reduction_proxy::DataReductionProxyParams params( | |
| 159 data_reduction_proxy::DataReductionProxyParams:: | |
| 160 kAllowAllProxyConfigurations); | |
| 161 config_->Enable(false, | |
| 162 false, | |
| 163 params.origin().spec(), | |
| 164 params.fallback_origin().spec(), | |
| 165 ""); | |
| 166 | |
| 167 // Override the data reduction proxy. | |
| 168 DictionaryPrefUpdate update(&pref_service_, prefs::kProxy); | |
| 169 base::DictionaryValue* dict = update.Get(); | |
| 170 dict->SetString("server", "https://www.baz.com:22/"); | |
| 171 | |
| 172 // This should have no effect since proxy server was overridden. | |
| 173 config_->Disable(); | |
| 174 | |
| 175 CheckProxyConfig("fixed_servers", "https://www.baz.com:22/", ""); | |
| 176 } | |
| 177 | |
| 178 TEST_F(DataReductionProxyConfigTest, TestBypassList) { | |
| 179 config_->AddHostPatternToBypass("http://www.google.com"); | |
| 180 config_->AddHostPatternToBypass("fefe:13::abc/33"); | |
| 181 config_->AddURLPatternToBypass("foo.org/images/*"); | |
| 182 config_->AddURLPatternToBypass("http://foo.com/*"); | |
| 183 config_->AddURLPatternToBypass("http://baz.com:22/bar/*"); | |
| 184 config_->AddURLPatternToBypass("http://*bat.com/bar/*"); | |
| 185 | |
| 186 std::string expected[] = { | |
| 187 "http://www.google.com", | |
| 188 "fefe:13::abc/33", | |
| 189 "foo.org", | |
| 190 "http://foo.com", | |
| 191 "http://baz.com:22", | |
| 192 "http://*bat.com" | |
| 193 }; | |
| 194 | |
| 195 ASSERT_EQ(config_->bypass_rules_.size(), 6u); | |
| 196 int i = 0; | |
| 197 for (std::vector<std::string>::iterator it = config_->bypass_rules_.begin(); | |
| 198 it != config_->bypass_rules_.end(); ++it) { | |
| 199 EXPECT_EQ(expected[i++], *it); | |
| 200 } | |
| 201 } | |
| 202 | |
| OLD | NEW |