Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Side by Side Diff: chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc

Issue 2806283002: Revert of Stop passing raw pointers to base::Value API in c/b/chromeos and c/b/extensions (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include <utility>
11 11
12 #include "base/memory/ptr_util.h"
13 #include "base/values.h" 12 #include "base/values.h"
14 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h" 13 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h"
15 #include "components/proxy_config/proxy_config_dictionary.h" 14 #include "components/proxy_config/proxy_config_dictionary.h"
16 #include "components/proxy_config/proxy_prefs.h" 15 #include "components/proxy_config/proxy_prefs.h"
17 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
18 17
19 namespace extensions { 18 namespace extensions {
20 19
21 namespace keys = proxy_api_constants; 20 namespace keys = proxy_api_constants;
22 21
23 namespace { 22 namespace {
24 23
25 const char kSamplePacScript[] = "test"; 24 const char kSamplePacScript[] = "test";
26 const char kSamplePacScriptAsDataUrl[] = 25 const char kSamplePacScriptAsDataUrl[] =
27 "data:application/x-ns-proxy-autoconfig;base64,dGVzdA=="; 26 "data:application/x-ns-proxy-autoconfig;base64,dGVzdA==";
28 const char kSamplePacScriptAsDataUrl2[] = 27 const char kSamplePacScriptAsDataUrl2[] =
29 "data:;base64,dGVzdA=="; 28 "data:;base64,dGVzdA==";
30 const char kSamplePacScriptUrl[] = "http://wpad/wpad.dat"; 29 const char kSamplePacScriptUrl[] = "http://wpad/wpad.dat";
31 30
32 // Helper function to create a ProxyServer dictionary as defined in the 31 // Helper function to create a ProxyServer dictionary as defined in the
33 // extension API. 32 // extension API.
34 std::unique_ptr<base::DictionaryValue> CreateTestProxyServerDict( 33 base::DictionaryValue* CreateTestProxyServerDict(const std::string& host) {
35 const std::string& host) { 34 base::DictionaryValue* dict = new base::DictionaryValue;
36 auto dict = base::MakeUnique<base::DictionaryValue>();
37 dict->SetString(keys::kProxyConfigRuleHost, host); 35 dict->SetString(keys::kProxyConfigRuleHost, host);
38 return dict; 36 return dict;
39 } 37 }
40 38
41 // Helper function to create a ProxyServer dictionary as defined in the 39 // Helper function to create a ProxyServer dictionary as defined in the
42 // extension API. 40 // extension API.
43 std::unique_ptr<base::DictionaryValue> CreateTestProxyServerDict( 41 base::DictionaryValue* CreateTestProxyServerDict(const std::string& schema,
44 const std::string& schema, 42 const std::string& host,
45 const std::string& host, 43 int port) {
46 int port) { 44 base::DictionaryValue* dict = new base::DictionaryValue;
47 auto dict = base::MakeUnique<base::DictionaryValue>();
48 dict->SetString(keys::kProxyConfigRuleScheme, schema); 45 dict->SetString(keys::kProxyConfigRuleScheme, schema);
49 dict->SetString(keys::kProxyConfigRuleHost, host); 46 dict->SetString(keys::kProxyConfigRuleHost, host);
50 dict->SetInteger(keys::kProxyConfigRulePort, port); 47 dict->SetInteger(keys::kProxyConfigRulePort, port);
51 return dict; 48 return dict;
52 } 49 }
53 50
54 } // namespace 51 } // namespace
55 52
56 namespace proxy_api_helpers { 53 namespace proxy_api_helpers {
57 54
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 109
113 // Currently we are still missing a PAC script entry. 110 // Currently we are still missing a PAC script entry.
114 // This is silently ignored. 111 // This is silently ignored.
115 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error, 112 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error,
116 &bad_message)); 113 &bad_message));
117 EXPECT_EQ(std::string(), out); 114 EXPECT_EQ(std::string(), out);
118 EXPECT_EQ(std::string(), error); 115 EXPECT_EQ(std::string(), error);
119 EXPECT_FALSE(bad_message); 116 EXPECT_FALSE(bad_message);
120 117
121 // Set up a pac script. 118 // Set up a pac script.
122 auto pacScriptDict = base::MakeUnique<base::DictionaryValue>(); 119 base::DictionaryValue* pacScriptDict = new base::DictionaryValue;
123 pacScriptDict->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl); 120 pacScriptDict->SetString(keys::kProxyConfigPacScriptUrl, kSamplePacScriptUrl);
124 proxy_config.Set(keys::kProxyConfigPacScript, std::move(pacScriptDict)); 121 proxy_config.Set(keys::kProxyConfigPacScript, pacScriptDict);
125 122
126 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error, 123 ASSERT_TRUE(GetPacUrlFromExtensionPref(&proxy_config, &out, &error,
127 &bad_message)); 124 &bad_message));
128 EXPECT_EQ(kSamplePacScriptUrl, out); 125 EXPECT_EQ(kSamplePacScriptUrl, out);
129 EXPECT_EQ(std::string(), error); 126 EXPECT_EQ(std::string(), error);
130 EXPECT_FALSE(bad_message); 127 EXPECT_FALSE(bad_message);
131 } 128 }
132 129
133 TEST(ExtensionProxyApiHelpers, GetPacDataFromExtensionPref) { 130 TEST(ExtensionProxyApiHelpers, GetPacDataFromExtensionPref) {
134 std::string out; 131 std::string out;
135 std::string error; 132 std::string error;
136 bool bad_message = false; 133 bool bad_message = false;
137 134
138 base::DictionaryValue proxy_config; 135 base::DictionaryValue proxy_config;
139 proxy_config.SetString( 136 proxy_config.SetString(
140 keys::kProxyConfigMode, 137 keys::kProxyConfigMode,
141 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_PAC_SCRIPT)); 138 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_PAC_SCRIPT));
142 139
143 // Currently we are still missing a PAC data entry. This is silently ignored. 140 // Currently we are still missing a PAC data entry. This is silently ignored.
144 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error, 141 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error,
145 &bad_message)); 142 &bad_message));
146 EXPECT_EQ(std::string(), out); 143 EXPECT_EQ(std::string(), out);
147 EXPECT_EQ(std::string(), error); 144 EXPECT_EQ(std::string(), error);
148 EXPECT_FALSE(bad_message); 145 EXPECT_FALSE(bad_message);
149 146
150 // Set up a PAC script. 147 // Set up a PAC script.
151 auto pacScriptDict = base::MakeUnique<base::DictionaryValue>(); 148 base::DictionaryValue* pacScriptDict = new base::DictionaryValue;
152 pacScriptDict->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript); 149 pacScriptDict->SetString(keys::kProxyConfigPacScriptData, kSamplePacScript);
153 proxy_config.Set(keys::kProxyConfigPacScript, std::move(pacScriptDict)); 150 proxy_config.Set(keys::kProxyConfigPacScript, pacScriptDict);
154 151
155 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error, 152 ASSERT_TRUE(GetPacDataFromExtensionPref(&proxy_config, &out, &error,
156 &bad_message)); 153 &bad_message));
157 EXPECT_EQ(kSamplePacScript, out); 154 EXPECT_EQ(kSamplePacScript, out);
158 EXPECT_EQ(std::string(), error); 155 EXPECT_EQ(std::string(), error);
159 EXPECT_FALSE(bad_message); 156 EXPECT_FALSE(bad_message);
160 } 157 }
161 158
162 TEST(ExtensionProxyApiHelpers, GetProxyRulesStringFromExtensionPref) { 159 TEST(ExtensionProxyApiHelpers, GetProxyRulesStringFromExtensionPref) {
163 std::string out; 160 std::string out;
164 std::string error; 161 std::string error;
165 bool bad_message = false; 162 bool bad_message = false;
166 163
167 base::DictionaryValue proxy_config; 164 base::DictionaryValue proxy_config;
168 proxy_config.SetString( 165 proxy_config.SetString(
169 keys::kProxyConfigMode, 166 keys::kProxyConfigMode,
170 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); 167 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS));
171 168
172 // Currently we are still missing a proxy config entry. 169 // Currently we are still missing a proxy config entry.
173 // This is silently ignored. 170 // This is silently ignored.
174 ASSERT_TRUE( 171 ASSERT_TRUE(
175 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error, 172 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error,
176 &bad_message)); 173 &bad_message));
177 EXPECT_EQ(std::string(), out); 174 EXPECT_EQ(std::string(), out);
178 EXPECT_EQ(std::string(), error); 175 EXPECT_EQ(std::string(), error);
179 176
180 auto proxy_rules = base::MakeUnique<base::DictionaryValue>(); 177 base::DictionaryValue* proxy_rules = new base::DictionaryValue;
181 proxy_rules->Set(keys::field_name[1], CreateTestProxyServerDict("proxy1")); 178 proxy_rules->Set(keys::field_name[1], CreateTestProxyServerDict("proxy1"));
182 proxy_rules->Set(keys::field_name[2], CreateTestProxyServerDict("proxy2")); 179 proxy_rules->Set(keys::field_name[2], CreateTestProxyServerDict("proxy2"));
183 proxy_config.Set(keys::kProxyConfigRules, std::move(proxy_rules)); 180 proxy_config.Set(keys::kProxyConfigRules, proxy_rules);
184 181
185 ASSERT_TRUE( 182 ASSERT_TRUE(
186 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error, 183 GetProxyRulesStringFromExtensionPref(&proxy_config, &out, &error,
187 &bad_message)); 184 &bad_message));
188 EXPECT_EQ("http=proxy1:80;https=proxy2:80", out); 185 EXPECT_EQ("http=proxy1:80;https=proxy2:80", out);
189 EXPECT_EQ(std::string(), error); 186 EXPECT_EQ(std::string(), error);
190 EXPECT_FALSE(bad_message); 187 EXPECT_FALSE(bad_message);
191 } 188 }
192 189
193 TEST(ExtensionProxyApiHelpers, GetBypassListFromExtensionPref) { 190 TEST(ExtensionProxyApiHelpers, GetBypassListFromExtensionPref) {
194 std::string out; 191 std::string out;
195 std::string error; 192 std::string error;
196 bool bad_message = false; 193 bool bad_message = false;
197 194
198 base::DictionaryValue proxy_config; 195 base::DictionaryValue proxy_config;
199 proxy_config.SetString( 196 proxy_config.SetString(
200 keys::kProxyConfigMode, 197 keys::kProxyConfigMode,
201 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); 198 ProxyPrefs::ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS));
202 199
203 // Currently we are still missing a proxy config entry. 200 // Currently we are still missing a proxy config entry.
204 // This is silently ignored. 201 // This is silently ignored.
205 ASSERT_TRUE( 202 ASSERT_TRUE(
206 GetBypassListFromExtensionPref(&proxy_config, &out, &error, 203 GetBypassListFromExtensionPref(&proxy_config, &out, &error,
207 &bad_message)); 204 &bad_message));
208 EXPECT_EQ(std::string(), out); 205 EXPECT_EQ(std::string(), out);
209 EXPECT_EQ(std::string(), error); 206 EXPECT_EQ(std::string(), error);
210 EXPECT_FALSE(bad_message); 207 EXPECT_FALSE(bad_message);
211 208
212 auto bypass_list = base::MakeUnique<base::ListValue>(); 209 base::ListValue* bypass_list = new base::ListValue;
213 bypass_list->AppendString("host1"); 210 bypass_list->AppendString("host1");
214 bypass_list->AppendString("host2"); 211 bypass_list->AppendString("host2");
215 auto proxy_rules = base::MakeUnique<base::DictionaryValue>(); 212 base::DictionaryValue* proxy_rules = new base::DictionaryValue;
216 proxy_rules->Set(keys::kProxyConfigBypassList, std::move(bypass_list)); 213 proxy_rules->Set(keys::kProxyConfigBypassList, bypass_list);
217 proxy_config.Set(keys::kProxyConfigRules, std::move(proxy_rules)); 214 proxy_config.Set(keys::kProxyConfigRules, proxy_rules);
218 215
219 ASSERT_TRUE( 216 ASSERT_TRUE(
220 GetBypassListFromExtensionPref(&proxy_config, &out, &error, 217 GetBypassListFromExtensionPref(&proxy_config, &out, &error,
221 &bad_message)); 218 &bad_message));
222 EXPECT_EQ("host1,host2", out); 219 EXPECT_EQ("host1,host2", out);
223 EXPECT_EQ(std::string(), error); 220 EXPECT_EQ(std::string(), error);
224 EXPECT_FALSE(bad_message); 221 EXPECT_FALSE(bad_message);
225 } 222 }
226 223
227 TEST(ExtensionProxyApiHelpers, CreateProxyConfigDict) { 224 TEST(ExtensionProxyApiHelpers, CreateProxyConfigDict) {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 320
324 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); 321 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue);
325 expected->Set("proxyForHttp", 322 expected->Set("proxyForHttp",
326 CreateTestProxyServerDict("http", "proxy1", 80)); 323 CreateTestProxyServerDict("http", "proxy1", 80));
327 expected->Set("proxyForHttps", 324 expected->Set("proxyForHttps",
328 CreateTestProxyServerDict("http", "proxy2", 80)); 325 CreateTestProxyServerDict("http", "proxy2", 80));
329 expected->Set("proxyForFtp", 326 expected->Set("proxyForFtp",
330 CreateTestProxyServerDict("http", "proxy3", 80)); 327 CreateTestProxyServerDict("http", "proxy3", 80));
331 expected->Set("fallbackProxy", 328 expected->Set("fallbackProxy",
332 CreateTestProxyServerDict("socks4", "proxy4", 80)); 329 CreateTestProxyServerDict("socks4", "proxy4", 80));
333 auto bypass_list = base::MakeUnique<base::ListValue>(); 330 base::ListValue* bypass_list = new base::ListValue;
334 bypass_list->AppendString("localhost"); 331 bypass_list->AppendString("localhost");
335 expected->Set(keys::kProxyConfigBypassList, std::move(bypass_list)); 332 expected->Set(keys::kProxyConfigBypassList, bypass_list);
336 333
337 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); 334 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get()));
338 } 335 }
339 336
340 // 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.
341 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDictMultipleProxies) { 338 TEST(ExtensionProxyApiHelpers, CreateProxyRulesDictMultipleProxies) {
342 std::unique_ptr<base::DictionaryValue> browser_pref( 339 std::unique_ptr<base::DictionaryValue> browser_pref(
343 ProxyConfigDictionary::CreateFixedServers( 340 ProxyConfigDictionary::CreateFixedServers(
344 "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,"
345 "https://proxy5:443;socks=proxy4:80,proxy1:80", 342 "https://proxy5:443;socks=proxy4:80,proxy1:80",
346 "localhost")); 343 "localhost"));
347 ProxyConfigDictionary config(std::move(browser_pref)); 344 ProxyConfigDictionary config(std::move(browser_pref));
348 std::unique_ptr<base::DictionaryValue> extension_pref( 345 std::unique_ptr<base::DictionaryValue> extension_pref(
349 CreateProxyRulesDict(config)); 346 CreateProxyRulesDict(config));
350 ASSERT_TRUE(extension_pref.get()); 347 ASSERT_TRUE(extension_pref.get());
351 348
352 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue); 349 std::unique_ptr<base::DictionaryValue> expected(new base::DictionaryValue);
353 expected->Set("proxyForHttp", 350 expected->Set("proxyForHttp",
354 CreateTestProxyServerDict("http", "proxy1", 80)); 351 CreateTestProxyServerDict("http", "proxy1", 80));
355 expected->Set("proxyForHttps", 352 expected->Set("proxyForHttps",
356 CreateTestProxyServerDict("http", "proxy2", 80)); 353 CreateTestProxyServerDict("http", "proxy2", 80));
357 expected->Set("proxyForFtp", 354 expected->Set("proxyForFtp",
358 CreateTestProxyServerDict("http", "proxy3", 80)); 355 CreateTestProxyServerDict("http", "proxy3", 80));
359 expected->Set("fallbackProxy", 356 expected->Set("fallbackProxy",
360 CreateTestProxyServerDict("socks4", "proxy4", 80)); 357 CreateTestProxyServerDict("socks4", "proxy4", 80));
361 auto bypass_list = base::MakeUnique<base::ListValue>(); 358 base::ListValue* bypass_list = new base::ListValue;
362 bypass_list->AppendString("localhost"); 359 bypass_list->AppendString("localhost");
363 expected->Set(keys::kProxyConfigBypassList, std::move(bypass_list)); 360 expected->Set(keys::kProxyConfigBypassList, bypass_list);
364 361
365 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get())); 362 EXPECT_TRUE(base::Value::Equals(expected.get(), extension_pref.get()));
366 } 363 }
367 364
368 // Test if a PAC script URL is specified. 365 // Test if a PAC script URL is specified.
369 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWithUrl) { 366 TEST(ExtensionProxyApiHelpers, CreatePacScriptDictWithUrl) {
370 std::unique_ptr<base::DictionaryValue> browser_pref( 367 std::unique_ptr<base::DictionaryValue> browser_pref(
371 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false)); 368 ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false));
372 ProxyConfigDictionary config(std::move(browser_pref)); 369 ProxyConfigDictionary config(std::move(browser_pref));
373 std::unique_ptr<base::DictionaryValue> extension_pref( 370 std::unique_ptr<base::DictionaryValue> extension_pref(
(...skipping 28 matching lines...) Expand all
402 expected.AppendString("s1"); 399 expected.AppendString("s1");
403 expected.AppendString("s2"); 400 expected.AppendString("s2");
404 expected.AppendString("s3"); 401 expected.AppendString("s3");
405 402
406 std::unique_ptr<base::ListValue> out(TokenizeToStringList("s1;s2;s3", ";")); 403 std::unique_ptr<base::ListValue> out(TokenizeToStringList("s1;s2;s3", ";"));
407 EXPECT_TRUE(base::Value::Equals(&expected, out.get())); 404 EXPECT_TRUE(base::Value::Equals(&expected, out.get()));
408 } 405 }
409 406
410 } // namespace proxy_api_helpers 407 } // namespace proxy_api_helpers
411 } // namespace extensions 408 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/proxy/proxy_api_helpers.cc ('k') | chrome/browser/extensions/api/storage/policy_value_store.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698