172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// found in the LICENSE file. 472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <string> 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/values.h" 972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/prefs/proxy_config_dictionary.h" 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenstruct ProxyConfigHolder { 1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyPrefs::ProxyMode mode; 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string pac_url; 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string proxy_server; 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string bypass_list; 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}; 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(ProxyConfigDictionaryTest, CreateDirect) { 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<DictionaryValue> dict_value(ProxyConfigDictionary::CreateDirect()); 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary dict(dict_value.get()); 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigHolder h; 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetMode(&h.mode)); 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(ProxyPrefs::MODE_DIRECT, h.mode); 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(ProxyConfigDictionaryTest, CreateAutoDetect) { 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<DictionaryValue> dict_value( 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary::CreateAutoDetect()); 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary dict(dict_value.get()); 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigHolder h; 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetMode(&h.mode)); 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(ProxyPrefs::MODE_AUTO_DETECT, h.mode); 3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(ProxyConfigDictionaryTest, CreatePacScript) { 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<DictionaryValue> dict_value( 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary::CreatePacScript("pac")); 4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary dict(dict_value.get()); 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigHolder h; 4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetMode(&h.mode)); 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, h.mode); 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetPacUrl(&h.bypass_list)); 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ("pac", h.bypass_list); 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(ProxyConfigDictionaryTest, CreateFixedServers) { 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<DictionaryValue> dict_value( 6072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary::CreateFixedServers("http://1.2.3.4", 6172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "http://foo")); 6272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary dict(dict_value.get()); 6372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigHolder h; 6472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetMode(&h.mode)); 6672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS, h.mode); 6772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 6872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetProxyServer(&h.proxy_server)); 6972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ("http://1.2.3.4", h.proxy_server); 7072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetBypassList(&h.bypass_list)); 7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ("http://foo", h.bypass_list); 7272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 7372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 7472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST(ProxyConfigDictionaryTest, CreateSystem) { 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<DictionaryValue> dict_value(ProxyConfigDictionary::CreateSystem()); 7672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigDictionary dict(dict_value.get()); 7772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProxyConfigHolder h; 7872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 7972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dict.GetMode(&h.mode)); 8072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(ProxyPrefs::MODE_SYSTEM, h.mode); 8172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 8272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 8372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 8472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 85