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

Side by Side Diff: net/socket/ssl_client_socket_pool_unittest.cc

Issue 9425016: Change MockRead and MockWrite (et. al.) to take an IoMode enum, instead (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 8 years, 10 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) 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 #include "net/http/http_proxy_client_socket_pool.h" 5 #include "net/http/http_proxy_client_socket_pool.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); 210 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult());
211 EXPECT_FALSE(handle.is_initialized()); 211 EXPECT_FALSE(handle.is_initialized());
212 EXPECT_FALSE(handle.socket()); 212 EXPECT_FALSE(handle.socket());
213 EXPECT_FALSE(handle.is_ssl_error()); 213 EXPECT_FALSE(handle.is_ssl_error());
214 } 214 }
215 215
216 TEST_F(SSLClientSocketPoolTest, BasicDirect) { 216 TEST_F(SSLClientSocketPoolTest, BasicDirect) {
217 StaticSocketDataProvider data; 217 StaticSocketDataProvider data;
218 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 218 data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
219 socket_factory_.AddSocketDataProvider(&data); 219 socket_factory_.AddSocketDataProvider(&data);
220 SSLSocketDataProvider ssl(false, OK); 220 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
221 socket_factory_.AddSSLSocketDataProvider(&ssl); 221 socket_factory_.AddSSLSocketDataProvider(&ssl);
222 222
223 CreatePool(true /* tcp pool */, false, false); 223 CreatePool(true /* tcp pool */, false, false);
224 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 224 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
225 false); 225 false);
226 226
227 ClientSocketHandle handle; 227 ClientSocketHandle handle;
228 TestCompletionCallback callback; 228 TestCompletionCallback callback;
229 int rv = handle.Init( 229 int rv = handle.Init(
230 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 230 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
231 EXPECT_EQ(OK, rv); 231 EXPECT_EQ(OK, rv);
232 EXPECT_TRUE(handle.is_initialized()); 232 EXPECT_TRUE(handle.is_initialized());
233 EXPECT_TRUE(handle.socket()); 233 EXPECT_TRUE(handle.socket());
234 } 234 }
235 235
236 TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) { 236 TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) {
237 StaticSocketDataProvider data; 237 StaticSocketDataProvider data;
238 socket_factory_.AddSocketDataProvider(&data); 238 socket_factory_.AddSocketDataProvider(&data);
239 SSLSocketDataProvider ssl(true, OK); 239 SSLSocketDataProvider ssl(ASYNC, OK);
240 socket_factory_.AddSSLSocketDataProvider(&ssl); 240 socket_factory_.AddSSLSocketDataProvider(&ssl);
241 241
242 CreatePool(true /* tcp pool */, false, false); 242 CreatePool(true /* tcp pool */, false, false);
243 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 243 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
244 false); 244 false);
245 245
246 ClientSocketHandle handle; 246 ClientSocketHandle handle;
247 TestCompletionCallback callback; 247 TestCompletionCallback callback;
248 int rv = handle.Init( 248 int rv = handle.Init(
249 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 249 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
250 EXPECT_EQ(ERR_IO_PENDING, rv); 250 EXPECT_EQ(ERR_IO_PENDING, rv);
251 EXPECT_FALSE(handle.is_initialized()); 251 EXPECT_FALSE(handle.is_initialized());
252 EXPECT_FALSE(handle.socket()); 252 EXPECT_FALSE(handle.socket());
253 253
254 EXPECT_EQ(OK, callback.WaitForResult()); 254 EXPECT_EQ(OK, callback.WaitForResult());
255 EXPECT_TRUE(handle.is_initialized()); 255 EXPECT_TRUE(handle.is_initialized());
256 EXPECT_TRUE(handle.socket()); 256 EXPECT_TRUE(handle.socket());
257 } 257 }
258 258
259 TEST_F(SSLClientSocketPoolTest, DirectCertError) { 259 TEST_F(SSLClientSocketPoolTest, DirectCertError) {
260 StaticSocketDataProvider data; 260 StaticSocketDataProvider data;
261 socket_factory_.AddSocketDataProvider(&data); 261 socket_factory_.AddSocketDataProvider(&data);
262 SSLSocketDataProvider ssl(true, ERR_CERT_COMMON_NAME_INVALID); 262 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID);
263 socket_factory_.AddSSLSocketDataProvider(&ssl); 263 socket_factory_.AddSSLSocketDataProvider(&ssl);
264 264
265 CreatePool(true /* tcp pool */, false, false); 265 CreatePool(true /* tcp pool */, false, false);
266 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 266 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
267 false); 267 false);
268 268
269 ClientSocketHandle handle; 269 ClientSocketHandle handle;
270 TestCompletionCallback callback; 270 TestCompletionCallback callback;
271 int rv = handle.Init( 271 int rv = handle.Init(
272 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 272 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
273 EXPECT_EQ(ERR_IO_PENDING, rv); 273 EXPECT_EQ(ERR_IO_PENDING, rv);
274 EXPECT_FALSE(handle.is_initialized()); 274 EXPECT_FALSE(handle.is_initialized());
275 EXPECT_FALSE(handle.socket()); 275 EXPECT_FALSE(handle.socket());
276 276
277 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); 277 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult());
278 EXPECT_TRUE(handle.is_initialized()); 278 EXPECT_TRUE(handle.is_initialized());
279 EXPECT_TRUE(handle.socket()); 279 EXPECT_TRUE(handle.socket());
280 } 280 }
281 281
282 TEST_F(SSLClientSocketPoolTest, DirectSSLError) { 282 TEST_F(SSLClientSocketPoolTest, DirectSSLError) {
283 StaticSocketDataProvider data; 283 StaticSocketDataProvider data;
284 socket_factory_.AddSocketDataProvider(&data); 284 socket_factory_.AddSocketDataProvider(&data);
285 SSLSocketDataProvider ssl(true, ERR_SSL_PROTOCOL_ERROR); 285 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR);
286 socket_factory_.AddSSLSocketDataProvider(&ssl); 286 socket_factory_.AddSSLSocketDataProvider(&ssl);
287 287
288 CreatePool(true /* tcp pool */, false, false); 288 CreatePool(true /* tcp pool */, false, false);
289 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 289 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
290 false); 290 false);
291 291
292 ClientSocketHandle handle; 292 ClientSocketHandle handle;
293 TestCompletionCallback callback; 293 TestCompletionCallback callback;
294 int rv = handle.Init( 294 int rv = handle.Init(
295 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 295 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
296 EXPECT_EQ(ERR_IO_PENDING, rv); 296 EXPECT_EQ(ERR_IO_PENDING, rv);
297 EXPECT_FALSE(handle.is_initialized()); 297 EXPECT_FALSE(handle.is_initialized());
298 EXPECT_FALSE(handle.socket()); 298 EXPECT_FALSE(handle.socket());
299 299
300 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, callback.WaitForResult()); 300 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, callback.WaitForResult());
301 EXPECT_FALSE(handle.is_initialized()); 301 EXPECT_FALSE(handle.is_initialized());
302 EXPECT_FALSE(handle.socket()); 302 EXPECT_FALSE(handle.socket());
303 EXPECT_TRUE(handle.is_ssl_error()); 303 EXPECT_TRUE(handle.is_ssl_error());
304 } 304 }
305 305
306 TEST_F(SSLClientSocketPoolTest, DirectWithNPN) { 306 TEST_F(SSLClientSocketPoolTest, DirectWithNPN) {
307 StaticSocketDataProvider data; 307 StaticSocketDataProvider data;
308 socket_factory_.AddSocketDataProvider(&data); 308 socket_factory_.AddSocketDataProvider(&data);
309 SSLSocketDataProvider ssl(true, OK); 309 SSLSocketDataProvider ssl(ASYNC, OK);
310 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 310 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
311 ssl.next_proto = "http/1.1"; 311 ssl.next_proto = "http/1.1";
312 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; 312 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11;
313 socket_factory_.AddSSLSocketDataProvider(&ssl); 313 socket_factory_.AddSSLSocketDataProvider(&ssl);
314 314
315 CreatePool(true /* tcp pool */, false, false); 315 CreatePool(true /* tcp pool */, false, false);
316 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 316 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
317 false); 317 false);
318 318
319 ClientSocketHandle handle; 319 ClientSocketHandle handle;
320 TestCompletionCallback callback; 320 TestCompletionCallback callback;
321 int rv = handle.Init( 321 int rv = handle.Init(
322 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 322 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
323 EXPECT_EQ(ERR_IO_PENDING, rv); 323 EXPECT_EQ(ERR_IO_PENDING, rv);
324 EXPECT_FALSE(handle.is_initialized()); 324 EXPECT_FALSE(handle.is_initialized());
325 EXPECT_FALSE(handle.socket()); 325 EXPECT_FALSE(handle.socket());
326 326
327 EXPECT_EQ(OK, callback.WaitForResult()); 327 EXPECT_EQ(OK, callback.WaitForResult());
328 EXPECT_TRUE(handle.is_initialized()); 328 EXPECT_TRUE(handle.is_initialized());
329 EXPECT_TRUE(handle.socket()); 329 EXPECT_TRUE(handle.socket());
330 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 330 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
331 EXPECT_TRUE(ssl_socket->was_npn_negotiated()); 331 EXPECT_TRUE(ssl_socket->was_npn_negotiated());
332 } 332 }
333 333
334 TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) { 334 TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) {
335 StaticSocketDataProvider data; 335 StaticSocketDataProvider data;
336 socket_factory_.AddSocketDataProvider(&data); 336 socket_factory_.AddSocketDataProvider(&data);
337 SSLSocketDataProvider ssl(true, OK); 337 SSLSocketDataProvider ssl(ASYNC, OK);
338 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 338 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
339 ssl.next_proto = "http/1.1"; 339 ssl.next_proto = "http/1.1";
340 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; 340 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11;
341 socket_factory_.AddSSLSocketDataProvider(&ssl); 341 socket_factory_.AddSSLSocketDataProvider(&ssl);
342 342
343 CreatePool(true /* tcp pool */, false, false); 343 CreatePool(true /* tcp pool */, false, false);
344 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 344 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
345 true); 345 true);
346 346
347 ClientSocketHandle handle; 347 ClientSocketHandle handle;
348 TestCompletionCallback callback; 348 TestCompletionCallback callback;
349 int rv = handle.Init( 349 int rv = handle.Init(
350 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 350 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
351 EXPECT_EQ(ERR_IO_PENDING, rv); 351 EXPECT_EQ(ERR_IO_PENDING, rv);
352 EXPECT_FALSE(handle.is_initialized()); 352 EXPECT_FALSE(handle.is_initialized());
353 EXPECT_FALSE(handle.socket()); 353 EXPECT_FALSE(handle.socket());
354 354
355 EXPECT_EQ(ERR_NPN_NEGOTIATION_FAILED, callback.WaitForResult()); 355 EXPECT_EQ(ERR_NPN_NEGOTIATION_FAILED, callback.WaitForResult());
356 EXPECT_FALSE(handle.is_initialized()); 356 EXPECT_FALSE(handle.is_initialized());
357 EXPECT_FALSE(handle.socket()); 357 EXPECT_FALSE(handle.socket());
358 EXPECT_TRUE(handle.is_ssl_error()); 358 EXPECT_TRUE(handle.is_ssl_error());
359 } 359 }
360 360
361 TEST_F(SSLClientSocketPoolTest, DirectGotSPDY) { 361 TEST_F(SSLClientSocketPoolTest, DirectGotSPDY) {
362 StaticSocketDataProvider data; 362 StaticSocketDataProvider data;
363 socket_factory_.AddSocketDataProvider(&data); 363 socket_factory_.AddSocketDataProvider(&data);
364 SSLSocketDataProvider ssl(true, OK); 364 SSLSocketDataProvider ssl(ASYNC, OK);
365 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 365 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
366 ssl.next_proto = "spdy/2.1"; 366 ssl.next_proto = "spdy/2.1";
367 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 367 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
368 socket_factory_.AddSSLSocketDataProvider(&ssl); 368 socket_factory_.AddSSLSocketDataProvider(&ssl);
369 369
370 CreatePool(true /* tcp pool */, false, false); 370 CreatePool(true /* tcp pool */, false, false);
371 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 371 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
372 true); 372 true);
373 373
374 ClientSocketHandle handle; 374 ClientSocketHandle handle;
(...skipping 13 matching lines...) Expand all
388 std::string proto; 388 std::string proto;
389 std::string server_protos; 389 std::string server_protos;
390 ssl_socket->GetNextProto(&proto, &server_protos); 390 ssl_socket->GetNextProto(&proto, &server_protos);
391 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto), 391 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto),
392 SSLClientSocket::kProtoSPDY21); 392 SSLClientSocket::kProtoSPDY21);
393 } 393 }
394 394
395 TEST_F(SSLClientSocketPoolTest, DirectGotBonusSPDY) { 395 TEST_F(SSLClientSocketPoolTest, DirectGotBonusSPDY) {
396 StaticSocketDataProvider data; 396 StaticSocketDataProvider data;
397 socket_factory_.AddSocketDataProvider(&data); 397 socket_factory_.AddSocketDataProvider(&data);
398 SSLSocketDataProvider ssl(true, OK); 398 SSLSocketDataProvider ssl(ASYNC, OK);
399 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 399 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
400 ssl.next_proto = "spdy/2.1"; 400 ssl.next_proto = "spdy/2.1";
401 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 401 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
402 socket_factory_.AddSSLSocketDataProvider(&ssl); 402 socket_factory_.AddSSLSocketDataProvider(&ssl);
403 403
404 CreatePool(true /* tcp pool */, false, false); 404 CreatePool(true /* tcp pool */, false, false);
405 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 405 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
406 true); 406 true);
407 407
408 ClientSocketHandle handle; 408 ClientSocketHandle handle;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); 465 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult());
466 EXPECT_FALSE(handle.is_initialized()); 466 EXPECT_FALSE(handle.is_initialized());
467 EXPECT_FALSE(handle.socket()); 467 EXPECT_FALSE(handle.socket());
468 EXPECT_FALSE(handle.is_ssl_error()); 468 EXPECT_FALSE(handle.is_ssl_error());
469 } 469 }
470 470
471 TEST_F(SSLClientSocketPoolTest, SOCKSBasic) { 471 TEST_F(SSLClientSocketPoolTest, SOCKSBasic) {
472 StaticSocketDataProvider data; 472 StaticSocketDataProvider data;
473 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 473 data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
474 socket_factory_.AddSocketDataProvider(&data); 474 socket_factory_.AddSocketDataProvider(&data);
475 SSLSocketDataProvider ssl(false, OK); 475 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
476 socket_factory_.AddSSLSocketDataProvider(&ssl); 476 socket_factory_.AddSSLSocketDataProvider(&ssl);
477 477
478 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 478 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
479 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 479 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
480 false); 480 false);
481 481
482 ClientSocketHandle handle; 482 ClientSocketHandle handle;
483 TestCompletionCallback callback; 483 TestCompletionCallback callback;
484 int rv = handle.Init( 484 int rv = handle.Init(
485 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 485 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
486 EXPECT_EQ(OK, rv); 486 EXPECT_EQ(OK, rv);
487 EXPECT_TRUE(handle.is_initialized()); 487 EXPECT_TRUE(handle.is_initialized());
488 EXPECT_TRUE(handle.socket()); 488 EXPECT_TRUE(handle.socket());
489 } 489 }
490 490
491 TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) { 491 TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) {
492 StaticSocketDataProvider data; 492 StaticSocketDataProvider data;
493 socket_factory_.AddSocketDataProvider(&data); 493 socket_factory_.AddSocketDataProvider(&data);
494 SSLSocketDataProvider ssl(true, OK); 494 SSLSocketDataProvider ssl(ASYNC, OK);
495 socket_factory_.AddSSLSocketDataProvider(&ssl); 495 socket_factory_.AddSSLSocketDataProvider(&ssl);
496 496
497 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 497 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
498 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 498 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
499 false); 499 false);
500 500
501 ClientSocketHandle handle; 501 ClientSocketHandle handle;
502 TestCompletionCallback callback; 502 TestCompletionCallback callback;
503 int rv = handle.Init( 503 int rv = handle.Init(
504 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 504 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 EXPECT_FALSE(handle.socket()); 548 EXPECT_FALSE(handle.socket());
549 549
550 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); 550 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult());
551 EXPECT_FALSE(handle.is_initialized()); 551 EXPECT_FALSE(handle.is_initialized());
552 EXPECT_FALSE(handle.socket()); 552 EXPECT_FALSE(handle.socket());
553 EXPECT_FALSE(handle.is_ssl_error()); 553 EXPECT_FALSE(handle.is_ssl_error());
554 } 554 }
555 555
556 TEST_F(SSLClientSocketPoolTest, HttpProxyBasic) { 556 TEST_F(SSLClientSocketPoolTest, HttpProxyBasic) {
557 MockWrite writes[] = { 557 MockWrite writes[] = {
558 MockWrite(false, 558 MockWrite(SYNCHRONOUS,
559 "CONNECT host:80 HTTP/1.1\r\n" 559 "CONNECT host:80 HTTP/1.1\r\n"
560 "Host: host\r\n" 560 "Host: host\r\n"
561 "Proxy-Connection: keep-alive\r\n" 561 "Proxy-Connection: keep-alive\r\n"
562 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 562 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
563 }; 563 };
564 MockRead reads[] = { 564 MockRead reads[] = {
565 MockRead(false, "HTTP/1.1 200 Connection Established\r\n\r\n"), 565 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"),
566 }; 566 };
567 StaticSocketDataProvider data(reads, arraysize(reads), writes, 567 StaticSocketDataProvider data(reads, arraysize(reads), writes,
568 arraysize(writes)); 568 arraysize(writes));
569 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 569 data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
570 socket_factory_.AddSocketDataProvider(&data); 570 socket_factory_.AddSocketDataProvider(&data);
571 AddAuthToCache(); 571 AddAuthToCache();
572 SSLSocketDataProvider ssl(false, OK); 572 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
573 socket_factory_.AddSSLSocketDataProvider(&ssl); 573 socket_factory_.AddSSLSocketDataProvider(&ssl);
574 574
575 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 575 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
576 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 576 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
577 false); 577 false);
578 578
579 ClientSocketHandle handle; 579 ClientSocketHandle handle;
580 TestCompletionCallback callback; 580 TestCompletionCallback callback;
581 int rv = handle.Init( 581 int rv = handle.Init(
582 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 582 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
583 EXPECT_EQ(OK, rv); 583 EXPECT_EQ(OK, rv);
584 EXPECT_TRUE(handle.is_initialized()); 584 EXPECT_TRUE(handle.is_initialized());
585 EXPECT_TRUE(handle.socket()); 585 EXPECT_TRUE(handle.socket());
586 } 586 }
587 587
588 TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) { 588 TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) {
589 MockWrite writes[] = { 589 MockWrite writes[] = {
590 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 590 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
591 "Host: host\r\n" 591 "Host: host\r\n"
592 "Proxy-Connection: keep-alive\r\n" 592 "Proxy-Connection: keep-alive\r\n"
593 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 593 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
594 }; 594 };
595 MockRead reads[] = { 595 MockRead reads[] = {
596 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 596 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
597 }; 597 };
598 StaticSocketDataProvider data(reads, arraysize(reads), writes, 598 StaticSocketDataProvider data(reads, arraysize(reads), writes,
599 arraysize(writes)); 599 arraysize(writes));
600 socket_factory_.AddSocketDataProvider(&data); 600 socket_factory_.AddSocketDataProvider(&data);
601 AddAuthToCache(); 601 AddAuthToCache();
602 SSLSocketDataProvider ssl(true, OK); 602 SSLSocketDataProvider ssl(ASYNC, OK);
603 socket_factory_.AddSSLSocketDataProvider(&ssl); 603 socket_factory_.AddSSLSocketDataProvider(&ssl);
604 604
605 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 605 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
606 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 606 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
607 false); 607 false);
608 608
609 ClientSocketHandle handle; 609 ClientSocketHandle handle;
610 TestCompletionCallback callback; 610 TestCompletionCallback callback;
611 int rv = handle.Init( 611 int rv = handle.Init(
612 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 612 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
(...skipping 14 matching lines...) Expand all
627 }; 627 };
628 MockRead reads[] = { 628 MockRead reads[] = {
629 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 629 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
630 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 630 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
631 MockRead("Content-Length: 10\r\n\r\n"), 631 MockRead("Content-Length: 10\r\n\r\n"),
632 MockRead("0123456789"), 632 MockRead("0123456789"),
633 }; 633 };
634 StaticSocketDataProvider data(reads, arraysize(reads), writes, 634 StaticSocketDataProvider data(reads, arraysize(reads), writes,
635 arraysize(writes)); 635 arraysize(writes));
636 socket_factory_.AddSocketDataProvider(&data); 636 socket_factory_.AddSocketDataProvider(&data);
637 SSLSocketDataProvider ssl(true, OK); 637 SSLSocketDataProvider ssl(ASYNC, OK);
638 socket_factory_.AddSSLSocketDataProvider(&ssl); 638 socket_factory_.AddSSLSocketDataProvider(&ssl);
639 639
640 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 640 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
641 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 641 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
642 false); 642 false);
643 643
644 ClientSocketHandle handle; 644 ClientSocketHandle handle;
645 TestCompletionCallback callback; 645 TestCompletionCallback callback;
646 int rv = handle.Init( 646 int rv = handle.Init(
647 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 647 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); 684 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort));
685 host_resolver_.Resolve(info, &test_hosts[i].addresses, CompletionCallback(), 685 host_resolver_.Resolve(info, &test_hosts[i].addresses, CompletionCallback(),
686 NULL, BoundNetLog()); 686 NULL, BoundNetLog());
687 687
688 // Setup a HostPortProxyPair 688 // Setup a HostPortProxyPair
689 test_hosts[i].pair = HostPortProxyPair( 689 test_hosts[i].pair = HostPortProxyPair(
690 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); 690 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct());
691 } 691 }
692 692
693 MockRead reads[] = { 693 MockRead reads[] = {
694 MockRead(true, ERR_IO_PENDING), 694 MockRead(ASYNC, ERR_IO_PENDING),
695 }; 695 };
696 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 696 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
697 socket_factory_.AddSocketDataProvider(&data); 697 socket_factory_.AddSocketDataProvider(&data);
698 SSLSocketDataProvider ssl(true, OK); 698 SSLSocketDataProvider ssl(ASYNC, OK);
699 ssl.cert = X509Certificate::CreateFromBytes( 699 ssl.cert = X509Certificate::CreateFromBytes(
700 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); 700 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der));
701 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 701 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
702 ssl.next_proto = "spdy/2.1"; 702 ssl.next_proto = "spdy/2.1";
703 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 703 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
704 socket_factory_.AddSSLSocketDataProvider(&ssl); 704 socket_factory_.AddSSLSocketDataProvider(&ssl);
705 705
706 CreatePool(true /* tcp pool */, false, false); 706 CreatePool(true /* tcp pool */, false, false);
707 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 707 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
708 true); 708 true);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 rv = host_resolver_.Resolve(info, &test_hosts[i].addresses, 772 rv = host_resolver_.Resolve(info, &test_hosts[i].addresses,
773 callback.callback(), NULL, BoundNetLog()); 773 callback.callback(), NULL, BoundNetLog());
774 EXPECT_EQ(OK, callback.GetResult(rv)); 774 EXPECT_EQ(OK, callback.GetResult(rv));
775 775
776 // Setup a HostPortProxyPair 776 // Setup a HostPortProxyPair
777 test_hosts[i].pair = HostPortProxyPair( 777 test_hosts[i].pair = HostPortProxyPair(
778 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); 778 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct());
779 } 779 }
780 780
781 MockRead reads[] = { 781 MockRead reads[] = {
782 MockRead(true, ERR_IO_PENDING), 782 MockRead(ASYNC, ERR_IO_PENDING),
783 }; 783 };
784 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 784 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
785 socket_factory_.AddSocketDataProvider(&data); 785 socket_factory_.AddSocketDataProvider(&data);
786 SSLSocketDataProvider ssl(true, OK); 786 SSLSocketDataProvider ssl(ASYNC, OK);
787 ssl.cert = X509Certificate::CreateFromBytes( 787 ssl.cert = X509Certificate::CreateFromBytes(
788 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); 788 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der));
789 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 789 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
790 ssl.next_proto = "spdy/2.1"; 790 ssl.next_proto = "spdy/2.1";
791 ssl.client_cert_sent = true; 791 ssl.client_cert_sent = true;
792 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 792 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
793 socket_factory_.AddSSLSocketDataProvider(&ssl); 793 socket_factory_.AddSSLSocketDataProvider(&ssl);
794 794
795 CreatePool(true /* tcp pool */, false, false); 795 CreatePool(true /* tcp pool */, false, false);
796 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 796 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].pair)); 831 EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].pair));
832 832
833 session_->spdy_session_pool()->CloseAllSessions(); 833 session_->spdy_session_pool()->CloseAllSessions();
834 } 834 }
835 835
836 // It would be nice to also test the timeouts in SSLClientSocketPool. 836 // It would be nice to also test the timeouts in SSLClientSocketPool.
837 837
838 } // namespace 838 } // namespace
839 839
840 } // namespace net 840 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698