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

Side by Side Diff: net/proxy/proxy_server_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "net/proxy/proxy_server.h" 6 #include "net/proxy/proxy_server.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 // Test the creation of ProxyServer using ProxyServer::FromURI, which parses 9 // Test the creation of ProxyServer using ProxyServer::FromURI, which parses
10 // inputs of the form [<scheme>"://"]<host>[":"<port>]. Verify that each part 10 // inputs of the form [<scheme>"://"]<host>[":"<port>]. Verify that each part
11 // was labelled correctly, and the accessors all give the right data. 11 // was labelled correctly, and the accessors all give the right data.
12 TEST(ProxyServerTest, FromURI) { 12 TEST(ProxyServerTest, FromURI) {
13 const struct { 13 const struct {
14 const char* input_uri; 14 const char* input_uri;
15 const char* expected_uri; 15 const char* expected_uri;
16 net::ProxyServer::Scheme expected_scheme; 16 net::ProxyServer::Scheme expected_scheme;
17 const char* expected_host; 17 const char* expected_host;
18 int expected_port; 18 int expected_port;
19 const char* expected_pac_string; 19 const char* expected_pac_string;
20 } tests[] = { 20 } tests[] = {
21 // HTTP proxy URIs: 21 // HTTP proxy URIs:
22 { 22 {"foopy:10", // No scheme.
23 "foopy:10", // No scheme. 23 "foopy:10", net::ProxyServer::SCHEME_HTTP, "foopy", 10,
24 "foopy:10", 24 "PROXY foopy:10"},
25 net::ProxyServer::SCHEME_HTTP, 25 {"http://foopy", // No port.
26 "foopy", 26 "foopy:80", net::ProxyServer::SCHEME_HTTP, "foopy", 80,
27 10, 27 "PROXY foopy:80"},
28 "PROXY foopy:10" 28 {"http://foopy:10", "foopy:10", net::ProxyServer::SCHEME_HTTP, "foopy",
29 }, 29 10, "PROXY foopy:10"},
30 {
31 "http://foopy", // No port.
32 "foopy:80",
33 net::ProxyServer::SCHEME_HTTP,
34 "foopy",
35 80,
36 "PROXY foopy:80"
37 },
38 {
39 "http://foopy:10",
40 "foopy:10",
41 net::ProxyServer::SCHEME_HTTP,
42 "foopy",
43 10,
44 "PROXY foopy:10"
45 },
46 30
47 // IPv6 HTTP proxy URIs: 31 // IPv6 HTTP proxy URIs:
48 { 32 {"[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:10", // No scheme.
49 "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:10", // No scheme. 33 "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:10",
50 "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:10", 34 net::ProxyServer::SCHEME_HTTP,
51 net::ProxyServer::SCHEME_HTTP, 35 "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", 10,
52 "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", 36 "PROXY [FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:10"},
53 10, 37 {"http://[3ffe:2a00:100:7031::1]", // No port.
54 "PROXY [FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:10" 38 "[3ffe:2a00:100:7031::1]:80", net::ProxyServer::SCHEME_HTTP,
55 }, 39 "3ffe:2a00:100:7031::1", 80, "PROXY [3ffe:2a00:100:7031::1]:80"},
56 { 40 {"http://[::192.9.5.5]", "[::192.9.5.5]:80",
57 "http://[3ffe:2a00:100:7031::1]", // No port. 41 net::ProxyServer::SCHEME_HTTP, "::192.9.5.5", 80,
58 "[3ffe:2a00:100:7031::1]:80", 42 "PROXY [::192.9.5.5]:80"},
59 net::ProxyServer::SCHEME_HTTP, 43 {"http://[::FFFF:129.144.52.38]:80", "[::FFFF:129.144.52.38]:80",
60 "3ffe:2a00:100:7031::1", 44 net::ProxyServer::SCHEME_HTTP, "::FFFF:129.144.52.38", 80,
61 80, 45 "PROXY [::FFFF:129.144.52.38]:80"},
62 "PROXY [3ffe:2a00:100:7031::1]:80"
63 },
64 {
65 "http://[::192.9.5.5]",
66 "[::192.9.5.5]:80",
67 net::ProxyServer::SCHEME_HTTP,
68 "::192.9.5.5",
69 80,
70 "PROXY [::192.9.5.5]:80"
71 },
72 {
73 "http://[::FFFF:129.144.52.38]:80",
74 "[::FFFF:129.144.52.38]:80",
75 net::ProxyServer::SCHEME_HTTP,
76 "::FFFF:129.144.52.38",
77 80,
78 "PROXY [::FFFF:129.144.52.38]:80"
79 },
80 46
81 // SOCKS4 proxy URIs: 47 // SOCKS4 proxy URIs:
82 { 48 {"socks4://foopy", // No port.
83 "socks4://foopy", // No port. 49 "socks4://foopy:1080", net::ProxyServer::SCHEME_SOCKS4, "foopy", 1080,
84 "socks4://foopy:1080", 50 "SOCKS foopy:1080"},
85 net::ProxyServer::SCHEME_SOCKS4, 51 {"socks4://foopy:10", "socks4://foopy:10",
86 "foopy", 52 net::ProxyServer::SCHEME_SOCKS4, "foopy", 10, "SOCKS foopy:10"},
87 1080,
88 "SOCKS foopy:1080"
89 },
90 {
91 "socks4://foopy:10",
92 "socks4://foopy:10",
93 net::ProxyServer::SCHEME_SOCKS4,
94 "foopy",
95 10,
96 "SOCKS foopy:10"
97 },
98 53
99 // SOCKS5 proxy URIs 54 // SOCKS5 proxy URIs
100 { 55 {"socks5://foopy", // No port.
101 "socks5://foopy", // No port. 56 "socks5://foopy:1080", net::ProxyServer::SCHEME_SOCKS5, "foopy", 1080,
102 "socks5://foopy:1080", 57 "SOCKS5 foopy:1080"},
103 net::ProxyServer::SCHEME_SOCKS5, 58 {"socks5://foopy:10", "socks5://foopy:10",
104 "foopy", 59 net::ProxyServer::SCHEME_SOCKS5, "foopy", 10, "SOCKS5 foopy:10"},
105 1080,
106 "SOCKS5 foopy:1080"
107 },
108 {
109 "socks5://foopy:10",
110 "socks5://foopy:10",
111 net::ProxyServer::SCHEME_SOCKS5,
112 "foopy",
113 10,
114 "SOCKS5 foopy:10"
115 },
116 60
117 // SOCKS proxy URIs (should default to SOCKS5) 61 // SOCKS proxy URIs (should default to SOCKS5)
118 { 62 {"socks://foopy", // No port.
119 "socks://foopy", // No port. 63 "socks5://foopy:1080", net::ProxyServer::SCHEME_SOCKS5, "foopy", 1080,
120 "socks5://foopy:1080", 64 "SOCKS5 foopy:1080"},
121 net::ProxyServer::SCHEME_SOCKS5, 65 {"socks://foopy:10", "socks5://foopy:10",
122 "foopy", 66 net::ProxyServer::SCHEME_SOCKS5, "foopy", 10, "SOCKS5 foopy:10"},
123 1080,
124 "SOCKS5 foopy:1080"
125 },
126 {
127 "socks://foopy:10",
128 "socks5://foopy:10",
129 net::ProxyServer::SCHEME_SOCKS5,
130 "foopy",
131 10,
132 "SOCKS5 foopy:10"
133 },
134 67
135 // HTTPS proxy URIs: 68 // HTTPS proxy URIs:
136 { 69 {"https://foopy", // No port
137 "https://foopy", // No port 70 "https://foopy:443", net::ProxyServer::SCHEME_HTTPS, "foopy", 443,
138 "https://foopy:443", 71 "HTTPS foopy:443"},
139 net::ProxyServer::SCHEME_HTTPS, 72 {"https://foopy:10", // Non-standard port
140 "foopy", 73 "https://foopy:10", net::ProxyServer::SCHEME_HTTPS, "foopy", 10,
141 443, 74 "HTTPS foopy:10"},
142 "HTTPS foopy:443" 75 {"https://1.2.3.4:10", // IP Address
143 }, 76 "https://1.2.3.4:10", net::ProxyServer::SCHEME_HTTPS, "1.2.3.4", 10,
144 { 77 "HTTPS 1.2.3.4:10"},
145 "https://foopy:10", // Non-standard port 78 };
146 "https://foopy:10",
147 net::ProxyServer::SCHEME_HTTPS,
148 "foopy",
149 10,
150 "HTTPS foopy:10"
151 },
152 {
153 "https://1.2.3.4:10", // IP Address
154 "https://1.2.3.4:10",
155 net::ProxyServer::SCHEME_HTTPS,
156 "1.2.3.4",
157 10,
158 "HTTPS 1.2.3.4:10"
159 },
160 };
161 79
162 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 80 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
163 net::ProxyServer uri = 81 net::ProxyServer uri = net::ProxyServer::FromURI(
164 net::ProxyServer::FromURI(tests[i].input_uri, 82 tests[i].input_uri, net::ProxyServer::SCHEME_HTTP);
165 net::ProxyServer::SCHEME_HTTP);
166 EXPECT_TRUE(uri.is_valid()); 83 EXPECT_TRUE(uri.is_valid());
167 EXPECT_FALSE(uri.is_direct()); 84 EXPECT_FALSE(uri.is_direct());
168 EXPECT_EQ(tests[i].expected_uri, uri.ToURI()); 85 EXPECT_EQ(tests[i].expected_uri, uri.ToURI());
169 EXPECT_EQ(tests[i].expected_scheme, uri.scheme()); 86 EXPECT_EQ(tests[i].expected_scheme, uri.scheme());
170 EXPECT_EQ(tests[i].expected_host, uri.host_port_pair().host()); 87 EXPECT_EQ(tests[i].expected_host, uri.host_port_pair().host());
171 EXPECT_EQ(tests[i].expected_port, uri.host_port_pair().port()); 88 EXPECT_EQ(tests[i].expected_port, uri.host_port_pair().port());
172 EXPECT_EQ(tests[i].expected_pac_string, uri.ToPacString()); 89 EXPECT_EQ(tests[i].expected_pac_string, uri.ToPacString());
173 } 90 }
174 } 91 }
175 92
176 TEST(ProxyServerTest, DefaultConstructor) { 93 TEST(ProxyServerTest, DefaultConstructor) {
177 net::ProxyServer proxy_server; 94 net::ProxyServer proxy_server;
178 EXPECT_FALSE(proxy_server.is_valid()); 95 EXPECT_FALSE(proxy_server.is_valid());
179 } 96 }
180 97
181 // Test parsing of the special URI form "direct://". Analagous to the "DIRECT" 98 // Test parsing of the special URI form "direct://". Analagous to the "DIRECT"
182 // entry in a PAC result. 99 // entry in a PAC result.
183 TEST(ProxyServerTest, Direct) { 100 TEST(ProxyServerTest, Direct) {
184 net::ProxyServer uri = 101 net::ProxyServer uri =
185 net::ProxyServer::FromURI("direct://", net::ProxyServer::SCHEME_HTTP); 102 net::ProxyServer::FromURI("direct://", net::ProxyServer::SCHEME_HTTP);
186 EXPECT_TRUE(uri.is_valid()); 103 EXPECT_TRUE(uri.is_valid());
187 EXPECT_TRUE(uri.is_direct()); 104 EXPECT_TRUE(uri.is_direct());
188 EXPECT_EQ("direct://", uri.ToURI()); 105 EXPECT_EQ("direct://", uri.ToURI());
189 EXPECT_EQ("DIRECT", uri.ToPacString()); 106 EXPECT_EQ("DIRECT", uri.ToPacString());
190 } 107 }
191 108
192 // Test parsing some invalid inputs. 109 // Test parsing some invalid inputs.
193 TEST(ProxyServerTest, Invalid) { 110 TEST(ProxyServerTest, Invalid) {
194 const char* tests[] = { 111 const char* tests[] = {
195 "", 112 "", " ",
196 " ", 113 "dddf:", // not a valid port
197 "dddf:", // not a valid port 114 "dddd:d", // not a valid port
198 "dddd:d", // not a valid port 115 "http://", // not a valid host/port.
199 "http://", // not a valid host/port. 116 "direct://xyz", // direct is not allowed a host/port.
200 "direct://xyz", // direct is not allowed a host/port. 117 "http:/", // ambiguous, but will fail because of bad port.
201 "http:/", // ambiguous, but will fail because of bad port. 118 "http:", // ambiguous, but will fail because of bad port.
202 "http:", // ambiguous, but will fail because of bad port.
203 }; 119 };
204 120
205 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 121 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
206 net::ProxyServer uri = 122 net::ProxyServer uri =
207 net::ProxyServer::FromURI(tests[i], net::ProxyServer::SCHEME_HTTP); 123 net::ProxyServer::FromURI(tests[i], net::ProxyServer::SCHEME_HTTP);
208 EXPECT_FALSE(uri.is_valid()); 124 EXPECT_FALSE(uri.is_valid());
209 EXPECT_FALSE(uri.is_direct()); 125 EXPECT_FALSE(uri.is_direct());
210 EXPECT_FALSE(uri.is_http()); 126 EXPECT_FALSE(uri.is_http());
211 EXPECT_FALSE(uri.is_socks()); 127 EXPECT_FALSE(uri.is_socks());
212 } 128 }
213 } 129 }
214 130
215 // Test that LWS (SP | HT) is disregarded from the ends. 131 // Test that LWS (SP | HT) is disregarded from the ends.
216 TEST(ProxyServerTest, Whitespace) { 132 TEST(ProxyServerTest, Whitespace) {
217 const char* tests[] = { 133 const char* tests[] = {
218 " foopy:80", 134 " foopy:80", "foopy:80 \t", " \tfoopy:80 ",
219 "foopy:80 \t",
220 " \tfoopy:80 ",
221 }; 135 };
222 136
223 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 137 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
224 net::ProxyServer uri = 138 net::ProxyServer uri =
225 net::ProxyServer::FromURI(tests[i], net::ProxyServer::SCHEME_HTTP); 139 net::ProxyServer::FromURI(tests[i], net::ProxyServer::SCHEME_HTTP);
226 EXPECT_EQ("foopy:80", uri.ToURI()); 140 EXPECT_EQ("foopy:80", uri.ToURI());
227 } 141 }
228 } 142 }
229 143
230 // Test parsing a ProxyServer from a PAC representation. 144 // Test parsing a ProxyServer from a PAC representation.
231 TEST(ProxyServerTest, FromPACString) { 145 TEST(ProxyServerTest, FromPACString) {
232 const struct { 146 const struct {
233 const char* input_pac; 147 const char* input_pac;
234 const char* expected_uri; 148 const char* expected_uri;
235 } tests[] = { 149 } tests[] = {
236 { 150 {
237 "PROXY foopy:10", 151 "PROXY foopy:10", "foopy:10",
238 "foopy:10", 152 },
239 }, 153 {
240 { 154 " PROXY foopy:10 ", "foopy:10",
241 " PROXY foopy:10 ", 155 },
242 "foopy:10", 156 {
243 }, 157 "pRoXy foopy:10", "foopy:10",
244 { 158 },
245 "pRoXy foopy:10", 159 {
246 "foopy:10", 160 "PROXY foopy", // No port.
247 }, 161 "foopy:80",
248 { 162 },
249 "PROXY foopy", // No port. 163 {
250 "foopy:80", 164 "socks foopy", "socks4://foopy:1080",
251 }, 165 },
252 { 166 {
253 "socks foopy", 167 "socks4 foopy", "socks4://foopy:1080",
254 "socks4://foopy:1080", 168 },
255 }, 169 {
256 { 170 "socks5 foopy", "socks5://foopy:1080",
257 "socks4 foopy", 171 },
258 "socks4://foopy:1080", 172 {
259 }, 173 "socks5 foopy:11", "socks5://foopy:11",
260 { 174 },
261 "socks5 foopy", 175 {
262 "socks5://foopy:1080", 176 " direct ", "direct://",
263 }, 177 },
264 { 178 {
265 "socks5 foopy:11", 179 "https foopy", "https://foopy:443",
266 "socks5://foopy:11", 180 },
267 }, 181 {
268 { 182 "https foopy:10", "https://foopy:10",
269 " direct ", 183 },
270 "direct://", 184 };
271 },
272 {
273 "https foopy",
274 "https://foopy:443",
275 },
276 {
277 "https foopy:10",
278 "https://foopy:10",
279 },
280 };
281 185
282 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 186 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
283 net::ProxyServer uri = net::ProxyServer::FromPacString(tests[i].input_pac); 187 net::ProxyServer uri = net::ProxyServer::FromPacString(tests[i].input_pac);
284 EXPECT_TRUE(uri.is_valid()); 188 EXPECT_TRUE(uri.is_valid());
285 EXPECT_EQ(tests[i].expected_uri, uri.ToURI()); 189 EXPECT_EQ(tests[i].expected_uri, uri.ToURI());
286 } 190 }
287 } 191 }
288 192
289 // Test parsing a ProxyServer from an invalid PAC representation. 193 // Test parsing a ProxyServer from an invalid PAC representation.
290 TEST(ProxyServerTest, FromPACStringInvalid) { 194 TEST(ProxyServerTest, FromPACStringInvalid) {
291 const char* tests[] = { 195 const char* tests[] = {
292 "PROXY", // missing host/port. 196 "PROXY", // missing host/port.
293 "HTTPS", // missing host/port. 197 "HTTPS", // missing host/port.
294 "SOCKS", // missing host/port. 198 "SOCKS", // missing host/port.
295 "DIRECT foopy:10", // direct cannot have host/port. 199 "DIRECT foopy:10", // direct cannot have host/port.
296 }; 200 };
297 201
298 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 202 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
299 net::ProxyServer uri = net::ProxyServer::FromPacString(tests[i]); 203 net::ProxyServer uri = net::ProxyServer::FromPacString(tests[i]);
300 EXPECT_FALSE(uri.is_valid()); 204 EXPECT_FALSE(uri.is_valid());
301 } 205 }
302 } 206 }
303 207
304 TEST(ProxyServerTest, ComparatorAndEquality) { 208 TEST(ProxyServerTest, ComparatorAndEquality) {
305 struct { 209 struct {
306 // Inputs. 210 // Inputs.
307 const char* server1; 211 const char* server1;
308 const char* server2; 212 const char* server2;
309 213
310 // Expectation. 214 // Expectation.
311 // -1 means server1 is less than server2 215 // -1 means server1 is less than server2
312 // 0 means server1 equals server2 216 // 0 means server1 equals server2
313 // 1 means server1 is greater than server2 217 // 1 means server1 is greater than server2
314 int expected_comparison; 218 int expected_comparison;
315 } tests[] = { 219 } tests[] = {
316 { // Equal. 220 {// Equal.
317 "foo:11", 221 "foo:11", "http://foo:11", 0},
318 "http://foo:11", 222 {// Port is different.
319 0 223 "foo:333", "foo:444", -1},
320 }, 224 {// Host is different.
321 { // Port is different. 225 "foo:33", "bar:33", 1},
322 "foo:333", 226 {// Scheme is different.
323 "foo:444", 227 "socks4://foo:33", "http://foo:33", 1},
324 -1 228 };
325 },
326 { // Host is different.
327 "foo:33",
328 "bar:33",
329 1
330 },
331 { // Scheme is different.
332 "socks4://foo:33",
333 "http://foo:33",
334 1
335 },
336 };
337 229
338 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 230 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
339 // Parse the expected inputs to ProxyServer instances. 231 // Parse the expected inputs to ProxyServer instances.
340 const net::ProxyServer server1 = 232 const net::ProxyServer server1 = net::ProxyServer::FromURI(
341 net::ProxyServer::FromURI( 233 tests[i].server1, net::ProxyServer::SCHEME_HTTP);
342 tests[i].server1, net::ProxyServer::SCHEME_HTTP);
343 234
344 const net::ProxyServer server2 = 235 const net::ProxyServer server2 = net::ProxyServer::FromURI(
345 net::ProxyServer::FromURI( 236 tests[i].server2, net::ProxyServer::SCHEME_HTTP);
346 tests[i].server2, net::ProxyServer::SCHEME_HTTP);
347 237
348 switch (tests[i].expected_comparison) { 238 switch (tests[i].expected_comparison) {
349 case -1: 239 case -1:
350 EXPECT_TRUE(server1 < server2); 240 EXPECT_TRUE(server1 < server2);
351 EXPECT_FALSE(server2 < server1); 241 EXPECT_FALSE(server2 < server1);
352 EXPECT_FALSE(server2 == server1); 242 EXPECT_FALSE(server2 == server1);
353 break; 243 break;
354 case 0: 244 case 0:
355 EXPECT_FALSE(server1 < server2); 245 EXPECT_FALSE(server1 < server2);
356 EXPECT_FALSE(server2 < server1); 246 EXPECT_FALSE(server2 < server1);
357 EXPECT_TRUE(server2 == server1); 247 EXPECT_TRUE(server2 == server1);
358 break; 248 break;
359 case 1: 249 case 1:
360 EXPECT_FALSE(server1 < server2); 250 EXPECT_FALSE(server1 < server2);
361 EXPECT_TRUE(server2 < server1); 251 EXPECT_TRUE(server2 < server1);
362 EXPECT_FALSE(server2 == server1); 252 EXPECT_FALSE(server2 == server1);
363 break; 253 break;
364 default: 254 default:
365 FAIL() << "Invalid expectation. Can be only -1, 0, 1"; 255 FAIL() << "Invalid expectation. Can be only -1, 0, 1";
366 } 256 }
367 } 257 }
368 } 258 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698