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

Side by Side Diff: chrome_proxy_resolver_unittest.cc

Issue 5151005: AU: Proxy Resolver classes (Closed) Base URL: http://git.chromium.org/git/update_engine.git@master
Patch Set: tests Created 10 years, 1 month 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium OS 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 #include <vector>
7
8 #include <gtest/gtest.h>
9
10 #include "update_engine/chrome_proxy_resolver.h"
11 #include "update_engine/mock_dbus_interface.h"
12
13 using std::string;
14 using std::vector;
15 using ::testing::_;
16 using ::testing::Return;
17 using ::testing::SetArgumentPointee;
18 using ::testing::StrEq;
19
20 namespace chromeos_update_engine {
21
22 class ChromeProxyResolverTest : public ::testing::Test { };
23
24 TEST(ChromeProxyResolverTest, ProxyForUrlWithSettingsTest) {
25 const string kSingle =
26 "{\"mode\":3,\"single\":{\"server\":\"192.168.42.86:80\",\"src\":0}}";
27 const string kSocks =
28 "{\"mode\":4,\"socks\":{\"server\":\"socks5://192.168.42.83:5555\","
29 "\"src\":0}}";
30 const string kAll =
31 "{\"http\":{\"server\":\"http_proxy:11\",\"src\":0},"
32 "\"https\":{\"server\":\"https://https_proxy:22\",\"src\":0},"
33 "\"mode\":4,"
34 "\"socks\":{\"server\":\"socks5://socks:55\",\"src\":0}}";
35 const string kHttpHttps =
36 "{\"http\":{\"server\":\"http_proxy:11\",\"src\":0},"
37 "\"https\":{\"server\":\"https://https_proxy:22\",\"src\":0},"
38 "\"mode\":4}";
39
40 ChromeProxyResolver resolver(NULL);
41 vector<string> out;
42 string urls[] = {"http://foo.com/update", "https://bar.com/foo.gz"};
43 string multi_settings[] = {kAll, kHttpHttps};
44 for (size_t i = 0; i < arraysize(urls); i++) {
45 const string& url = urls[i];
46 LOG(INFO) << "url: " << url;
47 EXPECT_TRUE(resolver.ProxyForUrlWithSettings(url, kSingle, &out));
48 EXPECT_EQ(2, out.size());
49 EXPECT_EQ("http://192.168.42.86:80", out[0]);
50 EXPECT_EQ(kNoProxy, out[1]);
51
52 EXPECT_TRUE(resolver.ProxyForUrlWithSettings(url, kSocks, &out));
53 EXPECT_EQ(2, out.size());
54 EXPECT_EQ("socks5://192.168.42.83:5555", out[0]);
55 EXPECT_EQ(kNoProxy, out[1]);
56
57 for (size_t j = 0; j < arraysize(multi_settings); j++) {
58 const string& settings = multi_settings[j];
59 EXPECT_TRUE(resolver.ProxyForUrlWithSettings(url, settings, &out));
60 EXPECT_EQ(j == 0 ? 3 : 2, out.size());
61 if (i == 0)
62 EXPECT_EQ("http://http_proxy:11", out[0]);
63 else
64 EXPECT_EQ("https://https_proxy:22", out[0]);
65 if (j == 0)
66 EXPECT_EQ("socks5://socks:55", out[1]);
67 EXPECT_EQ(kNoProxy, out.back());
68 }
69 }
70
71 // Bad JSON
72 EXPECT_FALSE(resolver.ProxyForUrlWithSettings("http://foo.com", "}", &out));
73
74 // Bad proxy scheme
75 EXPECT_TRUE(resolver.ProxyForUrlWithSettings("http://foo.com",
76 "{\"mode\":1}",
77 &out));
78 EXPECT_EQ(1, out.size());
79 EXPECT_EQ(kNoProxy, out[0]);
80 }
81
82 TEST(ChromeProxyResolverTest, DbusInterfaceTest) {
83 long number = 1;
84 DBusGConnection* kMockSystemBus =
85 reinterpret_cast<DBusGConnection*>(number++);
86 DBusGProxy* kMockSessionManagerProxy =
87 reinterpret_cast<DBusGProxy*>(number++);
88
89 const char settings[] =
90 "{\"mode\":4,\"socks\":{\"server\":\"socks5://192.168.52.83:5555\","
91 "\"src\":0}}";
92
93 MockDbusGlib dbus_iface;
94 ChromeProxyResolver resolver(&dbus_iface);
95
96 GArray* ret_array = g_array_new(FALSE, FALSE, 1);
97
98 EXPECT_CALL(dbus_iface, BusGet(DBUS_BUS_SYSTEM, _))
99 .Times(1)
100 .WillRepeatedly(Return(kMockSystemBus));
101 EXPECT_CALL(dbus_iface,
102 ProxyNewForNameOwner(kMockSystemBus,
103 StrEq(kSessionManagerService),
104 StrEq(kSessionManagerPath),
105 StrEq(kSessionManagerInterface),
106 _))
107 .WillOnce(Return(kMockSessionManagerProxy));
108 EXPECT_CALL(dbus_iface, ProxyCall(
109 kMockSessionManagerProxy,
110 StrEq(kSessionManagerRetreivePropertyMethod),
111 _,
112 G_TYPE_STRING, StrEq(kSessionManagerProxySettingsKey),
113 G_TYPE_INVALID,
114 G_TYPE_STRING, _,
115 DBUS_TYPE_G_UCHAR_ARRAY, _))
116 .WillOnce(DoAll(SetArgumentPointee<7>(strdup(settings)),
117 SetArgumentPointee<9>(ret_array),
118 Return(TRUE)));
119
120 vector<string> proxies;
121 EXPECT_TRUE(resolver.ProxyForUrl("http://user:pass@foo.com:22", &proxies));
122 EXPECT_EQ(2, proxies.size());
123 EXPECT_EQ("socks5://192.168.52.83:5555", proxies[0]);
124 EXPECT_EQ(kNoProxy, proxies[1]);
125 }
126
127 TEST(ChromeProxyResolverTest, ProxyTypeForProxyTest) {
128 // static bool ProxyTypeForProxy(const std::string& proxy,
petkov 2010/11/18 23:26:46 remove
adlr 2010/11/19 00:41:06 Done.
129 // curl_proxytype* out_type);
130 curl_proxytype type;
131 EXPECT_TRUE(ChromeProxyResolver::ProxyTypeForProxy("socks://f.ru", &type));
132 EXPECT_EQ(CURLPROXY_SOCKS5_HOSTNAME, type);
133 EXPECT_TRUE(ChromeProxyResolver::ProxyTypeForProxy("socks5://f.ru:9", &type));
134 EXPECT_EQ(CURLPROXY_SOCKS5_HOSTNAME, type);
135 EXPECT_TRUE(ChromeProxyResolver::ProxyTypeForProxy("socks4://f.ru:9", &type));
136 EXPECT_EQ(CURLPROXY_SOCKS4A, type);
137 EXPECT_TRUE(ChromeProxyResolver::ProxyTypeForProxy("http://f.no:88", &type));
138 EXPECT_EQ(CURLPROXY_HTTP, type);
139 EXPECT_TRUE(ChromeProxyResolver::ProxyTypeForProxy("https://f.no:88", &type));
140 EXPECT_EQ(CURLPROXY_HTTP, type);
141 EXPECT_FALSE(ChromeProxyResolver::ProxyTypeForProxy(kNoProxy, &type));
142 EXPECT_FALSE(ChromeProxyResolver::ProxyTypeForProxy("foo://", &type));
143 EXPECT_FALSE(ChromeProxyResolver::ProxyTypeForProxy("missing.com:8", &type));
144 }
145
146 } // namespace chromeos_update_engine
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698