1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include <string> 6 7#include "base/memory/scoped_ptr.h" 8#include "base/values.h" 9#include "chrome/browser/prefs/proxy_config_dictionary.h" 10#include "testing/gtest/include/gtest/gtest.h" 11 12struct ProxyConfigHolder { 13 ProxyPrefs::ProxyMode mode; 14 std::string pac_url; 15 std::string proxy_server; 16 std::string bypass_list; 17}; 18 19TEST(ProxyConfigDictionaryTest, CreateDirect) { 20 scoped_ptr<base::DictionaryValue> dict_value( 21 ProxyConfigDictionary::CreateDirect()); 22 ProxyConfigDictionary dict(dict_value.get()); 23 ProxyConfigHolder h; 24 25 ASSERT_TRUE(dict.GetMode(&h.mode)); 26 EXPECT_EQ(ProxyPrefs::MODE_DIRECT, h.mode); 27 ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 28 ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 29 ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 30} 31 32TEST(ProxyConfigDictionaryTest, CreateAutoDetect) { 33 scoped_ptr<base::DictionaryValue> dict_value( 34 ProxyConfigDictionary::CreateAutoDetect()); 35 ProxyConfigDictionary dict(dict_value.get()); 36 ProxyConfigHolder h; 37 38 ASSERT_TRUE(dict.GetMode(&h.mode)); 39 EXPECT_EQ(ProxyPrefs::MODE_AUTO_DETECT, h.mode); 40 ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 41 ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 42 ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 43} 44 45TEST(ProxyConfigDictionaryTest, CreatePacScript) { 46 scoped_ptr<base::DictionaryValue> dict_value( 47 ProxyConfigDictionary::CreatePacScript("pac", false)); 48 ProxyConfigDictionary dict(dict_value.get()); 49 ProxyConfigHolder h; 50 51 ASSERT_TRUE(dict.GetMode(&h.mode)); 52 EXPECT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, h.mode); 53 ASSERT_TRUE(dict.GetPacUrl(&h.bypass_list)); 54 EXPECT_EQ("pac", h.bypass_list); 55 ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 56 ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 57} 58 59TEST(ProxyConfigDictionaryTest, CreateFixedServers) { 60 scoped_ptr<base::DictionaryValue> dict_value( 61 ProxyConfigDictionary::CreateFixedServers("http://1.2.3.4", 62 "http://foo")); 63 ProxyConfigDictionary dict(dict_value.get()); 64 ProxyConfigHolder h; 65 66 ASSERT_TRUE(dict.GetMode(&h.mode)); 67 EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS, h.mode); 68 ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 69 ASSERT_TRUE(dict.GetProxyServer(&h.proxy_server)); 70 EXPECT_EQ("http://1.2.3.4", h.proxy_server); 71 ASSERT_TRUE(dict.GetBypassList(&h.bypass_list)); 72 EXPECT_EQ("http://foo", h.bypass_list); 73} 74 75TEST(ProxyConfigDictionaryTest, CreateSystem) { 76 scoped_ptr<base::DictionaryValue> dict_value( 77 ProxyConfigDictionary::CreateSystem()); 78 ProxyConfigDictionary dict(dict_value.get()); 79 ProxyConfigHolder h; 80 81 ASSERT_TRUE(dict.GetMode(&h.mode)); 82 EXPECT_EQ(ProxyPrefs::MODE_SYSTEM, h.mode); 83 ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list)); 84 ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server)); 85 ASSERT_FALSE(dict.GetBypassList(&h.bypass_list)); 86} 87