1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_path.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/path_service.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/importer/firefox_proxy_settings.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/chrome_paths.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/proxy/proxy_config.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FirefoxProxySettingsTest : public testing::Test { 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TestFirefoxProxySettings : public FirefoxProxySettings { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestFirefoxProxySettings() {} 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool TestGetSettingsFromFile(const FilePath& pref_file, 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FirefoxProxySettings* settings) { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GetSettingsFromFile(pref_file, settings); 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(FirefoxProxySettingsTest, TestParse) { 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FirefoxProxySettings settings; 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath js_pref_path; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &js_pref_path)); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch js_pref_path = js_pref_path.AppendASCII("firefox3_pref.js"); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(TestFirefoxProxySettings::TestGetSettingsFromFile(js_pref_path, 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &settings)); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(FirefoxProxySettings::MANUAL, settings.config_type()); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("http_proxy", settings.http_proxy()); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1111, settings.http_proxy_port()); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("ssl_proxy", settings.ssl_proxy()); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2222, settings.ssl_proxy_port()); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("ftp_proxy", settings.ftp_proxy()); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(3333, settings.ftp_proxy_port()); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("gopher_proxy", settings.gopher_proxy()); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(4444, settings.gopher_proxy_port()); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("socks_host", settings.socks_host()); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(5555, settings.socks_port()); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(FirefoxProxySettings::V4, settings.socks_version()); 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(3U, settings.proxy_bypass_list().size()); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("localhost", settings.proxy_bypass_list()[0]); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("127.0.0.1", settings.proxy_bypass_list()[1]); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("noproxy.com", settings.proxy_bypass_list()[2]); 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", settings.autoconfig_url()); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Test that ToProxyConfig() properly translates into a net::ProxyConfig. 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::ProxyConfig config; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(settings.ToProxyConfig(&config)); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick { 583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick net::ProxyConfig expected_config; 593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick expected_config.proxy_rules().ParseFromString("http=http_proxy:1111; " 603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick "https=ssl_proxy:2222; " 613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick "ftp=ftp_proxy:3333; " 623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick "socks=socks_host:5555"); 633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick expected_config.proxy_rules().bypass_rules.ParseFromString( 643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick "*localhost, 127.0.0.1, *noproxy.com"); 653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(FirefoxProxySettingsTest, TestParseAutoConfigUrl) { 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FirefoxProxySettings settings; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath js_pref_path; 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &js_pref_path)); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch js_pref_path = js_pref_path.AppendASCII("firefox3_pref_pac_url.js"); 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(TestFirefoxProxySettings::TestGetSettingsFromFile(js_pref_path, 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &settings)); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(FirefoxProxySettings::AUTO_FROM_URL, settings.config_type()); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Everything should be empty except for the autoconfig URL. 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("http://custom-pac-url/", settings.autoconfig_url()); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", settings.http_proxy()); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, settings.http_proxy_port()); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", settings.ssl_proxy()); 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, settings.ssl_proxy_port()); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", settings.ftp_proxy()); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, settings.ftp_proxy_port()); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", settings.gopher_proxy()); 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, settings.gopher_proxy_port()); 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", settings.socks_host()); 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, settings.socks_port()); 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, settings.socks_port()); 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0U, settings.proxy_bypass_list().size()); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Test that ToProxyConfig() properly translates into a net::ProxyConfig. 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::ProxyConfig config; 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(settings.ToProxyConfig(&config)); 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick EXPECT_TRUE(config.Equals(net::ProxyConfig::CreateFromCustomPacURL( 993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GURL("http://custom-pac-url/")))); 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 101