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