Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Unit tests for helper functions for the Chrome Extensions Proxy Settings API. | 5 // Unit tests for helper functions for the Chrome Extensions Proxy Settings API. |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h" | 9 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h" |
| 10 #include "chrome/browser/extensions/api/proxy/proxy_api_helpers.h" | 10 #include "chrome/browser/extensions/api/proxy/proxy_api_helpers.h" |
| 11 #include "chrome/browser/prefs/proxy_config_dictionary.h" | 11 #include "chrome/browser/prefs/proxy_config_dictionary.h" |
| 12 #include "chrome/browser/prefs/proxy_prefs.h" | 12 #include "chrome/browser/prefs/proxy_prefs.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 namespace extensions { | 15 namespace extensions { |
| 16 | 16 |
| 17 namespace keys = proxy_api_constants; | 17 namespace keys = proxy_api_constants; |
| 18 | 18 |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 const char kSamplePacScript[] = "test"; | 21 const char kSamplePacScript[] = "test"; |
| 22 const char kSamplePacScriptAsDataUrl[] = | 22 const char kSamplePacScriptAsDataUrl[] = |
| 23 "data:application/x-ns-proxy-autoconfig;base64,dGVzdA=="; | 23 "data:application/x-ns-proxy-autoconfig;base64,dGVzdA=="; |
| 24 const char kSamplePacScriptAsDataUrl2[] = | 24 const char kSamplePacScriptAsDataUrl2[] = |
| 25 "data:;base64,dGVzdA=="; | 25 "data:;base64,dGVzdA=="; |
| 26 const char kSamplePacScriptUrl[] = "http://wpad/wpad.dat"; | 26 const char kSamplePacScriptUrl[] = "http://wpad/wpad.dat"; |
| 27 | 27 |
| 28 // Helper function to create a ProxyServer dictionary as defined in the | 28 // Helper function to create a ProxyServer dictionary as defined in the |
| 29 // extension API. | 29 // extension API. |
| 30 DictionaryValue* CreateTestProxyServerDict(const std::string& host) { | 30 base::DictionaryValue* CreateTestProxyServerDict(const std::string& host) { |
| 31 DictionaryValue* dict = new DictionaryValue; | 31 base::DictionaryValue* dict = new base::DictionaryValue; |
| 32 dict->SetString(keys::kProxyConfigRuleHost, host); | 32 dict->SetString(keys::kProxyConfigRuleHost, host); |
| 33 return dict; | 33 return dict; |
| 34 } | 34 } |
| 35 | 35 |
| 36 // Helper function to create a ProxyServer dictionary as defined in the | 36 // Helper function to create a ProxyServer dictionary as defined in the |
| 37 // extension API. | 37 // extension API. |
| 38 DictionaryValue* CreateTestProxyServerDict(const std::string& schema, | 38 base::DictionaryValue* CreateTestProxyServerDict(const std::string& schema, |
| 39 const std::string& host, | 39 const std::string& host, |
| 40 int port) { | 40 int port) { |
| 41 DictionaryValue* dict = new DictionaryValue; | 41 base::DictionaryValue* dict = new base::DictionaryValue; |
| 42 dict->SetString(keys::kProxyConfigRuleScheme, schema); | 42 dict->SetString(keys::kProxyConfigRuleScheme, schema); |
| 43 dict->SetString(keys::kProxyConfigRuleHost, host); | 43 dict->SetString(keys::kProxyConfigRuleHost, host); |
| 44 dict->SetInteger(keys::kProxyConfigRulePort, port); | 44 dict->SetInteger(keys::kProxyConfigRulePort, port); |
| 45 return dict; | 45 return dict; |
| 46 } | 46 } |
| 47 | 47 |
| 48 } // namespace | 48 } // namespace |
| 49 | 49 |
| 50 namespace proxy_api_helpers { | 50 namespace proxy_api_helpers { |
| 51 | 51 |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 62 EXPECT_EQ(kSamplePacScript, out); | 62 EXPECT_EQ(kSamplePacScript, out); |
| 63 | 63 |
| 64 // Check that we don't require a mime-type. | 64 // Check that we don't require a mime-type. |
| 65 ASSERT_TRUE(CreatePACScriptFromDataURL(kSamplePacScriptAsDataUrl2, &out)); | 65 ASSERT_TRUE(CreatePACScriptFromDataURL(kSamplePacScriptAsDataUrl2, &out)); |
| 66 EXPECT_EQ(kSamplePacScript, out); | 66 EXPECT_EQ(kSamplePacScript, out); |
| 67 | 67 |
| 68 EXPECT_FALSE(CreatePACScriptFromDataURL("http://www.google.com", &out)); | 68 EXPECT_FALSE(CreatePACScriptFromDataURL("http://www.google.com", &out)); |
| 69 } | 69 } |
| 70 | 70 |
| 71 TEST(ExtensionProxyApiHelpers, GetProxyModeFromExtensionPref) { | 71 TEST(ExtensionProxyApiHelpers, GetProxyModeFromExtensionPref) { |
| 72 DictionaryValue proxy_config; | 72 base::DictionaryValue proxy_config; |
| 73 ProxyPrefs::ProxyMode mode; | 73 ProxyPrefs::ProxyMode mode; |
| 74 std::string error; | 74 std::string error; |
| 75 bool bad_message = false; | 75 bool bad_message = false; |
| 76 | 76 |
| 77 // Test positive case. | 77 // Test positive case. |
| 78 proxy_config.SetString( | 78 proxy_config.SetString( |
| 79 keys::kProxyConfigMode, | 79 keys::kProxyConfigMode, |
| 80 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_DIRECT)); | 80 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_DIRECT)); |
| 81 ASSERT_TRUE(GetProxyModeFromExtensionPref(&proxy_config, &mode, &error, | 81 ASSERT_TRUE(GetProxyModeFromExtensionPref(&proxy_config, &mode, &error, |
| 82 &bad_message)); | 82 &bad_message)); |
| 83 EXPECT_EQ(ProxyPrefs::MODE_DIRECT, mode); | 83 EXPECT_EQ(ProxyPrefs::MODE_DIRECT, mode); |
| 84 EXPECT_EQ(std::string(), error); | 84 EXPECT_EQ(std::string(), error); |
| 85 EXPECT_FALSE(bad_message); | 85 EXPECT_FALSE(bad_message); |
| 86 | 86 |
| 87 // Test negative case. | 87 // Test negative case. |
| 88 proxy_config.SetString(keys::kProxyConfigMode, "foobar"); | 88 proxy_config.SetString(keys::kProxyConfigMode, "foobar"); |
| 89 EXPECT_FALSE(GetProxyModeFromExtensionPref(&proxy_config, &mode, &error, | 89 EXPECT_FALSE(GetProxyModeFromExtensionPref(&proxy_config, &mode, &error, |
| 90 &bad_message)); | 90 &bad_message)); |
| 91 EXPECT_TRUE(bad_message); | 91 EXPECT_TRUE(bad_message); |
| 92 | 92 |
| 93 // Do not test |error|, as an invalid enumeration value is considered an | 93 // Do not test |error|, as an invalid enumeration value is considered an |
| 94 // internal error. It should be filtered by the extensions API. | 94 // internal error. It should be filtered by the extensions API. |
| 95 } | 95 } |
| 96 | 96 |
| 97 TEST(ExtensionProxyApiHelpers, GetPacUrlFromExtensionPref) { | 97 TEST(ExtensionProxyApiHelpers, GetPacUrlFromExtensionPref) { |
| 98 std::string out; | 98 std::string out; |
| 99 std::string error; | 99 std::string error; |
| 100 bool bad_message = false; | 100 bool bad_message = false; |
| 101 | 101 |
| 102 DictionaryValue proxy_config; | 102 base::DictionaryValue proxy_config; |
| 103 proxy_config.SetString( | 103 proxy_config.SetString( |
| 104 keys::kProxyConfigMode, | 104 keys::kProxyConfigMode, |
| 105 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_PAC_SCRIPT)); | 105 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_PAC_SCRIPT)); |
| 106 | 106 |
| 107 // Currently we are still missing a PAC script entry. | 107 // Currently we are still missing a PAC script entry. |
| 108 // This is silently ignored. | 108 // This is silently ignored. |
| 109 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error, | 109 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error, |
| 110 &bad_message)); | 110 &bad_message)); |
| 111 EXPECT_EQ(std::string(), out); | 111 EXPECT_EQ(std::string(), out); |
| 112 EXPECT_EQ(std::string(), error); | 112 EXPECT_EQ(std::string(), error); |
| 113 EXPECT_FALSE(bad_message); | 113 EXPECT_FALSE(bad_message); |
| 114 | 114 |
| 115 // Set up a pac script. | 115 // Set up a pac script. |
| 116 DictionaryValue* pacScriptDict = new DictionaryValue; | 116 base::DictionaryValue* pacScriptDict = new base::DictionaryValue; |
| 117 pacScriptDict->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl); | 117 pacScriptDict->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl); |
| 118 proxy_config.Set(keys::kProxyConfigPacScript, pacScriptDict); | 118 proxy_config.Set(keys::kProxyConfigPacScript, pacScriptDict); |
| 119 | 119 |
| 120 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error, | 120 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error, |
| 121 &bad_message)); | 121 &bad_message)); |
| 122 EXPECT_EQ(kSamplePacScriptUrl, out); | 122 EXPECT_EQ(kSamplePacScriptUrl, out); |
| 123 EXPECT_EQ(std::string(), error); | 123 EXPECT_EQ(std::string(), error); |
| 124 EXPECT_FALSE(bad_message); | 124 EXPECT_FALSE(bad_message); |
| 125 } | 125 } |
| 126 | 126 |
| 127 TEST(ExtensionProxyApiHelpers, GetPacDataFromExtensionPref) { | 127 TEST(ExtensionProxyApiHelpers, GetPacDataFromExtensionPref) { |
| 128 std::string out; | 128 std::string out; |
| 129 std::string error; | 129 std::string error; |
| 130 bool bad_message = false; | 130 bool bad_message = false; |
| 131 | 131 |
| 132 DictionaryValue proxy_config; | 132 base::DictionaryValue proxy_config; |
| 133 proxy_config.SetString( | 133 proxy_config.SetString( |
| 134 keys::kProxyConfigMode, | 134 keys::kProxyConfigMode, |
| 135 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_PAC_SCRIPT)); | 135 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_PAC_SCRIPT)); |
| 136 | 136 |
| 137 // Currently we are still missing a PAC data entry. This is silently ignored. | 137 // Currently we are still missing a PAC data entry. This is silently ignored. |
| 138 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error, | 138 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error, |
| 139 &bad_message)); | 139 &bad_message)); |
| 140 EXPECT_EQ(std::string(), out); | 140 EXPECT_EQ(std::string(), out); |
| 141 EXPECT_EQ(std::string(), error); | 141 EXPECT_EQ(std::string(), error); |
| 142 EXPECT_FALSE(bad_message); | 142 EXPECT_FALSE(bad_message); |
| 143 | 143 |
| 144 // Set up a PAC script. | 144 // Set up a PAC script. |
| 145 DictionaryValue* pacScriptDict = new DictionaryValue; | 145 base::DictionaryValue* pacScriptDict = new base::DictionaryValue; |
| 146 pacScriptDict->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript); | 146 pacScriptDict->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript); |
| 147 proxy_config.Set(keys::kProxyConfigPacScript, pacScriptDict); | 147 proxy_config.Set(keys::kProxyConfigPacScript, pacScriptDict); |
| 148 | 148 |
| 149 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error, | 149 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error, |
| 150 &bad_message)); | 150 &bad_message)); |
| 151 EXPECT_EQ(kSamplePacScript, out); | 151 EXPECT_EQ(kSamplePacScript, out); |
| 152 EXPECT_EQ(std::string(), error); | 152 EXPECT_EQ(std::string(), error); |
| 153 EXPECT_FALSE(bad_message); | 153 EXPECT_FALSE(bad_message); |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST(ExtensionProxyApiHelpers, GetProxyRulesStringFromExtensionPref) { | 156 TEST(ExtensionProxyApiHelpers, GetProxyRulesStringFromExtensionPref) { |
| 157 std::string out; | 157 std::string out; |
| 158 std::string error; | 158 std::string error; |
| 159 bool bad_message = false; | 159 bool bad_message = false; |
| 160 | 160 |
| 161 DictionaryValue proxy_config; | 161 base::DictionaryValue proxy_config; |
| 162 proxy_config.SetString( | 162 proxy_config.SetString( |
| 163 keys::kProxyConfigMode, | 163 keys::kProxyConfigMode, |
| 164 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); | 164 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); |
| 165 | 165 |
| 166 // Currently we are still missing a proxy config entry. | 166 // Currently we are still missing a proxy config entry. |
| 167 // This is silently ignored. | 167 // This is silently ignored. |
| 168 ASSERT_TRUE( | 168 ASSERT_TRUE( |
| 169 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error, | 169 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error, |
| 170 &bad_message)); | 170 &bad_message)); |
| 171 EXPECT_EQ(std::string(), out); | 171 EXPECT_EQ(std::string(), out); |
| 172 EXPECT_EQ(std::string(), error); | 172 EXPECT_EQ(std::string(), error); |
| 173 | 173 |
| 174 DictionaryValue* proxy_rules = new DictionaryValue; | 174 base::DictionaryValue* proxy_rules = new base::DictionaryValue; |
| 175 proxy_rules->Set(keys::field_name[1], CreateTestProxyServerDict("proxy1")); | 175 proxy_rules->Set(keys::field_name[1], CreateTestProxyServerDict("proxy1")); |
| 176 proxy_rules->Set(keys::field_name[2], CreateTestProxyServerDict("proxy2")); | 176 proxy_rules->Set(keys::field_name[2], CreateTestProxyServerDict("proxy2")); |
| 177 proxy_config.Set(keys::kProxyConfigRules, proxy_rules); | 177 proxy_config.Set(keys::kProxyConfigRules, proxy_rules); |
| 178 | 178 |
| 179 ASSERT_TRUE( | 179 ASSERT_TRUE( |
| 180 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error, | 180 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error, |
| 181 &bad_message)); | 181 &bad_message)); |
| 182 EXPECT_EQ("http=proxy1:80;https=proxy2:80", out); | 182 EXPECT_EQ("http=proxy1:80;https=proxy2:80", out); |
| 183 EXPECT_EQ(std::string(), error); | 183 EXPECT_EQ(std::string(), error); |
| 184 EXPECT_FALSE(bad_message); | 184 EXPECT_FALSE(bad_message); |
| 185 } | 185 } |
| 186 | 186 |
| 187 TEST(ExtensionProxyApiHelpers, GetBypassListFromExtensionPref) { | 187 TEST(ExtensionProxyApiHelpers, GetBypassListFromExtensionPref) { |
| 188 std::string out; | 188 std::string out; |
| 189 std::string error; | 189 std::string error; |
| 190 bool bad_message = false; | 190 bool bad_message = false; |
| 191 | 191 |
| 192 DictionaryValue proxy_config; | 192 base::DictionaryValue proxy_config; |
| 193 proxy_config.SetString( | 193 proxy_config.SetString( |
| 194 keys::kProxyConfigMode, | 194 keys::kProxyConfigMode, |
| 195 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); | 195 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); |
| 196 | 196 |
| 197 // Currently we are still missing a proxy config entry. | 197 // Currently we are still missing a proxy config entry. |
| 198 // This is silently ignored. | 198 // This is silently ignored. |
| 199 ASSERT_TRUE( | 199 ASSERT_TRUE( |
| 200 GetBypassListFromExtensionPref(&proxy_config, &out, &error, | 200 GetBypassListFromExtensionPref(&proxy_config, &out, &error, |
| 201 &bad_message)); | 201 &bad_message)); |
| 202 EXPECT_EQ(std::string(), out); | 202 EXPECT_EQ(std::string(), out); |
| 203 EXPECT_EQ(std::string(), error); | 203 EXPECT_EQ(std::string(), error); |
| 204 EXPECT_FALSE(bad_message); | 204 EXPECT_FALSE(bad_message); |
| 205 | 205 |
| 206 ListValue* bypass_list = new ListValue; | 206 base::ListValue* bypass_list = new base::ListValue; |
| 207 bypass_list->Append(Value::CreateStringValue("host1")); | 207 bypass_list->Append(Value::CreateStringValue("host1")); |
| 208 bypass_list->Append(Value::CreateStringValue("host2")); | 208 bypass_list->Append(Value::CreateStringValue("host2")); |
| 209 DictionaryValue* proxy_rules = new DictionaryValue; | 209 base::DictionaryValue* proxy_rules = new base::DictionaryValue; |
| 210 proxy_rules->Set(keys::kProxyConfigBypassList, bypass_list); | 210 proxy_rules->Set(keys::kProxyConfigBypassList, bypass_list); |
| 211 proxy_config.Set(keys::kProxyConfigRules, proxy_rules); | 211 proxy_config.Set(keys::kProxyConfigRules, proxy_rules); |
| 212 | 212 |
| 213 ASSERT_TRUE( | 213 ASSERT_TRUE( |
| 214 GetBypassListFromExtensionPref(&proxy_config, &out, &error, | 214 GetBypassListFromExtensionPref(&proxy_config, &out, &error, |
| 215 &bad_message)); | 215 &bad_message)); |
| 216 EXPECT_EQ("host1,host2", out); | 216 EXPECT_EQ("host1,host2", out); |
| 217 EXPECT_EQ(std::string(), error); | 217 EXPECT_EQ(std::string(), error); |
| 218 EXPECT_FALSE(bad_message); | 218 EXPECT_FALSE(bad_message); |
| 219 } | 219 } |
| 220 | 220 |
| 221 TEST(ExtensionProxyApiHelpers, CreateProxyConfigDict) { | 221 TEST(ExtensionProxyApiHelpers, CreateProxyConfigDict) { |
| 222 std::string error; | 222 std::string error; |
| 223 scoped_ptr<DictionaryValue> exp_direct(ProxyConfigDictionary::CreateDirect()); | 223 scoped_ptr<base::DictionaryValue> exp_direct( |
| 224 scoped_ptr<DictionaryValue> out_direct( | 224 ProxyConfigDictionary::CreateDirect()); |
| 225 scoped_ptr<base::DictionaryValue> out_direct( | |
| 225 CreateProxyConfigDict(ProxyPrefs::MODE_DIRECT, | 226 CreateProxyConfigDict(ProxyPrefs::MODE_DIRECT, |
| 226 false, | 227 false, |
| 227 std::string(), | 228 std::string(), |
| 228 std::string(), | 229 std::string(), |
| 229 std::string(), | 230 std::string(), |
| 230 std::string(), | 231 std::string(), |
| 231 &error)); | 232 &error)); |
| 232 EXPECT_TRUE(Value::Equals(exp_direct.get(), out_direct.get())); | 233 EXPECT_TRUE(Value::Equals(exp_direct.get(), out_direct.get())); |
| 233 | 234 |
| 234 scoped_ptr<DictionaryValue> exp_auto( | 235 scoped_ptr<base::DictionaryValue> exp_auto( |
| 235 ProxyConfigDictionary::CreateAutoDetect()); | 236 ProxyConfigDictionary::CreateAutoDetect()); |
| 236 scoped_ptr<DictionaryValue> out_auto( | 237 scoped_ptr<base::DictionaryValue> out_auto( |
| 237 CreateProxyConfigDict(ProxyPrefs::MODE_AUTO_DETECT, | 238 CreateProxyConfigDict(ProxyPrefs::MODE_AUTO_DETECT, |
| 238 false, | 239 false, |
| 239 std::string(), | 240 std::string(), |
| 240 std::string(), | 241 std::string(), |
| 241 std::string(), | 242 std::string(), |
| 242 std::string(), | 243 std::string(), |
| 243 &error)); | 244 &error)); |
| 244 EXPECT_TRUE(Value::Equals(exp_auto.get(), out_auto.get())); | 245 EXPECT_TRUE(Value::Equals(exp_auto.get(), out_auto.get())); |
| 245 | 246 |
| 246 scoped_ptr<DictionaryValue> exp_pac_url( | 247 scoped_ptr<base::DictionaryValue> exp_pac_url( |
| 247 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); | 248 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); |
| 248 scoped_ptr<DictionaryValue> out_pac_url( | 249 scoped_ptr<base::DictionaryValue> out_pac_url( |
| 249 CreateProxyConfigDict(ProxyPrefs::MODE_PAC_SCRIPT, | 250 CreateProxyConfigDict(ProxyPrefs::MODE_PAC_SCRIPT, |
| 250 false, | 251 false, |
| 251 kSamplePacScriptUrl, | 252 kSamplePacScriptUrl, |
| 252 std::string(), | 253 std::string(), |
| 253 std::string(), | 254 std::string(), |
| 254 std::string(), | 255 std::string(), |
| 255 &error)); | 256 &error)); |
| 256 EXPECT_TRUE(Value::Equals(exp_pac_url.get(), out_pac_url.get())); | 257 EXPECT_TRUE(Value::Equals(exp_pac_url.get(), out_pac_url.get())); |
| 257 | 258 |
| 258 scoped_ptr<DictionaryValue> exp_pac_data( | 259 scoped_ptr<base::DictionaryValue> exp_pac_data( |
| 259 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false)); | 260 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false)); |
| 260 scoped_ptr<DictionaryValue> out_pac_data( | 261 scoped_ptr<base::DictionaryValue> out_pac_data( |
| 261 CreateProxyConfigDict(ProxyPrefs::MODE_PAC_SCRIPT, | 262 CreateProxyConfigDict(ProxyPrefs::MODE_PAC_SCRIPT, |
| 262 false, | 263 false, |
| 263 std::string(), | 264 std::string(), |
| 264 kSamplePacScript, | 265 kSamplePacScript, |
| 265 std::string(), | 266 std::string(), |
| 266 std::string(), | 267 std::string(), |
| 267 &error)); | 268 &error)); |
| 268 EXPECT_TRUE(Value::Equals(exp_pac_data.get(), out_pac_data.get())); | 269 EXPECT_TRUE(Value::Equals(exp_pac_data.get(), out_pac_data.get())); |
| 269 | 270 |
| 270 scoped_ptr<DictionaryValue> exp_fixed( | 271 scoped_ptr<base::DictionaryValue> exp_fixed( |
| 271 ProxyConfigDictionary::CreateFixedServers("foo:80", "localhost")); | 272 ProxyConfigDictionary::CreateFixedServers("foo:80", "localhost")); |
| 272 scoped_ptr<DictionaryValue> out_fixed( | 273 scoped_ptr<base::DictionaryValue> out_fixed( |
| 273 CreateProxyConfigDict(ProxyPrefs::MODE_FIXED_SERVERS, | 274 CreateProxyConfigDict(ProxyPrefs::MODE_FIXED_SERVERS, |
| 274 false, | 275 false, |
| 275 std::string(), | 276 std::string(), |
| 276 std::string(), | 277 std::string(), |
| 277 "foo:80", | 278 "foo:80", |
| 278 "localhost", | 279 "localhost", |
| 279 &error)); | 280 &error)); |
| 280 EXPECT_TRUE(Value::Equals(exp_fixed.get(), out_fixed.get())); | 281 EXPECT_TRUE(Value::Equals(exp_fixed.get(), out_fixed.get())); |
| 281 | 282 |
| 282 scoped_ptr<DictionaryValue> exp_system(ProxyConfigDictionary::CreateSystem()); | 283 scoped_ptr<base::DictionaryValue> exp_system( |
| 283 scoped_ptr<DictionaryValue> out_system( | 284 ProxyConfigDictionary::CreateSystem()); |
| 285 scoped_ptr<base::DictionaryValue> out_system( | |
| 284 CreateProxyConfigDict(ProxyPrefs::MODE_SYSTEM, | 286 CreateProxyConfigDict(ProxyPrefs::MODE_SYSTEM, |
| 285 false, | 287 false, |
| 286 std::string(), | 288 std::string(), |
| 287 std::string(), | 289 std::string(), |
| 288 std::string(), | 290 std::string(), |
| 289 std::string(), | 291 std::string(), |
| 290 &error)); | 292 &error)); |
| 291 EXPECT_TRUE(Value::Equals(exp_system.get(), out_system.get())); | 293 EXPECT_TRUE(Value::Equals(exp_system.get(), out_system.get())); |
| 292 | 294 |
| 293 // Neither of them should have set an error. | 295 // Neither of them should have set an error. |
| 294 EXPECT_EQ(std::string(), error); | 296 EXPECT_EQ(std::string(), error); |
| 295 } | 297 } |
| 296 | 298 |
| 297 TEST(ExtensionProxyApiHelpers, GetProxyServer) { | 299 TEST(ExtensionProxyApiHelpers, GetProxyServer) { |
| 298 DictionaryValue proxy_server_dict; | 300 base::DictionaryValue proxy_server_dict; |
| 299 net::ProxyServer created; | 301 net::ProxyServer created; |
| 300 std::string error; | 302 std::string error; |
| 301 bool bad_message = false; | 303 bool bad_message = false; |
| 302 | 304 |
| 303 // Test simplest case, no schema nor port specified --> defaults are used. | 305 // Test simplest case, no schema nor port specified --> defaults are used. |
| 304 proxy_server_dict.SetString(keys::kProxyConfigRuleHost, "proxy_server"); | 306 proxy_server_dict.SetString(keys::kProxyConfigRuleHost, "proxy_server"); |
| 305 ASSERT_TRUE( | 307 ASSERT_TRUE( |
| 306 GetProxyServer(&proxy_server_dict, net::ProxyServer::SCHEME_HTTP, | 308 GetProxyServer(&proxy_server_dict, net::ProxyServer::SCHEME_HTTP, |
| 307 &created, &error, &bad_message)); | 309 &created, &error, &bad_message)); |
| 308 EXPECT_EQ("PROXY proxy_server:80", created.ToPacString()); | 310 EXPECT_EQ("PROXY proxy_server:80", created.ToPacString()); |
| 309 EXPECT_FALSE(bad_message); | 311 EXPECT_FALSE(bad_message); |
| 310 | 312 |
| 311 // Test complete case. | 313 // Test complete case. |
| 312 proxy_server_dict.SetString(keys::kProxyConfigRuleScheme, "socks4"); | 314 proxy_server_dict.SetString(keys::kProxyConfigRuleScheme, "socks4"); |
| 313 proxy_server_dict.SetInteger(keys::kProxyConfigRulePort, 1234); | 315 proxy_server_dict.SetInteger(keys::kProxyConfigRulePort, 1234); |
| 314 ASSERT_TRUE( | 316 ASSERT_TRUE( |
| 315 GetProxyServer(&proxy_server_dict, net::ProxyServer::SCHEME_HTTP, | 317 GetProxyServer(&proxy_server_dict, net::ProxyServer::SCHEME_HTTP, |
| 316 &created, &error, &bad_message)); | 318 &created, &error, &bad_message)); |
| 317 EXPECT_EQ("SOCKS proxy_server:1234", created.ToPacString()); | 319 EXPECT_EQ("SOCKS proxy_server:1234", created.ToPacString()); |
| 318 EXPECT_FALSE(bad_message); | 320 EXPECT_FALSE(bad_message); |
| 319 } | 321 } |
| 320 | 322 |
| 321 TEST(ExtensionProxyApiHelpers, JoinUrlList) { | 323 TEST(ExtensionProxyApiHelpers, JoinUrlList) { |
| 322 bool bad_message = false; | 324 bool bad_message = false; |
| 323 ListValue list; | 325 base::ListValue list; |
| 324 list.Append(Value::CreateStringValue("s1")); | 326 list.Append(Value::CreateStringValue("s1")); |
| 325 list.Append(Value::CreateStringValue("s2")); | 327 list.Append(Value::CreateStringValue("s2")); |
| 326 list.Append(Value::CreateStringValue("s3")); | 328 list.Append(Value::CreateStringValue("s3")); |
| 327 | 329 |
| 328 std::string out; | 330 std::string out; |
| 329 std::string error; | 331 std::string error; |
| 330 ASSERT_TRUE(JoinUrlList(&list, ";", &out, &error, &bad_message)); | 332 ASSERT_TRUE(JoinUrlList(&list, ";", &out, &error, &bad_message)); |
| 331 EXPECT_EQ("s1;s2;s3", out); | 333 EXPECT_EQ("s1;s2;s3", out); |
| 332 EXPECT_FALSE(bad_message); | 334 EXPECT_FALSE(bad_message); |
| 333 } | 335 } |
| 334 | 336 |
| 335 // This tests CreateProxyServerDict as well. | 337 // This tests CreateProxyServerDict as well. |
| 336 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDict) { | 338 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDict) { |
| 337 scoped_ptr<DictionaryValue> browser_pref( | 339 scoped_ptr<base::DictionaryValue> browser_pref( |
| 338 ProxyConfigDictionary::CreateFixedServers( | 340 ProxyConfigDictionary::CreateFixedServers( |
| 339 "http=proxy1:80;https=proxy2:80;ftp=proxy3:80;socks=proxy4:80", | 341 "http=proxy1:80;https=proxy2:80;ftp=proxy3:80;socks=proxy4:80", |
| 340 "localhost")); | 342 "localhost")); |
| 341 ProxyConfigDictionary config(browser_pref.get()); | 343 ProxyConfigDictionary config(browser_pref.get()); |
| 342 scoped_ptr<DictionaryValue> extension_pref(CreateProxyRulesDict(config)); | 344 scoped_ptr<base::DictionaryValue> extension_pref(CreateProxyRulesDict(config)) ; |
|
Finnur
2013/06/21 21:25:01
80 cols.
| |
| 343 ASSERT_TRUE(extension_pref.get()); | 345 ASSERT_TRUE(extension_pref.get()); |
| 344 | 346 |
| 345 scoped_ptr<DictionaryValue> expected(new DictionaryValue); | 347 scoped_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 346 expected->Set("proxyForHttp", | 348 expected->Set("proxyForHttp", |
| 347 CreateTestProxyServerDict("http", "proxy1", 80)); | 349 CreateTestProxyServerDict("http", "proxy1", 80)); |
| 348 expected->Set("proxyForHttps", | 350 expected->Set("proxyForHttps", |
| 349 CreateTestProxyServerDict("http", "proxy2", 80)); | 351 CreateTestProxyServerDict("http", "proxy2", 80)); |
| 350 expected->Set("proxyForFtp", | 352 expected->Set("proxyForFtp", |
| 351 CreateTestProxyServerDict("http", "proxy3", 80)); | 353 CreateTestProxyServerDict("http", "proxy3", 80)); |
| 352 expected->Set("fallbackProxy", | 354 expected->Set("fallbackProxy", |
| 353 CreateTestProxyServerDict("socks4", "proxy4", 80)); | 355 CreateTestProxyServerDict("socks4", "proxy4", 80)); |
| 354 ListValue* bypass_list = new ListValue; | 356 base::ListValue* bypass_list = new base::ListValue; |
| 355 bypass_list->Append(Value::CreateStringValue("localhost")); | 357 bypass_list->Append(Value::CreateStringValue("localhost")); |
| 356 expected->Set(keys::kProxyConfigBypassList, bypass_list); | 358 expected->Set(keys::kProxyConfigBypassList, bypass_list); |
| 357 | 359 |
| 358 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); | 360 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); |
| 359 } | 361 } |
| 360 | 362 |
| 361 // Test multiple proxies per scheme -- expect that only the first is returned. | 363 // Test multiple proxies per scheme -- expect that only the first is returned. |
| 362 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDictMultipleProxies) { | 364 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDictMultipleProxies) { |
| 363 scoped_ptr<DictionaryValue> browser_pref( | 365 scoped_ptr<base::DictionaryValue> browser_pref( |
| 364 ProxyConfigDictionary::CreateFixedServers( | 366 ProxyConfigDictionary::CreateFixedServers( |
| 365 "http=proxy1:80,default://;https=proxy2:80,proxy1:80;ftp=proxy3:80," | 367 "http=proxy1:80,default://;https=proxy2:80,proxy1:80;ftp=proxy3:80," |
| 366 "https://proxy5:443;socks=proxy4:80,proxy1:80", | 368 "https://proxy5:443;socks=proxy4:80,proxy1:80", |
| 367 "localhost")); | 369 "localhost")); |
| 368 ProxyConfigDictionary config(browser_pref.get()); | 370 ProxyConfigDictionary config(browser_pref.get()); |
| 369 scoped_ptr<DictionaryValue> extension_pref(CreateProxyRulesDict(config)); | 371 scoped_ptr<base::DictionaryValue> extension_pref( |
| 372 CreateProxyRulesDict(config)); | |
| 370 ASSERT_TRUE(extension_pref.get()); | 373 ASSERT_TRUE(extension_pref.get()); |
| 371 | 374 |
| 372 scoped_ptr<DictionaryValue> expected(new DictionaryValue); | 375 scoped_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 373 expected->Set("proxyForHttp", | 376 expected->Set("proxyForHttp", |
| 374 CreateTestProxyServerDict("http", "proxy1", 80)); | 377 CreateTestProxyServerDict("http", "proxy1", 80)); |
| 375 expected->Set("proxyForHttps", | 378 expected->Set("proxyForHttps", |
| 376 CreateTestProxyServerDict("http", "proxy2", 80)); | 379 CreateTestProxyServerDict("http", "proxy2", 80)); |
| 377 expected->Set("proxyForFtp", | 380 expected->Set("proxyForFtp", |
| 378 CreateTestProxyServerDict("http", "proxy3", 80)); | 381 CreateTestProxyServerDict("http", "proxy3", 80)); |
| 379 expected->Set("fallbackProxy", | 382 expected->Set("fallbackProxy", |
| 380 CreateTestProxyServerDict("socks4", "proxy4", 80)); | 383 CreateTestProxyServerDict("socks4", "proxy4", 80)); |
| 381 ListValue* bypass_list = new ListValue; | 384 base::ListValue* bypass_list = new base::ListValue; |
| 382 bypass_list->Append(Value::CreateStringValue("localhost")); | 385 bypass_list->Append(Value::CreateStringValue("localhost")); |
| 383 expected->Set(keys::kProxyConfigBypassList, bypass_list); | 386 expected->Set(keys::kProxyConfigBypassList, bypass_list); |
| 384 | 387 |
| 385 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); | 388 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); |
| 386 } | 389 } |
| 387 | 390 |
| 388 // Test if a PAC script URL is specified. | 391 // Test if a PAC script URL is specified. |
| 389 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWithUrl) { | 392 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWithUrl) { |
| 390 scoped_ptr<DictionaryValue> browser_pref( | 393 scoped_ptr<base::DictionaryValue> browser_pref( |
| 391 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); | 394 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); |
| 392 ProxyConfigDictionary config(browser_pref.get()); | 395 ProxyConfigDictionary config(browser_pref.get()); |
| 393 scoped_ptr<DictionaryValue> extension_pref(CreatePacScriptDict(config)); | 396 scoped_ptr<base::DictionaryValue> extension_pref(CreatePacScriptDict(config)); |
| 394 ASSERT_TRUE(extension_pref.get()); | 397 ASSERT_TRUE(extension_pref.get()); |
| 395 | 398 |
| 396 scoped_ptr<DictionaryValue> expected(new DictionaryValue); | 399 scoped_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 397 expected->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl); | 400 expected->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl); |
| 398 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); | 401 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); |
| 399 | 402 |
| 400 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); | 403 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); |
| 401 } | 404 } |
| 402 | 405 |
| 403 // Test if a PAC script is encoded in a data URL. | 406 // Test if a PAC script is encoded in a data URL. |
| 404 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWidthData) { | 407 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWidthData) { |
| 405 scoped_ptr<DictionaryValue> browser_pref( | 408 scoped_ptr<base::DictionaryValue> browser_pref( |
| 406 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false)); | 409 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false)); |
| 407 ProxyConfigDictionary config(browser_pref.get()); | 410 ProxyConfigDictionary config(browser_pref.get()); |
| 408 scoped_ptr<DictionaryValue> extension_pref(CreatePacScriptDict(config)); | 411 scoped_ptr<base::DictionaryValue> extension_pref(CreatePacScriptDict(config)); |
| 409 ASSERT_TRUE(extension_pref.get()); | 412 ASSERT_TRUE(extension_pref.get()); |
| 410 | 413 |
| 411 scoped_ptr<DictionaryValue> expected(new DictionaryValue); | 414 scoped_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 412 expected->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript); | 415 expected->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript); |
| 413 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); | 416 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); |
| 414 | 417 |
| 415 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); | 418 EXPECT_TRUE(Value::Equals(expected.get(), extension_pref.get())); |
| 416 } | 419 } |
| 417 | 420 |
| 418 TEST(ExtensionProxyApiHelpers, TokenizeToStringList) { | 421 TEST(ExtensionProxyApiHelpers, TokenizeToStringList) { |
| 419 ListValue expected; | 422 base::ListValue expected; |
| 420 expected.Append(Value::CreateStringValue("s1")); | 423 expected.Append(Value::CreateStringValue("s1")); |
| 421 expected.Append(Value::CreateStringValue("s2")); | 424 expected.Append(Value::CreateStringValue("s2")); |
| 422 expected.Append(Value::CreateStringValue("s3")); | 425 expected.Append(Value::CreateStringValue("s3")); |
| 423 | 426 |
| 424 scoped_ptr<ListValue> out(TokenizeToStringList("s1;s2;s3", ";")); | 427 scoped_ptr<base::ListValue> out(TokenizeToStringList("s1;s2;s3", ";")); |
| 425 EXPECT_TRUE(Value::Equals(&expected, out.get())); | 428 EXPECT_TRUE(Value::Equals(&expected, out.get())); |
| 426 } | 429 } |
| 427 | 430 |
| 428 } // namespace proxy_api_helpers | 431 } // namespace proxy_api_helpers |
| 429 } // namespace extensions | 432 } // namespace extensions |
| OLD | NEW |