OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/api/cast_channel/cast_socket.h" | 5 #include "extensions/browser/api/cast_channel/cast_socket.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 24 matching lines...) Expand all Loading... |
35 #include "net/socket/ssl_client_socket.h" | 35 #include "net/socket/ssl_client_socket.h" |
36 #include "net/socket/tcp_client_socket.h" | 36 #include "net/socket/tcp_client_socket.h" |
37 #include "net/ssl/ssl_info.h" | 37 #include "net/ssl/ssl_info.h" |
38 #include "net/test/cert_test_util.h" | 38 #include "net/test/cert_test_util.h" |
39 #include "net/test/test_data_directory.h" | 39 #include "net/test/test_data_directory.h" |
40 #include "testing/gmock/include/gmock/gmock.h" | 40 #include "testing/gmock/include/gmock/gmock.h" |
41 #include "testing/gtest/include/gtest/gtest.h" | 41 #include "testing/gtest/include/gtest/gtest.h" |
42 | 42 |
43 const int64_t kDistantTimeoutMillis = 100000; // 100 seconds (never hit). | 43 const int64_t kDistantTimeoutMillis = 100000; // 100 seconds (never hit). |
44 | 44 |
| 45 using ::cast_channel::ChannelError; |
| 46 using ::cast_channel::ChannelAuthType; |
| 47 using ::cast_channel::ReadyState; |
45 using ::testing::_; | 48 using ::testing::_; |
46 using ::testing::A; | 49 using ::testing::A; |
47 using ::testing::DoAll; | 50 using ::testing::DoAll; |
48 using ::testing::Invoke; | 51 using ::testing::Invoke; |
49 using ::testing::InvokeArgument; | 52 using ::testing::InvokeArgument; |
50 using ::testing::NotNull; | 53 using ::testing::NotNull; |
51 using ::testing::Return; | 54 using ::testing::Return; |
52 using ::testing::SaveArg; | 55 using ::testing::SaveArg; |
53 | 56 |
54 namespace extensions { | 57 namespace extensions { |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 private: | 173 private: |
171 DISALLOW_COPY_AND_ASSIGN(CompleteHandler); | 174 DISALLOW_COPY_AND_ASSIGN(CompleteHandler); |
172 }; | 175 }; |
173 | 176 |
174 class TestCastSocket : public CastSocketImpl { | 177 class TestCastSocket : public CastSocketImpl { |
175 public: | 178 public: |
176 static std::unique_ptr<TestCastSocket> CreateSecure( | 179 static std::unique_ptr<TestCastSocket> CreateSecure( |
177 Logger* logger, | 180 Logger* logger, |
178 uint64_t device_capabilities = cast_channel::CastDeviceCapability::NONE) { | 181 uint64_t device_capabilities = cast_channel::CastDeviceCapability::NONE) { |
179 return std::unique_ptr<TestCastSocket>(new TestCastSocket( | 182 return std::unique_ptr<TestCastSocket>(new TestCastSocket( |
180 CreateIPEndPointForTest(), CHANNEL_AUTH_TYPE_SSL_VERIFIED, | 183 CreateIPEndPointForTest(), ChannelAuthType::SSL_VERIFIED, |
181 kDistantTimeoutMillis, logger, device_capabilities)); | 184 kDistantTimeoutMillis, logger, device_capabilities)); |
182 } | 185 } |
183 | 186 |
184 TestCastSocket(const net::IPEndPoint& ip_endpoint, | 187 TestCastSocket(const net::IPEndPoint& ip_endpoint, |
185 ChannelAuthType channel_auth, | 188 ChannelAuthType channel_auth, |
186 int64_t timeout_ms, | 189 int64_t timeout_ms, |
187 Logger* logger, | 190 Logger* logger, |
188 uint64_t device_capabilities) | 191 uint64_t device_capabilities) |
189 : TestCastSocket(ip_endpoint, | 192 : TestCastSocket(ip_endpoint, |
190 channel_auth, | 193 channel_auth, |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 socket_ = TestCastSocket::CreateSecure(logger_); | 368 socket_ = TestCastSocket::CreateSecure(logger_); |
366 } | 369 } |
367 | 370 |
368 void HandleAuthHandshake() { | 371 void HandleAuthHandshake() { |
369 socket_->SetupMockTransport(); | 372 socket_->SetupMockTransport(); |
370 CastMessage challenge_proto = CreateAuthChallenge(); | 373 CastMessage challenge_proto = CreateAuthChallenge(); |
371 EXPECT_CALL(*socket_->GetMockTransport(), | 374 EXPECT_CALL(*socket_->GetMockTransport(), |
372 SendMessage(EqualsProto(challenge_proto), _)) | 375 SendMessage(EqualsProto(challenge_proto), _)) |
373 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); | 376 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
374 EXPECT_CALL(*socket_->GetMockTransport(), Start()); | 377 EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
375 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_NONE)); | 378 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); |
376 socket_->Connect(std::move(delegate_), | 379 socket_->Connect(std::move(delegate_), |
377 base::Bind(&CompleteHandler::OnConnectComplete, | 380 base::Bind(&CompleteHandler::OnConnectComplete, |
378 base::Unretained(&handler_))); | 381 base::Unretained(&handler_))); |
379 RunPendingTasks(); | 382 RunPendingTasks(); |
380 socket_->GetMockTransport()->current_delegate()->OnMessage( | 383 socket_->GetMockTransport()->current_delegate()->OnMessage( |
381 CreateAuthReply()); | 384 CreateAuthReply()); |
382 RunPendingTasks(); | 385 RunPendingTasks(); |
383 } | 386 } |
384 | 387 |
385 protected: | 388 protected: |
(...skipping 20 matching lines...) Expand all Loading... |
406 // - Challenge request is sent (async) | 409 // - Challenge request is sent (async) |
407 // - Challenge response is received (async) | 410 // - Challenge response is received (async) |
408 // - Credentials are verified successfuly | 411 // - Credentials are verified successfuly |
409 TEST_F(CastSocketTest, TestConnectFullSecureFlowAsync) { | 412 TEST_F(CastSocketTest, TestConnectFullSecureFlowAsync) { |
410 CreateCastSocketSecure(); | 413 CreateCastSocketSecure(); |
411 socket_->SetupTcpConnect(net::ASYNC, net::OK); | 414 socket_->SetupTcpConnect(net::ASYNC, net::OK); |
412 socket_->SetupSslConnect(net::ASYNC, net::OK); | 415 socket_->SetupSslConnect(net::ASYNC, net::OK); |
413 | 416 |
414 HandleAuthHandshake(); | 417 HandleAuthHandshake(); |
415 | 418 |
416 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state()); | 419 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
417 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); | 420 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
418 } | 421 } |
419 | 422 |
420 // Tests that the following connection flow works: | 423 // Tests that the following connection flow works: |
421 // - TCP connection succeeds (sync) | 424 // - TCP connection succeeds (sync) |
422 // - SSL connection succeeds (sync) | 425 // - SSL connection succeeds (sync) |
423 // - Cert is extracted successfully | 426 // - Cert is extracted successfully |
424 // - Challenge request is sent (sync) | 427 // - Challenge request is sent (sync) |
425 // - Challenge response is received (sync) | 428 // - Challenge response is received (sync) |
426 // - Credentials are verified successfuly | 429 // - Credentials are verified successfuly |
427 TEST_F(CastSocketTest, TestConnectFullSecureFlowSync) { | 430 TEST_F(CastSocketTest, TestConnectFullSecureFlowSync) { |
428 CreateCastSocketSecure(); | 431 CreateCastSocketSecure(); |
429 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 432 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
430 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); | 433 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); |
431 | 434 |
432 HandleAuthHandshake(); | 435 HandleAuthHandshake(); |
433 | 436 |
434 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state()); | 437 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
435 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); | 438 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
436 } | 439 } |
437 | 440 |
438 // Test that an AuthMessage with a mangled namespace triggers cancelation | 441 // Test that an AuthMessage with a mangled namespace triggers cancelation |
439 // of the connection event loop. | 442 // of the connection event loop. |
440 TEST_F(CastSocketTest, TestConnectAuthMessageCorrupted) { | 443 TEST_F(CastSocketTest, TestConnectAuthMessageCorrupted) { |
441 CreateCastSocketSecure(); | 444 CreateCastSocketSecure(); |
442 socket_->SetupMockTransport(); | 445 socket_->SetupMockTransport(); |
443 | 446 |
444 socket_->SetupTcpConnect(net::ASYNC, net::OK); | 447 socket_->SetupTcpConnect(net::ASYNC, net::OK); |
445 socket_->SetupSslConnect(net::ASYNC, net::OK); | 448 socket_->SetupSslConnect(net::ASYNC, net::OK); |
446 | 449 |
447 CastMessage challenge_proto = CreateAuthChallenge(); | 450 CastMessage challenge_proto = CreateAuthChallenge(); |
448 EXPECT_CALL(*socket_->GetMockTransport(), | 451 EXPECT_CALL(*socket_->GetMockTransport(), |
449 SendMessage(EqualsProto(challenge_proto), _)) | 452 SendMessage(EqualsProto(challenge_proto), _)) |
450 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); | 453 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
451 EXPECT_CALL(*socket_->GetMockTransport(), Start()); | 454 EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
452 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_TRANSPORT_ERROR)); | 455 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::TRANSPORT_ERROR)); |
453 socket_->Connect(std::move(delegate_), | 456 socket_->Connect(std::move(delegate_), |
454 base::Bind(&CompleteHandler::OnConnectComplete, | 457 base::Bind(&CompleteHandler::OnConnectComplete, |
455 base::Unretained(&handler_))); | 458 base::Unretained(&handler_))); |
456 RunPendingTasks(); | 459 RunPendingTasks(); |
457 CastMessage mangled_auth_reply = CreateAuthReply(); | 460 CastMessage mangled_auth_reply = CreateAuthReply(); |
458 mangled_auth_reply.set_namespace_("BOGUS_NAMESPACE"); | 461 mangled_auth_reply.set_namespace_("BOGUS_NAMESPACE"); |
459 | 462 |
460 socket_->GetMockTransport()->current_delegate()->OnMessage( | 463 socket_->GetMockTransport()->current_delegate()->OnMessage( |
461 mangled_auth_reply); | 464 mangled_auth_reply); |
462 RunPendingTasks(); | 465 RunPendingTasks(); |
463 | 466 |
464 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 467 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
465 EXPECT_EQ(cast_channel::CHANNEL_ERROR_TRANSPORT_ERROR, | 468 EXPECT_EQ(ChannelError::TRANSPORT_ERROR, socket_->error_state()); |
466 socket_->error_state()); | |
467 | 469 |
468 // Verifies that the CastSocket's resources were torn down during channel | 470 // Verifies that the CastSocket's resources were torn down during channel |
469 // close. (see http://crbug.com/504078) | 471 // close. (see http://crbug.com/504078) |
470 EXPECT_EQ(nullptr, socket_->transport()); | 472 EXPECT_EQ(nullptr, socket_->transport()); |
471 } | 473 } |
472 | 474 |
473 // Test connection error - TCP connect fails (async) | 475 // Test connection error - TCP connect fails (async) |
474 TEST_F(CastSocketTest, TestConnectTcpConnectErrorAsync) { | 476 TEST_F(CastSocketTest, TestConnectTcpConnectErrorAsync) { |
475 CreateCastSocketSecure(); | 477 CreateCastSocketSecure(); |
476 | 478 |
477 socket_->SetupTcpConnect(net::ASYNC, net::ERR_FAILED); | 479 socket_->SetupTcpConnect(net::ASYNC, net::ERR_FAILED); |
478 | 480 |
479 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_CONNECT_ERROR)); | 481 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR)); |
480 socket_->Connect(std::move(delegate_), | 482 socket_->Connect(std::move(delegate_), |
481 base::Bind(&CompleteHandler::OnConnectComplete, | 483 base::Bind(&CompleteHandler::OnConnectComplete, |
482 base::Unretained(&handler_))); | 484 base::Unretained(&handler_))); |
483 RunPendingTasks(); | 485 RunPendingTasks(); |
484 | 486 |
485 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 487 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
486 EXPECT_EQ(cast_channel::CHANNEL_ERROR_CONNECT_ERROR, socket_->error_state()); | 488 EXPECT_EQ(ChannelError::CONNECT_ERROR, socket_->error_state()); |
487 } | 489 } |
488 | 490 |
489 // Test connection error - TCP connect fails (sync) | 491 // Test connection error - TCP connect fails (sync) |
490 TEST_F(CastSocketTest, TestConnectTcpConnectErrorSync) { | 492 TEST_F(CastSocketTest, TestConnectTcpConnectErrorSync) { |
491 CreateCastSocketSecure(); | 493 CreateCastSocketSecure(); |
492 | 494 |
493 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_FAILED); | 495 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_FAILED); |
494 | 496 |
495 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_CONNECT_ERROR)); | 497 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR)); |
496 socket_->Connect(std::move(delegate_), | 498 socket_->Connect(std::move(delegate_), |
497 base::Bind(&CompleteHandler::OnConnectComplete, | 499 base::Bind(&CompleteHandler::OnConnectComplete, |
498 base::Unretained(&handler_))); | 500 base::Unretained(&handler_))); |
499 RunPendingTasks(); | 501 RunPendingTasks(); |
500 | 502 |
501 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 503 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
502 EXPECT_EQ(cast_channel::CHANNEL_ERROR_CONNECT_ERROR, socket_->error_state()); | 504 EXPECT_EQ(ChannelError::CONNECT_ERROR, socket_->error_state()); |
503 } | 505 } |
504 | 506 |
505 // Test connection error - timeout | 507 // Test connection error - timeout |
506 TEST_F(CastSocketTest, TestConnectTcpTimeoutError) { | 508 TEST_F(CastSocketTest, TestConnectTcpTimeoutError) { |
507 CreateCastSocketSecure(); | 509 CreateCastSocketSecure(); |
508 socket_->SetupTcpConnectUnresponsive(); | 510 socket_->SetupTcpConnectUnresponsive(); |
509 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_CONNECT_TIMEOUT)); | 511 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
510 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_CONNECT_TIMEOUT)); | 512 EXPECT_CALL(*delegate_, OnError(ChannelError::CONNECT_TIMEOUT)); |
511 socket_->Connect(std::move(delegate_), | 513 socket_->Connect(std::move(delegate_), |
512 base::Bind(&CompleteHandler::OnConnectComplete, | 514 base::Bind(&CompleteHandler::OnConnectComplete, |
513 base::Unretained(&handler_))); | 515 base::Unretained(&handler_))); |
514 RunPendingTasks(); | 516 RunPendingTasks(); |
515 | 517 |
516 EXPECT_EQ(cast_channel::READY_STATE_CONNECTING, socket_->ready_state()); | 518 EXPECT_EQ(ReadyState::CONNECTING, socket_->ready_state()); |
517 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); | 519 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
518 socket_->TriggerTimeout(); | 520 socket_->TriggerTimeout(); |
519 RunPendingTasks(); | 521 RunPendingTasks(); |
520 | 522 |
521 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 523 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
522 EXPECT_EQ(cast_channel::CHANNEL_ERROR_CONNECT_TIMEOUT, | 524 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); |
523 socket_->error_state()); | |
524 } | 525 } |
525 | 526 |
526 // Test connection error - TCP socket returns timeout | 527 // Test connection error - TCP socket returns timeout |
527 TEST_F(CastSocketTest, TestConnectTcpSocketTimeoutError) { | 528 TEST_F(CastSocketTest, TestConnectTcpSocketTimeoutError) { |
528 CreateCastSocketSecure(); | 529 CreateCastSocketSecure(); |
529 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); | 530 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); |
530 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_CONNECT_TIMEOUT)); | 531 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
531 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_CONNECT_TIMEOUT)); | 532 EXPECT_CALL(*delegate_, OnError(ChannelError::CONNECT_TIMEOUT)); |
532 socket_->Connect(std::move(delegate_), | 533 socket_->Connect(std::move(delegate_), |
533 base::Bind(&CompleteHandler::OnConnectComplete, | 534 base::Bind(&CompleteHandler::OnConnectComplete, |
534 base::Unretained(&handler_))); | 535 base::Unretained(&handler_))); |
535 RunPendingTasks(); | 536 RunPendingTasks(); |
536 | 537 |
537 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 538 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
538 EXPECT_EQ(cast_channel::CHANNEL_ERROR_CONNECT_TIMEOUT, | 539 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); |
539 socket_->error_state()); | |
540 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT, | 540 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT, |
541 logger_->GetLastErrors(socket_->id()).net_return_value); | 541 logger_->GetLastErrors(socket_->id()).net_return_value); |
542 } | 542 } |
543 | 543 |
544 // Test connection error - SSL connect fails (async) | 544 // Test connection error - SSL connect fails (async) |
545 TEST_F(CastSocketTest, TestConnectSslConnectErrorAsync) { | 545 TEST_F(CastSocketTest, TestConnectSslConnectErrorAsync) { |
546 CreateCastSocketSecure(); | 546 CreateCastSocketSecure(); |
547 | 547 |
548 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 548 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
549 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); | 549 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); |
550 | 550 |
551 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_AUTHENTICATION_ERROR)); | 551 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); |
552 socket_->Connect(std::move(delegate_), | 552 socket_->Connect(std::move(delegate_), |
553 base::Bind(&CompleteHandler::OnConnectComplete, | 553 base::Bind(&CompleteHandler::OnConnectComplete, |
554 base::Unretained(&handler_))); | 554 base::Unretained(&handler_))); |
555 RunPendingTasks(); | 555 RunPendingTasks(); |
556 | 556 |
557 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 557 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
558 EXPECT_EQ(cast_channel::CHANNEL_ERROR_AUTHENTICATION_ERROR, | 558 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state()); |
559 socket_->error_state()); | |
560 } | 559 } |
561 | 560 |
562 // Test connection error - SSL connect fails (sync) | 561 // Test connection error - SSL connect fails (sync) |
563 TEST_F(CastSocketTest, TestConnectSslConnectErrorSync) { | 562 TEST_F(CastSocketTest, TestConnectSslConnectErrorSync) { |
564 CreateCastSocketSecure(); | 563 CreateCastSocketSecure(); |
565 | 564 |
566 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 565 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
567 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); | 566 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); |
568 | 567 |
569 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_AUTHENTICATION_ERROR)); | 568 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); |
570 socket_->Connect(std::move(delegate_), | 569 socket_->Connect(std::move(delegate_), |
571 base::Bind(&CompleteHandler::OnConnectComplete, | 570 base::Bind(&CompleteHandler::OnConnectComplete, |
572 base::Unretained(&handler_))); | 571 base::Unretained(&handler_))); |
573 RunPendingTasks(); | 572 RunPendingTasks(); |
574 | 573 |
575 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 574 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
576 EXPECT_EQ(cast_channel::CHANNEL_ERROR_AUTHENTICATION_ERROR, | 575 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state()); |
577 socket_->error_state()); | |
578 EXPECT_EQ(net::ERR_FAILED, | 576 EXPECT_EQ(net::ERR_FAILED, |
579 logger_->GetLastErrors(socket_->id()).net_return_value); | 577 logger_->GetLastErrors(socket_->id()).net_return_value); |
580 } | 578 } |
581 | 579 |
582 // Test connection error - SSL connect times out (sync) | 580 // Test connection error - SSL connect times out (sync) |
583 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutSync) { | 581 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutSync) { |
584 CreateCastSocketSecure(); | 582 CreateCastSocketSecure(); |
585 | 583 |
586 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 584 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
587 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); | 585 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); |
588 | 586 |
589 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_CONNECT_TIMEOUT)); | 587 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
590 socket_->Connect(std::move(delegate_), | 588 socket_->Connect(std::move(delegate_), |
591 base::Bind(&CompleteHandler::OnConnectComplete, | 589 base::Bind(&CompleteHandler::OnConnectComplete, |
592 base::Unretained(&handler_))); | 590 base::Unretained(&handler_))); |
593 RunPendingTasks(); | 591 RunPendingTasks(); |
594 | 592 |
595 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 593 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
596 EXPECT_EQ(cast_channel::CHANNEL_ERROR_CONNECT_TIMEOUT, | 594 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); |
597 socket_->error_state()); | |
598 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT, | 595 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT, |
599 logger_->GetLastErrors(socket_->id()).net_return_value); | 596 logger_->GetLastErrors(socket_->id()).net_return_value); |
600 } | 597 } |
601 | 598 |
602 // Test connection error - SSL connect times out (async) | 599 // Test connection error - SSL connect times out (async) |
603 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutAsync) { | 600 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutAsync) { |
604 CreateCastSocketSecure(); | 601 CreateCastSocketSecure(); |
605 | 602 |
606 socket_->SetupTcpConnect(net::ASYNC, net::OK); | 603 socket_->SetupTcpConnect(net::ASYNC, net::OK); |
607 socket_->SetupSslConnect(net::ASYNC, net::ERR_CONNECTION_TIMED_OUT); | 604 socket_->SetupSslConnect(net::ASYNC, net::ERR_CONNECTION_TIMED_OUT); |
608 | 605 |
609 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_CONNECT_TIMEOUT)); | 606 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); |
610 socket_->Connect(std::move(delegate_), | 607 socket_->Connect(std::move(delegate_), |
611 base::Bind(&CompleteHandler::OnConnectComplete, | 608 base::Bind(&CompleteHandler::OnConnectComplete, |
612 base::Unretained(&handler_))); | 609 base::Unretained(&handler_))); |
613 RunPendingTasks(); | 610 RunPendingTasks(); |
614 | 611 |
615 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 612 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
616 EXPECT_EQ(cast_channel::CHANNEL_ERROR_CONNECT_TIMEOUT, | 613 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); |
617 socket_->error_state()); | |
618 } | 614 } |
619 | 615 |
620 // Test connection error - challenge send fails | 616 // Test connection error - challenge send fails |
621 TEST_F(CastSocketTest, TestConnectChallengeSendError) { | 617 TEST_F(CastSocketTest, TestConnectChallengeSendError) { |
622 CreateCastSocketSecure(); | 618 CreateCastSocketSecure(); |
623 socket_->SetupMockTransport(); | 619 socket_->SetupMockTransport(); |
624 | 620 |
625 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 621 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
626 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); | 622 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); |
627 EXPECT_CALL(*socket_->GetMockTransport(), | 623 EXPECT_CALL(*socket_->GetMockTransport(), |
628 SendMessage(EqualsProto(CreateAuthChallenge()), _)) | 624 SendMessage(EqualsProto(CreateAuthChallenge()), _)) |
629 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET)); | 625 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET)); |
630 | 626 |
631 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_SOCKET_ERROR)); | 627 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR)); |
632 socket_->Connect(std::move(delegate_), | 628 socket_->Connect(std::move(delegate_), |
633 base::Bind(&CompleteHandler::OnConnectComplete, | 629 base::Bind(&CompleteHandler::OnConnectComplete, |
634 base::Unretained(&handler_))); | 630 base::Unretained(&handler_))); |
635 RunPendingTasks(); | 631 RunPendingTasks(); |
636 | 632 |
637 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 633 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
638 EXPECT_EQ(cast_channel::CHANNEL_ERROR_SOCKET_ERROR, socket_->error_state()); | 634 EXPECT_EQ(ChannelError::CAST_SOCKET_ERROR, socket_->error_state()); |
639 } | 635 } |
640 | 636 |
641 // Test connection error - connection is destroyed after the challenge is | 637 // Test connection error - connection is destroyed after the challenge is |
642 // sent, with the async result still lurking in the task queue. | 638 // sent, with the async result still lurking in the task queue. |
643 TEST_F(CastSocketTest, TestConnectDestroyedAfterChallengeSent) { | 639 TEST_F(CastSocketTest, TestConnectDestroyedAfterChallengeSent) { |
644 CreateCastSocketSecure(); | 640 CreateCastSocketSecure(); |
645 socket_->SetupMockTransport(); | 641 socket_->SetupMockTransport(); |
646 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 642 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
647 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); | 643 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); |
648 EXPECT_CALL(*socket_->GetMockTransport(), | 644 EXPECT_CALL(*socket_->GetMockTransport(), |
(...skipping 10 matching lines...) Expand all Loading... |
659 TEST_F(CastSocketTest, TestConnectChallengeReplyReceiveError) { | 655 TEST_F(CastSocketTest, TestConnectChallengeReplyReceiveError) { |
660 CreateCastSocketSecure(); | 656 CreateCastSocketSecure(); |
661 socket_->SetupMockTransport(); | 657 socket_->SetupMockTransport(); |
662 | 658 |
663 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 659 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
664 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); | 660 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); |
665 EXPECT_CALL(*socket_->GetMockTransport(), | 661 EXPECT_CALL(*socket_->GetMockTransport(), |
666 SendMessage(EqualsProto(CreateAuthChallenge()), _)) | 662 SendMessage(EqualsProto(CreateAuthChallenge()), _)) |
667 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); | 663 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
668 socket_->AddReadResult(net::SYNCHRONOUS, net::ERR_FAILED); | 664 socket_->AddReadResult(net::SYNCHRONOUS, net::ERR_FAILED); |
669 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 665 EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); |
670 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_SOCKET_ERROR)); | 666 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR)); |
671 EXPECT_CALL(*socket_->GetMockTransport(), Start()); | 667 EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
672 socket_->Connect(std::move(delegate_), | 668 socket_->Connect(std::move(delegate_), |
673 base::Bind(&CompleteHandler::OnConnectComplete, | 669 base::Bind(&CompleteHandler::OnConnectComplete, |
674 base::Unretained(&handler_))); | 670 base::Unretained(&handler_))); |
675 RunPendingTasks(); | 671 RunPendingTasks(); |
676 socket_->GetMockTransport()->current_delegate()->OnError( | 672 socket_->GetMockTransport()->current_delegate()->OnError( |
677 CHANNEL_ERROR_SOCKET_ERROR); | 673 ChannelError::CAST_SOCKET_ERROR); |
678 RunPendingTasks(); | 674 RunPendingTasks(); |
679 | 675 |
680 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 676 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
681 EXPECT_EQ(cast_channel::CHANNEL_ERROR_SOCKET_ERROR, socket_->error_state()); | 677 EXPECT_EQ(ChannelError::CAST_SOCKET_ERROR, socket_->error_state()); |
682 } | 678 } |
683 | 679 |
684 TEST_F(CastSocketTest, TestConnectChallengeVerificationFails) { | 680 TEST_F(CastSocketTest, TestConnectChallengeVerificationFails) { |
685 CreateCastSocketSecure(); | 681 CreateCastSocketSecure(); |
686 socket_->SetupMockTransport(); | 682 socket_->SetupMockTransport(); |
687 socket_->SetupTcpConnect(net::ASYNC, net::OK); | 683 socket_->SetupTcpConnect(net::ASYNC, net::OK); |
688 socket_->SetupSslConnect(net::ASYNC, net::OK); | 684 socket_->SetupSslConnect(net::ASYNC, net::OK); |
689 socket_->SetVerifyChallengeResult(false); | 685 socket_->SetVerifyChallengeResult(false); |
690 | 686 |
691 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_AUTHENTICATION_ERROR)); | 687 EXPECT_CALL(*delegate_, OnError(ChannelError::AUTHENTICATION_ERROR)); |
692 CastMessage challenge_proto = CreateAuthChallenge(); | 688 CastMessage challenge_proto = CreateAuthChallenge(); |
693 EXPECT_CALL(*socket_->GetMockTransport(), | 689 EXPECT_CALL(*socket_->GetMockTransport(), |
694 SendMessage(EqualsProto(challenge_proto), _)) | 690 SendMessage(EqualsProto(challenge_proto), _)) |
695 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); | 691 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); |
696 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_AUTHENTICATION_ERROR)); | 692 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); |
697 EXPECT_CALL(*socket_->GetMockTransport(), Start()); | 693 EXPECT_CALL(*socket_->GetMockTransport(), Start()); |
698 socket_->Connect(std::move(delegate_), | 694 socket_->Connect(std::move(delegate_), |
699 base::Bind(&CompleteHandler::OnConnectComplete, | 695 base::Bind(&CompleteHandler::OnConnectComplete, |
700 base::Unretained(&handler_))); | 696 base::Unretained(&handler_))); |
701 RunPendingTasks(); | 697 RunPendingTasks(); |
702 socket_->GetMockTransport()->current_delegate()->OnMessage(CreateAuthReply()); | 698 socket_->GetMockTransport()->current_delegate()->OnMessage(CreateAuthReply()); |
703 RunPendingTasks(); | 699 RunPendingTasks(); |
704 | 700 |
705 EXPECT_EQ(cast_channel::READY_STATE_CLOSED, socket_->ready_state()); | 701 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); |
706 EXPECT_EQ(cast_channel::CHANNEL_ERROR_AUTHENTICATION_ERROR, | 702 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state()); |
707 socket_->error_state()); | |
708 } | 703 } |
709 | 704 |
710 // Sends message data through an actual non-mocked CastTransport object, | 705 // Sends message data through an actual non-mocked CastTransport object, |
711 // testing the two components in integration. | 706 // testing the two components in integration. |
712 TEST_F(CastSocketTest, TestConnectEndToEndWithRealTransportAsync) { | 707 TEST_F(CastSocketTest, TestConnectEndToEndWithRealTransportAsync) { |
713 CreateCastSocketSecure(); | 708 CreateCastSocketSecure(); |
714 socket_->SetupTcpConnect(net::ASYNC, net::OK); | 709 socket_->SetupTcpConnect(net::ASYNC, net::OK); |
715 socket_->SetupSslConnect(net::ASYNC, net::OK); | 710 socket_->SetupSslConnect(net::ASYNC, net::OK); |
716 | 711 |
717 // Set low-level auth challenge expectations. | 712 // Set low-level auth challenge expectations. |
718 CastMessage challenge = CreateAuthChallenge(); | 713 CastMessage challenge = CreateAuthChallenge(); |
719 std::string challenge_str; | 714 std::string challenge_str; |
720 EXPECT_TRUE(MessageFramer::Serialize(challenge, &challenge_str)); | 715 EXPECT_TRUE(MessageFramer::Serialize(challenge, &challenge_str)); |
721 socket_->AddWriteResultForData(net::ASYNC, challenge_str); | 716 socket_->AddWriteResultForData(net::ASYNC, challenge_str); |
722 | 717 |
723 // Set low-level auth reply expectations. | 718 // Set low-level auth reply expectations. |
724 CastMessage reply = CreateAuthReply(); | 719 CastMessage reply = CreateAuthReply(); |
725 std::string reply_str; | 720 std::string reply_str; |
726 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str)); | 721 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str)); |
727 socket_->AddReadResultForData(net::ASYNC, reply_str); | 722 socket_->AddReadResultForData(net::ASYNC, reply_str); |
728 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING); | 723 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING); |
729 | 724 |
730 CastMessage test_message = CreateTestMessage(); | 725 CastMessage test_message = CreateTestMessage(); |
731 std::string test_message_str; | 726 std::string test_message_str; |
732 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str)); | 727 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str)); |
733 socket_->AddWriteResultForData(net::ASYNC, test_message_str); | 728 socket_->AddWriteResultForData(net::ASYNC, test_message_str); |
734 | 729 |
735 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_NONE)); | 730 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); |
736 socket_->Connect(std::move(delegate_), | 731 socket_->Connect(std::move(delegate_), |
737 base::Bind(&CompleteHandler::OnConnectComplete, | 732 base::Bind(&CompleteHandler::OnConnectComplete, |
738 base::Unretained(&handler_))); | 733 base::Unretained(&handler_))); |
739 RunPendingTasks(); | 734 RunPendingTasks(); |
740 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state()); | 735 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
741 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); | 736 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
742 | 737 |
743 // Send the test message through a real transport object. | 738 // Send the test message through a real transport object. |
744 EXPECT_CALL(handler_, OnWriteComplete(net::OK)); | 739 EXPECT_CALL(handler_, OnWriteComplete(net::OK)); |
745 socket_->transport()->SendMessage( | 740 socket_->transport()->SendMessage( |
746 test_message, base::Bind(&CompleteHandler::OnWriteComplete, | 741 test_message, base::Bind(&CompleteHandler::OnWriteComplete, |
747 base::Unretained(&handler_))); | 742 base::Unretained(&handler_))); |
748 RunPendingTasks(); | 743 RunPendingTasks(); |
749 | 744 |
750 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state()); | 745 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
751 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); | 746 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
752 } | 747 } |
753 | 748 |
754 // Same as TestConnectEndToEndWithRealTransportAsync, except synchronous. | 749 // Same as TestConnectEndToEndWithRealTransportAsync, except synchronous. |
755 TEST_F(CastSocketTest, TestConnectEndToEndWithRealTransportSync) { | 750 TEST_F(CastSocketTest, TestConnectEndToEndWithRealTransportSync) { |
756 CreateCastSocketSecure(); | 751 CreateCastSocketSecure(); |
757 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); | 752 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); |
758 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); | 753 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); |
759 | 754 |
760 // Set low-level auth challenge expectations. | 755 // Set low-level auth challenge expectations. |
761 CastMessage challenge = CreateAuthChallenge(); | 756 CastMessage challenge = CreateAuthChallenge(); |
762 std::string challenge_str; | 757 std::string challenge_str; |
763 EXPECT_TRUE(MessageFramer::Serialize(challenge, &challenge_str)); | 758 EXPECT_TRUE(MessageFramer::Serialize(challenge, &challenge_str)); |
764 socket_->AddWriteResultForData(net::SYNCHRONOUS, challenge_str); | 759 socket_->AddWriteResultForData(net::SYNCHRONOUS, challenge_str); |
765 | 760 |
766 // Set low-level auth reply expectations. | 761 // Set low-level auth reply expectations. |
767 CastMessage reply = CreateAuthReply(); | 762 CastMessage reply = CreateAuthReply(); |
768 std::string reply_str; | 763 std::string reply_str; |
769 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str)); | 764 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str)); |
770 socket_->AddReadResultForData(net::SYNCHRONOUS, reply_str); | 765 socket_->AddReadResultForData(net::SYNCHRONOUS, reply_str); |
771 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING); | 766 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING); |
772 | 767 |
773 CastMessage test_message = CreateTestMessage(); | 768 CastMessage test_message = CreateTestMessage(); |
774 std::string test_message_str; | 769 std::string test_message_str; |
775 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str)); | 770 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str)); |
776 socket_->AddWriteResultForData(net::SYNCHRONOUS, test_message_str); | 771 socket_->AddWriteResultForData(net::SYNCHRONOUS, test_message_str); |
777 | 772 |
778 EXPECT_CALL(handler_, OnConnectComplete(CHANNEL_ERROR_NONE)); | 773 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); |
779 socket_->Connect(std::move(delegate_), | 774 socket_->Connect(std::move(delegate_), |
780 base::Bind(&CompleteHandler::OnConnectComplete, | 775 base::Bind(&CompleteHandler::OnConnectComplete, |
781 base::Unretained(&handler_))); | 776 base::Unretained(&handler_))); |
782 RunPendingTasks(); | 777 RunPendingTasks(); |
783 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state()); | 778 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
784 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); | 779 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
785 | 780 |
786 // Send the test message through a real transport object. | 781 // Send the test message through a real transport object. |
787 EXPECT_CALL(handler_, OnWriteComplete(net::OK)); | 782 EXPECT_CALL(handler_, OnWriteComplete(net::OK)); |
788 socket_->transport()->SendMessage( | 783 socket_->transport()->SendMessage( |
789 test_message, base::Bind(&CompleteHandler::OnWriteComplete, | 784 test_message, base::Bind(&CompleteHandler::OnWriteComplete, |
790 base::Unretained(&handler_))); | 785 base::Unretained(&handler_))); |
791 RunPendingTasks(); | 786 RunPendingTasks(); |
792 | 787 |
793 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state()); | 788 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); |
794 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); | 789 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); |
795 } | 790 } |
796 | 791 |
797 } // namespace cast_channel | 792 } // namespace cast_channel |
798 } // namespace api | 793 } // namespace api |
799 } // namespace extensions | 794 } // namespace extensions |
OLD | NEW |