| 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 "chrome/browser/extensions/api/proxy/proxy_api_helpers.h" | 7 #include "chrome/browser/extensions/api/proxy/proxy_api_helpers.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> |
| 10 | 11 |
| 11 #include "base/values.h" | 12 #include "base/values.h" |
| 12 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h" | 13 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h" |
| 13 #include "components/proxy_config/proxy_config_dictionary.h" | 14 #include "components/proxy_config/proxy_config_dictionary.h" |
| 14 #include "components/proxy_config/proxy_prefs.h" | 15 #include "components/proxy_config/proxy_prefs.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 17 |
| 17 namespace extensions { | 18 namespace extensions { |
| 18 | 19 |
| 19 namespace keys = proxy_api_constants; | 20 namespace keys = proxy_api_constants; |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 ASSERT_TRUE( | 216 ASSERT_TRUE( |
| 216 GetBypassListFromExtensionPref(&proxy_config, &out, &error, | 217 GetBypassListFromExtensionPref(&proxy_config, &out, &error, |
| 217 &bad_message)); | 218 &bad_message)); |
| 218 EXPECT_EQ("host1,host2", out); | 219 EXPECT_EQ("host1,host2", out); |
| 219 EXPECT_EQ(std::string(), error); | 220 EXPECT_EQ(std::string(), error); |
| 220 EXPECT_FALSE(bad_message); | 221 EXPECT_FALSE(bad_message); |
| 221 } | 222 } |
| 222 | 223 |
| 223 TEST(ExtensionProxyApiHelpers, CreateProxyConfigDict) { | 224 TEST(ExtensionProxyApiHelpers, CreateProxyConfigDict) { |
| 224 std::string error; | 225 std::string error; |
| 225 std::unique_ptr<base::DictionaryValue> exp_direct( | 226 std::unique_ptr<base::DictionaryValue> exp_direct = |
| 226 ProxyConfigDictionary::CreateDirect()); | 227 ProxyConfigDictionary::CreateDirect(); |
| 227 std::unique_ptr<base::DictionaryValue> out_direct(CreateProxyConfigDict( | 228 std::unique_ptr<base::DictionaryValue> out_direct(CreateProxyConfigDict( |
| 228 ProxyPrefs::MODE_DIRECT, false, std::string(), std::string(), | 229 ProxyPrefs::MODE_DIRECT, false, std::string(), std::string(), |
| 229 std::string(), std::string(), &error)); | 230 std::string(), std::string(), &error)); |
| 230 EXPECT_TRUE(base::Value::Equals(exp_direct.get(), out_direct.get())); | 231 EXPECT_TRUE(base::Value::Equals(exp_direct.get(), out_direct.get())); |
| 231 | 232 |
| 232 std::unique_ptr<base::DictionaryValue> exp_auto( | 233 std::unique_ptr<base::DictionaryValue> exp_auto = |
| 233 ProxyConfigDictionary::CreateAutoDetect()); | 234 ProxyConfigDictionary::CreateAutoDetect(); |
| 234 std::unique_ptr<base::DictionaryValue> out_auto(CreateProxyConfigDict( | 235 std::unique_ptr<base::DictionaryValue> out_auto(CreateProxyConfigDict( |
| 235 ProxyPrefs::MODE_AUTO_DETECT, false, std::string(), std::string(), | 236 ProxyPrefs::MODE_AUTO_DETECT, false, std::string(), std::string(), |
| 236 std::string(), std::string(), &error)); | 237 std::string(), std::string(), &error)); |
| 237 EXPECT_TRUE(base::Value::Equals(exp_auto.get(), out_auto.get())); | 238 EXPECT_TRUE(base::Value::Equals(exp_auto.get(), out_auto.get())); |
| 238 | 239 |
| 239 std::unique_ptr<base::DictionaryValue> exp_pac_url( | 240 std::unique_ptr<base::DictionaryValue> exp_pac_url = |
| 240 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); | 241 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false); |
| 241 std::unique_ptr<base::DictionaryValue> out_pac_url(CreateProxyConfigDict( | 242 std::unique_ptr<base::DictionaryValue> out_pac_url(CreateProxyConfigDict( |
| 242 ProxyPrefs::MODE_PAC_SCRIPT, false, kSamplePacScriptUrl, std::string(), | 243 ProxyPrefs::MODE_PAC_SCRIPT, false, kSamplePacScriptUrl, std::string(), |
| 243 std::string(), std::string(), &error)); | 244 std::string(), std::string(), &error)); |
| 244 EXPECT_TRUE(base::Value::Equals(exp_pac_url.get(), out_pac_url.get())); | 245 EXPECT_TRUE(base::Value::Equals(exp_pac_url.get(), out_pac_url.get())); |
| 245 | 246 |
| 246 std::unique_ptr<base::DictionaryValue> exp_pac_data( | 247 std::unique_ptr<base::DictionaryValue> exp_pac_data = |
| 247 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false)); | 248 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false); |
| 248 std::unique_ptr<base::DictionaryValue> out_pac_data(CreateProxyConfigDict( | 249 std::unique_ptr<base::DictionaryValue> out_pac_data(CreateProxyConfigDict( |
| 249 ProxyPrefs::MODE_PAC_SCRIPT, false, std::string(), kSamplePacScript, | 250 ProxyPrefs::MODE_PAC_SCRIPT, false, std::string(), kSamplePacScript, |
| 250 std::string(), std::string(), &error)); | 251 std::string(), std::string(), &error)); |
| 251 EXPECT_TRUE(base::Value::Equals(exp_pac_data.get(), out_pac_data.get())); | 252 EXPECT_TRUE(base::Value::Equals(exp_pac_data.get(), out_pac_data.get())); |
| 252 | 253 |
| 253 std::unique_ptr<base::DictionaryValue> exp_fixed( | 254 std::unique_ptr<base::DictionaryValue> exp_fixed = |
| 254 ProxyConfigDictionary::CreateFixedServers("foo:80", "localhost")); | 255 ProxyConfigDictionary::CreateFixedServers("foo:80", "localhost"); |
| 255 std::unique_ptr<base::DictionaryValue> out_fixed(CreateProxyConfigDict( | 256 std::unique_ptr<base::DictionaryValue> out_fixed(CreateProxyConfigDict( |
| 256 ProxyPrefs::MODE_FIXED_SERVERS, false, std::string(), std::string(), | 257 ProxyPrefs::MODE_FIXED_SERVERS, false, std::string(), std::string(), |
| 257 "foo:80", "localhost", &error)); | 258 "foo:80", "localhost", &error)); |
| 258 EXPECT_TRUE(base::Value::Equals(exp_fixed.get(), out_fixed.get())); | 259 EXPECT_TRUE(base::Value::Equals(exp_fixed.get(), out_fixed.get())); |
| 259 | 260 |
| 260 std::unique_ptr<base::DictionaryValue> exp_system( | 261 std::unique_ptr<base::DictionaryValue> exp_system = |
| 261 ProxyConfigDictionary::CreateSystem()); | 262 ProxyConfigDictionary::CreateSystem(); |
| 262 std::unique_ptr<base::DictionaryValue> out_system(CreateProxyConfigDict( | 263 std::unique_ptr<base::DictionaryValue> out_system(CreateProxyConfigDict( |
| 263 ProxyPrefs::MODE_SYSTEM, false, std::string(), std::string(), | 264 ProxyPrefs::MODE_SYSTEM, false, std::string(), std::string(), |
| 264 std::string(), std::string(), &error)); | 265 std::string(), std::string(), &error)); |
| 265 EXPECT_TRUE(base::Value::Equals(exp_system.get(), out_system.get())); | 266 EXPECT_TRUE(base::Value::Equals(exp_system.get(), out_system.get())); |
| 266 | 267 |
| 267 // Neither of them should have set an error. | 268 // Neither of them should have set an error. |
| 268 EXPECT_EQ(std::string(), error); | 269 EXPECT_EQ(std::string(), error); |
| 269 } | 270 } |
| 270 | 271 |
| 271 TEST(ExtensionProxyApiHelpers, GetProxyServer) { | 272 TEST(ExtensionProxyApiHelpers, GetProxyServer) { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 EXPECT_EQ("s1;s2;s3", out); | 306 EXPECT_EQ("s1;s2;s3", out); |
| 306 EXPECT_FALSE(bad_message); | 307 EXPECT_FALSE(bad_message); |
| 307 } | 308 } |
| 308 | 309 |
| 309 // This tests CreateProxyServerDict as well. | 310 // This tests CreateProxyServerDict as well. |
| 310 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDict) { | 311 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDict) { |
| 311 std::unique_ptr<base::DictionaryValue> browser_pref( | 312 std::unique_ptr<base::DictionaryValue> browser_pref( |
| 312 ProxyConfigDictionary::CreateFixedServers( | 313 ProxyConfigDictionary::CreateFixedServers( |
| 313 "http=proxy1:80;https=proxy2:80;ftp=proxy3:80;socks=proxy4:80", | 314 "http=proxy1:80;https=proxy2:80;ftp=proxy3:80;socks=proxy4:80", |
| 314 "localhost")); | 315 "localhost")); |
| 315 ProxyConfigDictionary config(browser_pref.get()); | 316 ProxyConfigDictionary config(std::move(browser_pref)); |
| 316 std::unique_ptr<base::DictionaryValue> extension_pref( | 317 std::unique_ptr<base::DictionaryValue> extension_pref( |
| 317 CreateProxyRulesDict(config)); | 318 CreateProxyRulesDict(config)); |
| 318 ASSERT_TRUE(extension_pref.get()); | 319 ASSERT_TRUE(extension_pref.get()); |
| 319 | 320 |
| 320 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); | 321 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 321 expected->Set("proxyForHttp", | 322 expected->Set("proxyForHttp", |
| 322 CreateTestProxyServerDict("http", "proxy1", 80)); | 323 CreateTestProxyServerDict("http", "proxy1", 80)); |
| 323 expected->Set("proxyForHttps", | 324 expected->Set("proxyForHttps", |
| 324 CreateTestProxyServerDict("http", "proxy2", 80)); | 325 CreateTestProxyServerDict("http", "proxy2", 80)); |
| 325 expected->Set("proxyForFtp", | 326 expected->Set("proxyForFtp", |
| 326 CreateTestProxyServerDict("http", "proxy3", 80)); | 327 CreateTestProxyServerDict("http", "proxy3", 80)); |
| 327 expected->Set("fallbackProxy", | 328 expected->Set("fallbackProxy", |
| 328 CreateTestProxyServerDict("socks4", "proxy4", 80)); | 329 CreateTestProxyServerDict("socks4", "proxy4", 80)); |
| 329 base::ListValue* bypass_list = new base::ListValue; | 330 base::ListValue* bypass_list = new base::ListValue; |
| 330 bypass_list->AppendString("localhost"); | 331 bypass_list->AppendString("localhost"); |
| 331 expected->Set(keys::kProxyConfigBypassList, bypass_list); | 332 expected->Set(keys::kProxyConfigBypassList, bypass_list); |
| 332 | 333 |
| 333 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); | 334 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); |
| 334 } | 335 } |
| 335 | 336 |
| 336 // Test multiple proxies per scheme -- expect that only the first is returned. | 337 // Test multiple proxies per scheme -- expect that only the first is returned. |
| 337 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDictMultipleProxies) { | 338 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDictMultipleProxies) { |
| 338 std::unique_ptr<base::DictionaryValue> browser_pref( | 339 std::unique_ptr<base::DictionaryValue> browser_pref( |
| 339 ProxyConfigDictionary::CreateFixedServers( | 340 ProxyConfigDictionary::CreateFixedServers( |
| 340 "http=proxy1:80,default://;https=proxy2:80,proxy1:80;ftp=proxy3:80," | 341 "http=proxy1:80,default://;https=proxy2:80,proxy1:80;ftp=proxy3:80," |
| 341 "https://proxy5:443;socks=proxy4:80,proxy1:80", | 342 "https://proxy5:443;socks=proxy4:80,proxy1:80", |
| 342 "localhost")); | 343 "localhost")); |
| 343 ProxyConfigDictionary config(browser_pref.get()); | 344 ProxyConfigDictionary config(std::move(browser_pref)); |
| 344 std::unique_ptr<base::DictionaryValue> extension_pref( | 345 std::unique_ptr<base::DictionaryValue> extension_pref( |
| 345 CreateProxyRulesDict(config)); | 346 CreateProxyRulesDict(config)); |
| 346 ASSERT_TRUE(extension_pref.get()); | 347 ASSERT_TRUE(extension_pref.get()); |
| 347 | 348 |
| 348 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); | 349 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 349 expected->Set("proxyForHttp", | 350 expected->Set("proxyForHttp", |
| 350 CreateTestProxyServerDict("http", "proxy1", 80)); | 351 CreateTestProxyServerDict("http", "proxy1", 80)); |
| 351 expected->Set("proxyForHttps", | 352 expected->Set("proxyForHttps", |
| 352 CreateTestProxyServerDict("http", "proxy2", 80)); | 353 CreateTestProxyServerDict("http", "proxy2", 80)); |
| 353 expected->Set("proxyForFtp", | 354 expected->Set("proxyForFtp", |
| 354 CreateTestProxyServerDict("http", "proxy3", 80)); | 355 CreateTestProxyServerDict("http", "proxy3", 80)); |
| 355 expected->Set("fallbackProxy", | 356 expected->Set("fallbackProxy", |
| 356 CreateTestProxyServerDict("socks4", "proxy4", 80)); | 357 CreateTestProxyServerDict("socks4", "proxy4", 80)); |
| 357 base::ListValue* bypass_list = new base::ListValue; | 358 base::ListValue* bypass_list = new base::ListValue; |
| 358 bypass_list->AppendString("localhost"); | 359 bypass_list->AppendString("localhost"); |
| 359 expected->Set(keys::kProxyConfigBypassList, bypass_list); | 360 expected->Set(keys::kProxyConfigBypassList, bypass_list); |
| 360 | 361 |
| 361 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); | 362 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); |
| 362 } | 363 } |
| 363 | 364 |
| 364 // Test if a PAC script URL is specified. | 365 // Test if a PAC script URL is specified. |
| 365 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWithUrl) { | 366 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWithUrl) { |
| 366 std::unique_ptr<base::DictionaryValue> browser_pref( | 367 std::unique_ptr<base::DictionaryValue> browser_pref( |
| 367 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); | 368 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); |
| 368 ProxyConfigDictionary config(browser_pref.get()); | 369 ProxyConfigDictionary config(std::move(browser_pref)); |
| 369 std::unique_ptr<base::DictionaryValue> extension_pref( | 370 std::unique_ptr<base::DictionaryValue> extension_pref( |
| 370 CreatePacScriptDict(config)); | 371 CreatePacScriptDict(config)); |
| 371 ASSERT_TRUE(extension_pref.get()); | 372 ASSERT_TRUE(extension_pref.get()); |
| 372 | 373 |
| 373 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); | 374 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 374 expected->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl); | 375 expected->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl); |
| 375 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); | 376 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); |
| 376 | 377 |
| 377 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); | 378 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); |
| 378 } | 379 } |
| 379 | 380 |
| 380 // Test if a PAC script is encoded in a data URL. | 381 // Test if a PAC script is encoded in a data URL. |
| 381 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWidthData) { | 382 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWidthData) { |
| 382 std::unique_ptr<base::DictionaryValue> browser_pref( | 383 std::unique_ptr<base::DictionaryValue> browser_pref( |
| 383 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false)); | 384 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false)); |
| 384 ProxyConfigDictionary config(browser_pref.get()); | 385 ProxyConfigDictionary config(std::move(browser_pref)); |
| 385 std::unique_ptr<base::DictionaryValue> extension_pref( | 386 std::unique_ptr<base::DictionaryValue> extension_pref( |
| 386 CreatePacScriptDict(config)); | 387 CreatePacScriptDict(config)); |
| 387 ASSERT_TRUE(extension_pref.get()); | 388 ASSERT_TRUE(extension_pref.get()); |
| 388 | 389 |
| 389 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); | 390 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); |
| 390 expected->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript); | 391 expected->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript); |
| 391 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); | 392 expected->SetBoolean(keys::kProxyConfigPacScriptMandatory, false); |
| 392 | 393 |
| 393 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); | 394 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); |
| 394 } | 395 } |
| 395 | 396 |
| 396 TEST(ExtensionProxyApiHelpers, TokenizeToStringList) { | 397 TEST(ExtensionProxyApiHelpers, TokenizeToStringList) { |
| 397 base::ListValue expected; | 398 base::ListValue expected; |
| 398 expected.AppendString("s1"); | 399 expected.AppendString("s1"); |
| 399 expected.AppendString("s2"); | 400 expected.AppendString("s2"); |
| 400 expected.AppendString("s3"); | 401 expected.AppendString("s3"); |
| 401 | 402 |
| 402 std::unique_ptr<base::ListValue> out(TokenizeToStringList("s1;s2;s3", ";")); | 403 std::unique_ptr<base::ListValue> out(TokenizeToStringList("s1;s2;s3", ";")); |
| 403 EXPECT_TRUE(base::Value::Equals(&expected, out.get())); | 404 EXPECT_TRUE(base::Value::Equals(&expected, out.get())); |
| 404 } | 405 } |
| 405 | 406 |
| 406 } // namespace proxy_api_helpers | 407 } // namespace proxy_api_helpers |
| 407 } // namespace extensions | 408 } // namespace extensions |
| OLD | NEW |