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

Side by Side Diff: components/cast_channel/cast_socket_unittest.cc

Issue 2942993003: [cast_channel] Make CastMessageHandler a CastSocket::Observer instead of CastTransport::Delegate (Closed)
Patch Set: resolve code review comments from Mark Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 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 "components/cast_channel/cast_socket.h" 5 #include "components/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 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 // If true, makes TCP connection process stall. For timeout testing. 324 // If true, makes TCP connection process stall. For timeout testing.
325 bool tcp_unresponsive_; 325 bool tcp_unresponsive_;
326 std::unique_ptr<base::MockTimer> mock_timer_; 326 std::unique_ptr<base::MockTimer> mock_timer_;
327 MockCastTransport* mock_transport_; 327 MockCastTransport* mock_transport_;
328 328
329 DISALLOW_COPY_AND_ASSIGN(TestCastSocket); 329 DISALLOW_COPY_AND_ASSIGN(TestCastSocket);
330 }; 330 };
331 331
332 class CastSocketTest : public testing::Test { 332 class CastSocketTest : public testing::Test {
333 public: 333 public:
334 CastSocketTest() : logger_(new Logger()), delegate_(new MockDelegate) {} 334 CastSocketTest()
335 : logger_(new Logger()), observer_(new MockCastSocketObserver()) {}
335 ~CastSocketTest() override {} 336 ~CastSocketTest() override {}
336 337
337 void SetUp() override { EXPECT_CALL(*delegate_, OnMessage(_)).Times(0); } 338 void SetUp() override { EXPECT_CALL(*observer_, OnMessage(_, _)).Times(0); }
338 339
339 void TearDown() override { 340 void TearDown() override {
340 if (socket_.get()) { 341 if (socket_.get()) {
341 EXPECT_CALL(handler_, OnCloseComplete(net::OK)); 342 EXPECT_CALL(handler_, OnCloseComplete(net::OK));
342 socket_->Close(base::Bind(&CompleteHandler::OnCloseComplete, 343 socket_->Close(base::Bind(&CompleteHandler::OnCloseComplete,
343 base::Unretained(&handler_))); 344 base::Unretained(&handler_)));
344 } 345 }
345 } 346 }
346 347
347 void CreateCastSocketSecure() { 348 void CreateCastSocketSecure() {
348 socket_ = TestCastSocket::CreateSecure(logger_); 349 socket_ = TestCastSocket::CreateSecure(logger_);
349 } 350 }
350 351
351 void HandleAuthHandshake() { 352 void HandleAuthHandshake() {
352 socket_->SetupMockTransport(); 353 socket_->SetupMockTransport();
353 CastMessage challenge_proto = CreateAuthChallenge(); 354 CastMessage challenge_proto = CreateAuthChallenge();
354 EXPECT_CALL(*socket_->GetMockTransport(), 355 EXPECT_CALL(*socket_->GetMockTransport(),
355 SendMessage(EqualsProto(challenge_proto), _)) 356 SendMessage(EqualsProto(challenge_proto), _))
356 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); 357 .WillOnce(PostCompletionCallbackTask<1>(net::OK));
357 EXPECT_CALL(*socket_->GetMockTransport(), Start()); 358 EXPECT_CALL(*socket_->GetMockTransport(), Start());
358 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); 359 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE));
359 socket_->Connect(std::move(delegate_), 360 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
360 base::Bind(&CompleteHandler::OnConnectComplete,
361 base::Unretained(&handler_))); 361 base::Unretained(&handler_)));
362 RunPendingTasks(); 362 RunPendingTasks();
363 socket_->GetMockTransport()->current_delegate()->OnMessage( 363 socket_->GetMockTransport()->current_delegate()->OnMessage(
364 CreateAuthReply()); 364 CreateAuthReply());
365 RunPendingTasks(); 365 RunPendingTasks();
366 } 366 }
367 367
368 protected: 368 protected:
369 // Runs all pending tasks in the message loop. 369 // Runs all pending tasks in the message loop.
370 void RunPendingTasks() { 370 void RunPendingTasks() {
371 base::RunLoop run_loop; 371 base::RunLoop run_loop;
372 run_loop.RunUntilIdle(); 372 run_loop.RunUntilIdle();
373 } 373 }
374 374
375 base::MessageLoop message_loop_; 375 base::MessageLoop message_loop_;
376 Logger* logger_; 376 Logger* logger_;
377 std::unique_ptr<TestCastSocket> socket_; 377 std::unique_ptr<TestCastSocket> socket_;
378 CompleteHandler handler_; 378 CompleteHandler handler_;
379 std::unique_ptr<MockDelegate> delegate_; 379 std::unique_ptr<MockCastSocketObserver> observer_;
380 380
381 private: 381 private:
382 DISALLOW_COPY_AND_ASSIGN(CastSocketTest); 382 DISALLOW_COPY_AND_ASSIGN(CastSocketTest);
383 }; 383 };
384 384
385 // Tests that the following connection flow works: 385 // Tests that the following connection flow works:
386 // - TCP connection succeeds (async) 386 // - TCP connection succeeds (async)
387 // - SSL connection succeeds (async) 387 // - SSL connection succeeds (async)
388 // - Cert is extracted successfully 388 // - Cert is extracted successfully
389 // - Challenge request is sent (async) 389 // - Challenge request is sent (async)
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 426
427 socket_->SetupTcpConnect(net::ASYNC, net::OK); 427 socket_->SetupTcpConnect(net::ASYNC, net::OK);
428 socket_->SetupSslConnect(net::ASYNC, net::OK); 428 socket_->SetupSslConnect(net::ASYNC, net::OK);
429 429
430 CastMessage challenge_proto = CreateAuthChallenge(); 430 CastMessage challenge_proto = CreateAuthChallenge();
431 EXPECT_CALL(*socket_->GetMockTransport(), 431 EXPECT_CALL(*socket_->GetMockTransport(),
432 SendMessage(EqualsProto(challenge_proto), _)) 432 SendMessage(EqualsProto(challenge_proto), _))
433 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); 433 .WillOnce(PostCompletionCallbackTask<1>(net::OK));
434 EXPECT_CALL(*socket_->GetMockTransport(), Start()); 434 EXPECT_CALL(*socket_->GetMockTransport(), Start());
435 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::TRANSPORT_ERROR)); 435 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::TRANSPORT_ERROR));
436 socket_->Connect(std::move(delegate_), 436 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
437 base::Bind(&CompleteHandler::OnConnectComplete,
438 base::Unretained(&handler_))); 437 base::Unretained(&handler_)));
439 RunPendingTasks(); 438 RunPendingTasks();
440 CastMessage mangled_auth_reply = CreateAuthReply(); 439 CastMessage mangled_auth_reply = CreateAuthReply();
441 mangled_auth_reply.set_namespace_("BOGUS_NAMESPACE"); 440 mangled_auth_reply.set_namespace_("BOGUS_NAMESPACE");
442 441
443 socket_->GetMockTransport()->current_delegate()->OnMessage( 442 socket_->GetMockTransport()->current_delegate()->OnMessage(
444 mangled_auth_reply); 443 mangled_auth_reply);
445 RunPendingTasks(); 444 RunPendingTasks();
446 445
447 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 446 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
448 EXPECT_EQ(ChannelError::TRANSPORT_ERROR, socket_->error_state()); 447 EXPECT_EQ(ChannelError::TRANSPORT_ERROR, socket_->error_state());
449 448
450 // Verifies that the CastSocket's resources were torn down during channel 449 // Verifies that the CastSocket's resources were torn down during channel
451 // close. (see http://crbug.com/504078) 450 // close. (see http://crbug.com/504078)
452 EXPECT_EQ(nullptr, socket_->transport()); 451 EXPECT_EQ(nullptr, socket_->transport());
453 } 452 }
454 453
455 // Test connection error - TCP connect fails (async) 454 // Test connection error - TCP connect fails (async)
456 TEST_F(CastSocketTest, TestConnectTcpConnectErrorAsync) { 455 TEST_F(CastSocketTest, TestConnectTcpConnectErrorAsync) {
457 CreateCastSocketSecure(); 456 CreateCastSocketSecure();
458 457
459 socket_->SetupTcpConnect(net::ASYNC, net::ERR_FAILED); 458 socket_->SetupTcpConnect(net::ASYNC, net::ERR_FAILED);
460 459
461 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR)); 460 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR));
462 socket_->Connect(std::move(delegate_), 461 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
463 base::Bind(&CompleteHandler::OnConnectComplete,
464 base::Unretained(&handler_))); 462 base::Unretained(&handler_)));
465 RunPendingTasks(); 463 RunPendingTasks();
466 464
467 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 465 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
468 EXPECT_EQ(ChannelError::CONNECT_ERROR, socket_->error_state()); 466 EXPECT_EQ(ChannelError::CONNECT_ERROR, socket_->error_state());
469 } 467 }
470 468
471 // Test connection error - TCP connect fails (sync) 469 // Test connection error - TCP connect fails (sync)
472 TEST_F(CastSocketTest, TestConnectTcpConnectErrorSync) { 470 TEST_F(CastSocketTest, TestConnectTcpConnectErrorSync) {
473 CreateCastSocketSecure(); 471 CreateCastSocketSecure();
474 472
475 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_FAILED); 473 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_FAILED);
476 474
477 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR)); 475 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_ERROR));
478 socket_->Connect(std::move(delegate_), 476 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
479 base::Bind(&CompleteHandler::OnConnectComplete,
480 base::Unretained(&handler_))); 477 base::Unretained(&handler_)));
481 RunPendingTasks(); 478 RunPendingTasks();
482 479
483 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 480 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
484 EXPECT_EQ(ChannelError::CONNECT_ERROR, socket_->error_state()); 481 EXPECT_EQ(ChannelError::CONNECT_ERROR, socket_->error_state());
485 } 482 }
486 483
487 // Test connection error - timeout 484 // Test connection error - timeout
488 TEST_F(CastSocketTest, TestConnectTcpTimeoutError) { 485 TEST_F(CastSocketTest, TestConnectTcpTimeoutError) {
489 CreateCastSocketSecure(); 486 CreateCastSocketSecure();
490 socket_->SetupTcpConnectUnresponsive(); 487 socket_->SetupTcpConnectUnresponsive();
491 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); 488 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT));
492 EXPECT_CALL(*delegate_, OnError(ChannelError::CONNECT_TIMEOUT)); 489 EXPECT_CALL(*observer_, OnError(_, ChannelError::CONNECT_TIMEOUT));
493 socket_->Connect(std::move(delegate_), 490 socket_->AddObserver(observer_.get());
494 base::Bind(&CompleteHandler::OnConnectComplete, 491 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
495 base::Unretained(&handler_))); 492 base::Unretained(&handler_)));
496 RunPendingTasks(); 493 RunPendingTasks();
497 494
498 EXPECT_EQ(ReadyState::CONNECTING, socket_->ready_state()); 495 EXPECT_EQ(ReadyState::CONNECTING, socket_->ready_state());
499 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); 496 EXPECT_EQ(ChannelError::NONE, socket_->error_state());
500 socket_->TriggerTimeout(); 497 socket_->TriggerTimeout();
501 RunPendingTasks(); 498 RunPendingTasks();
502 499
503 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 500 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
504 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); 501 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state());
505 } 502 }
506 503
507 // Test connection error - TCP socket returns timeout 504 // Test connection error - TCP socket returns timeout
508 TEST_F(CastSocketTest, TestConnectTcpSocketTimeoutError) { 505 TEST_F(CastSocketTest, TestConnectTcpSocketTimeoutError) {
509 CreateCastSocketSecure(); 506 CreateCastSocketSecure();
510 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); 507 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT);
511 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); 508 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT));
512 EXPECT_CALL(*delegate_, OnError(ChannelError::CONNECT_TIMEOUT)); 509 EXPECT_CALL(*observer_, OnError(_, ChannelError::CONNECT_TIMEOUT));
513 socket_->Connect(std::move(delegate_), 510 socket_->AddObserver(observer_.get());
514 base::Bind(&CompleteHandler::OnConnectComplete, 511 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
515 base::Unretained(&handler_))); 512 base::Unretained(&handler_)));
516 RunPendingTasks(); 513 RunPendingTasks();
517 514
518 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 515 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
519 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); 516 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state());
520 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT, 517 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT,
521 logger_->GetLastError(socket_->id()).net_return_value); 518 logger_->GetLastError(socket_->id()).net_return_value);
522 } 519 }
523 520
524 // Test connection error - SSL connect fails (async) 521 // Test connection error - SSL connect fails (async)
525 TEST_F(CastSocketTest, TestConnectSslConnectErrorAsync) { 522 TEST_F(CastSocketTest, TestConnectSslConnectErrorAsync) {
526 CreateCastSocketSecure(); 523 CreateCastSocketSecure();
527 524
528 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); 525 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK);
529 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); 526 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED);
530 527
531 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); 528 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR));
532 socket_->Connect(std::move(delegate_), 529 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
533 base::Bind(&CompleteHandler::OnConnectComplete,
534 base::Unretained(&handler_))); 530 base::Unretained(&handler_)));
535 RunPendingTasks(); 531 RunPendingTasks();
536 532
537 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 533 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
538 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state()); 534 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state());
539 } 535 }
540 536
541 // Test connection error - SSL connect fails (sync) 537 // Test connection error - SSL connect fails (sync)
542 TEST_F(CastSocketTest, TestConnectSslConnectErrorSync) { 538 TEST_F(CastSocketTest, TestConnectSslConnectErrorSync) {
543 CreateCastSocketSecure(); 539 CreateCastSocketSecure();
544 540
545 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); 541 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK);
546 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED); 542 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_FAILED);
547 543
548 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); 544 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR));
549 socket_->Connect(std::move(delegate_), 545 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
550 base::Bind(&CompleteHandler::OnConnectComplete,
551 base::Unretained(&handler_))); 546 base::Unretained(&handler_)));
552 RunPendingTasks(); 547 RunPendingTasks();
553 548
554 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 549 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
555 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state()); 550 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state());
556 EXPECT_EQ(net::ERR_FAILED, 551 EXPECT_EQ(net::ERR_FAILED,
557 logger_->GetLastError(socket_->id()).net_return_value); 552 logger_->GetLastError(socket_->id()).net_return_value);
558 } 553 }
559 554
560 // Test connection error - SSL connect times out (sync) 555 // Test connection error - SSL connect times out (sync)
561 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutSync) { 556 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutSync) {
562 CreateCastSocketSecure(); 557 CreateCastSocketSecure();
563 558
564 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); 559 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK);
565 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT); 560 socket_->SetupSslConnect(net::SYNCHRONOUS, net::ERR_CONNECTION_TIMED_OUT);
566 561
567 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); 562 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT));
568 socket_->Connect(std::move(delegate_), 563 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
569 base::Bind(&CompleteHandler::OnConnectComplete,
570 base::Unretained(&handler_))); 564 base::Unretained(&handler_)));
571 RunPendingTasks(); 565 RunPendingTasks();
572 566
573 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 567 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
574 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); 568 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state());
575 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT, 569 EXPECT_EQ(net::ERR_CONNECTION_TIMED_OUT,
576 logger_->GetLastError(socket_->id()).net_return_value); 570 logger_->GetLastError(socket_->id()).net_return_value);
577 } 571 }
578 572
579 // Test connection error - SSL connect times out (async) 573 // Test connection error - SSL connect times out (async)
580 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutAsync) { 574 TEST_F(CastSocketTest, TestConnectSslConnectTimeoutAsync) {
581 CreateCastSocketSecure(); 575 CreateCastSocketSecure();
582 576
583 socket_->SetupTcpConnect(net::ASYNC, net::OK); 577 socket_->SetupTcpConnect(net::ASYNC, net::OK);
584 socket_->SetupSslConnect(net::ASYNC, net::ERR_CONNECTION_TIMED_OUT); 578 socket_->SetupSslConnect(net::ASYNC, net::ERR_CONNECTION_TIMED_OUT);
585 579
586 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT)); 580 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CONNECT_TIMEOUT));
587 socket_->Connect(std::move(delegate_), 581 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
588 base::Bind(&CompleteHandler::OnConnectComplete,
589 base::Unretained(&handler_))); 582 base::Unretained(&handler_)));
590 RunPendingTasks(); 583 RunPendingTasks();
591 584
592 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 585 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
593 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state()); 586 EXPECT_EQ(ChannelError::CONNECT_TIMEOUT, socket_->error_state());
594 } 587 }
595 588
596 // Test connection error - challenge send fails 589 // Test connection error - challenge send fails
597 TEST_F(CastSocketTest, TestConnectChallengeSendError) { 590 TEST_F(CastSocketTest, TestConnectChallengeSendError) {
598 CreateCastSocketSecure(); 591 CreateCastSocketSecure();
599 socket_->SetupMockTransport(); 592 socket_->SetupMockTransport();
600 593
601 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); 594 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK);
602 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); 595 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK);
603 EXPECT_CALL(*socket_->GetMockTransport(), 596 EXPECT_CALL(*socket_->GetMockTransport(),
604 SendMessage(EqualsProto(CreateAuthChallenge()), _)) 597 SendMessage(EqualsProto(CreateAuthChallenge()), _))
605 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET)); 598 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET));
606 599
607 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR)); 600 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR));
608 socket_->Connect(std::move(delegate_), 601 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
609 base::Bind(&CompleteHandler::OnConnectComplete,
610 base::Unretained(&handler_))); 602 base::Unretained(&handler_)));
611 RunPendingTasks(); 603 RunPendingTasks();
612 604
613 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 605 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
614 EXPECT_EQ(ChannelError::CAST_SOCKET_ERROR, socket_->error_state()); 606 EXPECT_EQ(ChannelError::CAST_SOCKET_ERROR, socket_->error_state());
615 } 607 }
616 608
617 // Test connection error - connection is destroyed after the challenge is 609 // Test connection error - connection is destroyed after the challenge is
618 // sent, with the async result still lurking in the task queue. 610 // sent, with the async result still lurking in the task queue.
619 TEST_F(CastSocketTest, TestConnectDestroyedAfterChallengeSent) { 611 TEST_F(CastSocketTest, TestConnectDestroyedAfterChallengeSent) {
620 CreateCastSocketSecure(); 612 CreateCastSocketSecure();
621 socket_->SetupMockTransport(); 613 socket_->SetupMockTransport();
622 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); 614 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK);
623 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); 615 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK);
624 EXPECT_CALL(*socket_->GetMockTransport(), 616 EXPECT_CALL(*socket_->GetMockTransport(),
625 SendMessage(EqualsProto(CreateAuthChallenge()), _)) 617 SendMessage(EqualsProto(CreateAuthChallenge()), _))
626 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET)); 618 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET));
627 socket_->Connect(std::move(delegate_), 619 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
628 base::Bind(&CompleteHandler::OnConnectComplete,
629 base::Unretained(&handler_))); 620 base::Unretained(&handler_)));
630 socket_.reset(); 621 socket_.reset();
631 RunPendingTasks(); 622 RunPendingTasks();
632 } 623 }
633 624
634 // Test connection error - challenge reply receive fails 625 // Test connection error - challenge reply receive fails
635 TEST_F(CastSocketTest, TestConnectChallengeReplyReceiveError) { 626 TEST_F(CastSocketTest, TestConnectChallengeReplyReceiveError) {
636 CreateCastSocketSecure(); 627 CreateCastSocketSecure();
637 socket_->SetupMockTransport(); 628 socket_->SetupMockTransport();
638 629
639 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK); 630 socket_->SetupTcpConnect(net::SYNCHRONOUS, net::OK);
640 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK); 631 socket_->SetupSslConnect(net::SYNCHRONOUS, net::OK);
641 EXPECT_CALL(*socket_->GetMockTransport(), 632 EXPECT_CALL(*socket_->GetMockTransport(),
642 SendMessage(EqualsProto(CreateAuthChallenge()), _)) 633 SendMessage(EqualsProto(CreateAuthChallenge()), _))
643 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); 634 .WillOnce(PostCompletionCallbackTask<1>(net::OK));
644 socket_->AddReadResult(net::SYNCHRONOUS, net::ERR_FAILED); 635 socket_->AddReadResult(net::SYNCHRONOUS, net::ERR_FAILED);
645 EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR)); 636 EXPECT_CALL(*observer_, OnError(_, ChannelError::CAST_SOCKET_ERROR));
646 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR)); 637 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::CAST_SOCKET_ERROR));
647 EXPECT_CALL(*socket_->GetMockTransport(), Start()); 638 EXPECT_CALL(*socket_->GetMockTransport(), Start());
648 socket_->Connect(std::move(delegate_), 639 socket_->AddObserver(observer_.get());
649 base::Bind(&CompleteHandler::OnConnectComplete, 640 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
650 base::Unretained(&handler_))); 641 base::Unretained(&handler_)));
651 RunPendingTasks(); 642 RunPendingTasks();
652 socket_->GetMockTransport()->current_delegate()->OnError( 643 socket_->GetMockTransport()->current_delegate()->OnError(
653 ChannelError::CAST_SOCKET_ERROR); 644 ChannelError::CAST_SOCKET_ERROR);
654 RunPendingTasks(); 645 RunPendingTasks();
655 646
656 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 647 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
657 EXPECT_EQ(ChannelError::CAST_SOCKET_ERROR, socket_->error_state()); 648 EXPECT_EQ(ChannelError::CAST_SOCKET_ERROR, socket_->error_state());
658 } 649 }
659 650
660 TEST_F(CastSocketTest, TestConnectChallengeVerificationFails) { 651 TEST_F(CastSocketTest, TestConnectChallengeVerificationFails) {
661 CreateCastSocketSecure(); 652 CreateCastSocketSecure();
662 socket_->SetupMockTransport(); 653 socket_->SetupMockTransport();
663 socket_->SetupTcpConnect(net::ASYNC, net::OK); 654 socket_->SetupTcpConnect(net::ASYNC, net::OK);
664 socket_->SetupSslConnect(net::ASYNC, net::OK); 655 socket_->SetupSslConnect(net::ASYNC, net::OK);
665 socket_->SetVerifyChallengeResult(false); 656 socket_->SetVerifyChallengeResult(false);
666 657
667 EXPECT_CALL(*delegate_, OnError(ChannelError::AUTHENTICATION_ERROR)); 658 EXPECT_CALL(*observer_, OnError(_, ChannelError::AUTHENTICATION_ERROR));
668 CastMessage challenge_proto = CreateAuthChallenge(); 659 CastMessage challenge_proto = CreateAuthChallenge();
669 EXPECT_CALL(*socket_->GetMockTransport(), 660 EXPECT_CALL(*socket_->GetMockTransport(),
670 SendMessage(EqualsProto(challenge_proto), _)) 661 SendMessage(EqualsProto(challenge_proto), _))
671 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); 662 .WillOnce(PostCompletionCallbackTask<1>(net::OK));
672 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR)); 663 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::AUTHENTICATION_ERROR));
673 EXPECT_CALL(*socket_->GetMockTransport(), Start()); 664 EXPECT_CALL(*socket_->GetMockTransport(), Start());
674 socket_->Connect(std::move(delegate_), 665 socket_->AddObserver(observer_.get());
675 base::Bind(&CompleteHandler::OnConnectComplete, 666 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
676 base::Unretained(&handler_))); 667 base::Unretained(&handler_)));
677 RunPendingTasks(); 668 RunPendingTasks();
678 socket_->GetMockTransport()->current_delegate()->OnMessage(CreateAuthReply()); 669 socket_->GetMockTransport()->current_delegate()->OnMessage(CreateAuthReply());
679 RunPendingTasks(); 670 RunPendingTasks();
680 671
681 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state()); 672 EXPECT_EQ(ReadyState::CLOSED, socket_->ready_state());
682 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state()); 673 EXPECT_EQ(ChannelError::AUTHENTICATION_ERROR, socket_->error_state());
683 } 674 }
684 675
685 // Sends message data through an actual non-mocked CastTransport object, 676 // Sends message data through an actual non-mocked CastTransport object,
(...skipping 15 matching lines...) Expand all
701 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str)); 692 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str));
702 socket_->AddReadResultForData(net::ASYNC, reply_str); 693 socket_->AddReadResultForData(net::ASYNC, reply_str);
703 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING); 694 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING);
704 695
705 CastMessage test_message = CreateTestMessage(); 696 CastMessage test_message = CreateTestMessage();
706 std::string test_message_str; 697 std::string test_message_str;
707 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str)); 698 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str));
708 socket_->AddWriteResultForData(net::ASYNC, test_message_str); 699 socket_->AddWriteResultForData(net::ASYNC, test_message_str);
709 700
710 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); 701 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE));
711 socket_->Connect(std::move(delegate_), 702 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
712 base::Bind(&CompleteHandler::OnConnectComplete,
713 base::Unretained(&handler_))); 703 base::Unretained(&handler_)));
714 RunPendingTasks(); 704 RunPendingTasks();
715 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); 705 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state());
716 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); 706 EXPECT_EQ(ChannelError::NONE, socket_->error_state());
717 707
718 // Send the test message through a real transport object. 708 // Send the test message through a real transport object.
719 EXPECT_CALL(handler_, OnWriteComplete(net::OK)); 709 EXPECT_CALL(handler_, OnWriteComplete(net::OK));
720 socket_->transport()->SendMessage( 710 socket_->transport()->SendMessage(
721 test_message, base::Bind(&CompleteHandler::OnWriteComplete, 711 test_message, base::Bind(&CompleteHandler::OnWriteComplete,
722 base::Unretained(&handler_))); 712 base::Unretained(&handler_)));
(...skipping 21 matching lines...) Expand all
744 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str)); 734 EXPECT_TRUE(MessageFramer::Serialize(reply, &reply_str));
745 socket_->AddReadResultForData(net::SYNCHRONOUS, reply_str); 735 socket_->AddReadResultForData(net::SYNCHRONOUS, reply_str);
746 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING); 736 socket_->AddReadResult(net::ASYNC, net::ERR_IO_PENDING);
747 737
748 CastMessage test_message = CreateTestMessage(); 738 CastMessage test_message = CreateTestMessage();
749 std::string test_message_str; 739 std::string test_message_str;
750 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str)); 740 EXPECT_TRUE(MessageFramer::Serialize(test_message, &test_message_str));
751 socket_->AddWriteResultForData(net::SYNCHRONOUS, test_message_str); 741 socket_->AddWriteResultForData(net::SYNCHRONOUS, test_message_str);
752 742
753 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE)); 743 EXPECT_CALL(handler_, OnConnectComplete(ChannelError::NONE));
754 socket_->Connect(std::move(delegate_), 744 socket_->Connect(base::Bind(&CompleteHandler::OnConnectComplete,
755 base::Bind(&CompleteHandler::OnConnectComplete,
756 base::Unretained(&handler_))); 745 base::Unretained(&handler_)));
757 RunPendingTasks(); 746 RunPendingTasks();
758 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); 747 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state());
759 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); 748 EXPECT_EQ(ChannelError::NONE, socket_->error_state());
760 749
761 // Send the test message through a real transport object. 750 // Send the test message through a real transport object.
762 EXPECT_CALL(handler_, OnWriteComplete(net::OK)); 751 EXPECT_CALL(handler_, OnWriteComplete(net::OK));
763 socket_->transport()->SendMessage( 752 socket_->transport()->SendMessage(
764 test_message, base::Bind(&CompleteHandler::OnWriteComplete, 753 test_message, base::Bind(&CompleteHandler::OnWriteComplete,
765 base::Unretained(&handler_))); 754 base::Unretained(&handler_)));
766 RunPendingTasks(); 755 RunPendingTasks();
767 756
768 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state()); 757 EXPECT_EQ(ReadyState::OPEN, socket_->ready_state());
769 EXPECT_EQ(ChannelError::NONE, socket_->error_state()); 758 EXPECT_EQ(ChannelError::NONE, socket_->error_state());
770 } 759 }
771 760
761 TEST_F(CastSocketTest, TestObservers) {
762 CreateCastSocketSecure();
763 // Test AddObserever
764 MockCastSocketObserver observer1;
765 MockCastSocketObserver observer2;
766 socket_->AddObserver(&observer1);
767 socket_->AddObserver(&observer1);
768 socket_->AddObserver(&observer2);
769 socket_->AddObserver(&observer2);
770
771 // Test notify observers
772 EXPECT_CALL(observer1, OnError(_, cast_channel::ChannelError::CONNECT_ERROR));
773 EXPECT_CALL(observer2, OnError(_, cast_channel::ChannelError::CONNECT_ERROR));
774 CastSocketImpl::CastSocketMessageDelegate delegate(socket_.get());
775 delegate.OnError(cast_channel::ChannelError::CONNECT_ERROR);
776 }
777
772 } // namespace cast_channel 778 } // namespace cast_channel
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698