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

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

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 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
« no previous file with comments | « net/socket/ssl_client_socket_unittest.cc ('k') | net/socket/tcp_client_socket_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // This test suite uses SSLClientSocket to test the implementation of 5 // This test suite uses SSLClientSocket to test the implementation of
6 // SSLServerSocket. In order to establish connections between the sockets 6 // SSLServerSocket. In order to establish connections between the sockets
7 // we need two additional classes: 7 // we need two additional classes:
8 // 1. FakeSocket 8 // 1. FakeSocket
9 // Connects SSL socket to FakeDataChannel. This class is just a stub. 9 // Connects SSL socket to FakeDataChannel. This class is just a stub.
10 // 10 //
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 #include "net/socket/stream_socket.h" 62 #include "net/socket/stream_socket.h"
63 #include "net/ssl/scoped_openssl_types.h" 63 #include "net/ssl/scoped_openssl_types.h"
64 #include "net/ssl/ssl_cert_request_info.h" 64 #include "net/ssl/ssl_cert_request_info.h"
65 #include "net/ssl/ssl_cipher_suite_names.h" 65 #include "net/ssl/ssl_cipher_suite_names.h"
66 #include "net/ssl/ssl_connection_status_flags.h" 66 #include "net/ssl/ssl_connection_status_flags.h"
67 #include "net/ssl/ssl_info.h" 67 #include "net/ssl/ssl_info.h"
68 #include "net/ssl/ssl_private_key.h" 68 #include "net/ssl/ssl_private_key.h"
69 #include "net/ssl/ssl_server_config.h" 69 #include "net/ssl/ssl_server_config.h"
70 #include "net/ssl/test_ssl_private_key.h" 70 #include "net/ssl/test_ssl_private_key.h"
71 #include "net/test/cert_test_util.h" 71 #include "net/test/cert_test_util.h"
72 #include "net/test/gtest_util.h"
72 #include "net/test/test_data_directory.h" 73 #include "net/test/test_data_directory.h"
74 #include "testing/gmock/include/gmock/gmock.h"
73 #include "testing/gtest/include/gtest/gtest.h" 75 #include "testing/gtest/include/gtest/gtest.h"
74 #include "testing/platform_test.h" 76 #include "testing/platform_test.h"
75 77
78 using net::test::IsError;
79 using net::test::IsOk;
80
76 namespace net { 81 namespace net {
77 82
78 namespace { 83 namespace {
79 84
80 const char kClientCertFileName[] = "client_1.pem"; 85 const char kClientCertFileName[] = "client_1.pem";
81 const char kClientPrivateKeyFileName[] = "client_1.pk8"; 86 const char kClientPrivateKeyFileName[] = "client_1.pk8";
82 const char kWrongClientCertFileName[] = "client_2.pem"; 87 const char kWrongClientCertFileName[] = "client_2.pem";
83 const char kWrongClientPrivateKeyFileName[] = "client_2.pk8"; 88 const char kWrongClientPrivateKeyFileName[] = "client_2.pk8";
84 const char kClientCertCAFileName[] = "client_1_ca.pem"; 89 const char kClientCertCAFileName[] = "client_1_ca.pem";
85 90
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 539
535 TestCompletionCallback handshake_callback; 540 TestCompletionCallback handshake_callback;
536 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 541 int server_ret = server_socket_->Handshake(handshake_callback.callback());
537 542
538 TestCompletionCallback connect_callback; 543 TestCompletionCallback connect_callback;
539 int client_ret = client_socket_->Connect(connect_callback.callback()); 544 int client_ret = client_socket_->Connect(connect_callback.callback());
540 545
541 client_ret = connect_callback.GetResult(client_ret); 546 client_ret = connect_callback.GetResult(client_ret);
542 server_ret = handshake_callback.GetResult(server_ret); 547 server_ret = handshake_callback.GetResult(server_ret);
543 548
544 ASSERT_EQ(OK, client_ret); 549 ASSERT_THAT(client_ret, IsOk());
545 ASSERT_EQ(OK, server_ret); 550 ASSERT_THAT(server_ret, IsOk());
546 551
547 // Make sure the cert status is expected. 552 // Make sure the cert status is expected.
548 SSLInfo ssl_info; 553 SSLInfo ssl_info;
549 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info)); 554 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info));
550 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, ssl_info.cert_status); 555 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, ssl_info.cert_status);
551 556
552 // The default cipher suite should be ECDHE and, unless on NSS and the 557 // The default cipher suite should be ECDHE and, unless on NSS and the
553 // platform doesn't support it, an AEAD. 558 // platform doesn't support it, an AEAD.
554 uint16_t cipher_suite = 559 uint16_t cipher_suite =
555 SSLConnectionStatusToCipherSuite(ssl_info.connection_status); 560 SSLConnectionStatusToCipherSuite(ssl_info.connection_status);
(...skipping 13 matching lines...) Expand all
569 574
570 TestCompletionCallback handshake_callback; 575 TestCompletionCallback handshake_callback;
571 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 576 int server_ret = server_socket_->Handshake(handshake_callback.callback());
572 577
573 TestCompletionCallback connect_callback; 578 TestCompletionCallback connect_callback;
574 int client_ret = client_socket_->Connect(connect_callback.callback()); 579 int client_ret = client_socket_->Connect(connect_callback.callback());
575 580
576 client_ret = connect_callback.GetResult(client_ret); 581 client_ret = connect_callback.GetResult(client_ret);
577 server_ret = handshake_callback.GetResult(server_ret); 582 server_ret = handshake_callback.GetResult(server_ret);
578 583
579 ASSERT_EQ(OK, client_ret); 584 ASSERT_THAT(client_ret, IsOk());
580 ASSERT_EQ(OK, server_ret); 585 ASSERT_THAT(server_ret, IsOk());
581 586
582 // Make sure the cert status is expected. 587 // Make sure the cert status is expected.
583 SSLInfo ssl_info; 588 SSLInfo ssl_info;
584 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info)); 589 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info));
585 EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL); 590 EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL);
586 SSLInfo ssl_server_info; 591 SSLInfo ssl_server_info;
587 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info)); 592 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info));
588 EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL); 593 EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL);
589 594
590 // Make sure the second connection is cached. 595 // Make sure the second connection is cached.
591 ASSERT_NO_FATAL_FAILURE(CreateSockets()); 596 ASSERT_NO_FATAL_FAILURE(CreateSockets());
592 TestCompletionCallback handshake_callback2; 597 TestCompletionCallback handshake_callback2;
593 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); 598 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback());
594 599
595 TestCompletionCallback connect_callback2; 600 TestCompletionCallback connect_callback2;
596 int client_ret2 = client_socket_->Connect(connect_callback2.callback()); 601 int client_ret2 = client_socket_->Connect(connect_callback2.callback());
597 602
598 client_ret2 = connect_callback2.GetResult(client_ret2); 603 client_ret2 = connect_callback2.GetResult(client_ret2);
599 server_ret2 = handshake_callback2.GetResult(server_ret2); 604 server_ret2 = handshake_callback2.GetResult(server_ret2);
600 605
601 ASSERT_EQ(OK, client_ret2); 606 ASSERT_THAT(client_ret2, IsOk());
602 ASSERT_EQ(OK, server_ret2); 607 ASSERT_THAT(server_ret2, IsOk());
603 608
604 // Make sure the cert status is expected. 609 // Make sure the cert status is expected.
605 SSLInfo ssl_info2; 610 SSLInfo ssl_info2;
606 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2)); 611 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2));
607 EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); 612 EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME);
608 SSLInfo ssl_server_info2; 613 SSLInfo ssl_server_info2;
609 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2)); 614 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2));
610 EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); 615 EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME);
611 } 616 }
612 617
613 // This test makes sure the session cache separates out by server context. 618 // This test makes sure the session cache separates out by server context.
614 TEST_F(SSLServerSocketTest, HandshakeCachedContextSwitch) { 619 TEST_F(SSLServerSocketTest, HandshakeCachedContextSwitch) {
615 ASSERT_NO_FATAL_FAILURE(CreateContext()); 620 ASSERT_NO_FATAL_FAILURE(CreateContext());
616 ASSERT_NO_FATAL_FAILURE(CreateSockets()); 621 ASSERT_NO_FATAL_FAILURE(CreateSockets());
617 622
618 TestCompletionCallback handshake_callback; 623 TestCompletionCallback handshake_callback;
619 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 624 int server_ret = server_socket_->Handshake(handshake_callback.callback());
620 625
621 TestCompletionCallback connect_callback; 626 TestCompletionCallback connect_callback;
622 int client_ret = client_socket_->Connect(connect_callback.callback()); 627 int client_ret = client_socket_->Connect(connect_callback.callback());
623 628
624 client_ret = connect_callback.GetResult(client_ret); 629 client_ret = connect_callback.GetResult(client_ret);
625 server_ret = handshake_callback.GetResult(server_ret); 630 server_ret = handshake_callback.GetResult(server_ret);
626 631
627 ASSERT_EQ(OK, client_ret); 632 ASSERT_THAT(client_ret, IsOk());
628 ASSERT_EQ(OK, server_ret); 633 ASSERT_THAT(server_ret, IsOk());
629 634
630 // Make sure the cert status is expected. 635 // Make sure the cert status is expected.
631 SSLInfo ssl_info; 636 SSLInfo ssl_info;
632 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info)); 637 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info));
633 EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL); 638 EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL);
634 SSLInfo ssl_server_info; 639 SSLInfo ssl_server_info;
635 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info)); 640 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info));
636 EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL); 641 EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL);
637 642
638 // Make sure the second connection is NOT cached when using a new context. 643 // Make sure the second connection is NOT cached when using a new context.
639 ASSERT_NO_FATAL_FAILURE(CreateContext()); 644 ASSERT_NO_FATAL_FAILURE(CreateContext());
640 ASSERT_NO_FATAL_FAILURE(CreateSockets()); 645 ASSERT_NO_FATAL_FAILURE(CreateSockets());
641 646
642 TestCompletionCallback handshake_callback2; 647 TestCompletionCallback handshake_callback2;
643 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); 648 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback());
644 649
645 TestCompletionCallback connect_callback2; 650 TestCompletionCallback connect_callback2;
646 int client_ret2 = client_socket_->Connect(connect_callback2.callback()); 651 int client_ret2 = client_socket_->Connect(connect_callback2.callback());
647 652
648 client_ret2 = connect_callback2.GetResult(client_ret2); 653 client_ret2 = connect_callback2.GetResult(client_ret2);
649 server_ret2 = handshake_callback2.GetResult(server_ret2); 654 server_ret2 = handshake_callback2.GetResult(server_ret2);
650 655
651 ASSERT_EQ(OK, client_ret2); 656 ASSERT_THAT(client_ret2, IsOk());
652 ASSERT_EQ(OK, server_ret2); 657 ASSERT_THAT(server_ret2, IsOk());
653 658
654 // Make sure the cert status is expected. 659 // Make sure the cert status is expected.
655 SSLInfo ssl_info2; 660 SSLInfo ssl_info2;
656 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2)); 661 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2));
657 EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_FULL); 662 EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_FULL);
658 SSLInfo ssl_server_info2; 663 SSLInfo ssl_server_info2;
659 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2)); 664 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2));
660 EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_FULL); 665 EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_FULL);
661 } 666 }
662 667
(...skipping 11 matching lines...) Expand all
674 679
675 TestCompletionCallback handshake_callback; 680 TestCompletionCallback handshake_callback;
676 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 681 int server_ret = server_socket_->Handshake(handshake_callback.callback());
677 682
678 TestCompletionCallback connect_callback; 683 TestCompletionCallback connect_callback;
679 int client_ret = client_socket_->Connect(connect_callback.callback()); 684 int client_ret = client_socket_->Connect(connect_callback.callback());
680 685
681 client_ret = connect_callback.GetResult(client_ret); 686 client_ret = connect_callback.GetResult(client_ret);
682 server_ret = handshake_callback.GetResult(server_ret); 687 server_ret = handshake_callback.GetResult(server_ret);
683 688
684 ASSERT_EQ(OK, client_ret); 689 ASSERT_THAT(client_ret, IsOk());
685 ASSERT_EQ(OK, server_ret); 690 ASSERT_THAT(server_ret, IsOk());
686 691
687 // Make sure the cert status is expected. 692 // Make sure the cert status is expected.
688 SSLInfo ssl_info; 693 SSLInfo ssl_info;
689 client_socket_->GetSSLInfo(&ssl_info); 694 client_socket_->GetSSLInfo(&ssl_info);
690 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, ssl_info.cert_status); 695 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, ssl_info.cert_status);
691 server_socket_->GetSSLInfo(&ssl_info); 696 server_socket_->GetSSLInfo(&ssl_info);
692 ASSERT_TRUE(ssl_info.cert.get()); 697 ASSERT_TRUE(ssl_info.cert.get());
693 EXPECT_TRUE(client_cert->Equals(ssl_info.cert.get())); 698 EXPECT_TRUE(client_cert->Equals(ssl_info.cert.get()));
694 } 699 }
695 700
(...skipping 12 matching lines...) Expand all
708 713
709 TestCompletionCallback handshake_callback; 714 TestCompletionCallback handshake_callback;
710 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 715 int server_ret = server_socket_->Handshake(handshake_callback.callback());
711 716
712 TestCompletionCallback connect_callback; 717 TestCompletionCallback connect_callback;
713 int client_ret = client_socket_->Connect(connect_callback.callback()); 718 int client_ret = client_socket_->Connect(connect_callback.callback());
714 719
715 client_ret = connect_callback.GetResult(client_ret); 720 client_ret = connect_callback.GetResult(client_ret);
716 server_ret = handshake_callback.GetResult(server_ret); 721 server_ret = handshake_callback.GetResult(server_ret);
717 722
718 ASSERT_EQ(OK, client_ret); 723 ASSERT_THAT(client_ret, IsOk());
719 ASSERT_EQ(OK, server_ret); 724 ASSERT_THAT(server_ret, IsOk());
720 725
721 // Make sure the cert status is expected. 726 // Make sure the cert status is expected.
722 SSLInfo ssl_info; 727 SSLInfo ssl_info;
723 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info)); 728 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info));
724 EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL); 729 EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL);
725 SSLInfo ssl_server_info; 730 SSLInfo ssl_server_info;
726 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info)); 731 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info));
727 ASSERT_TRUE(ssl_server_info.cert.get()); 732 ASSERT_TRUE(ssl_server_info.cert.get());
728 EXPECT_TRUE(client_cert->Equals(ssl_server_info.cert.get())); 733 EXPECT_TRUE(client_cert->Equals(ssl_server_info.cert.get()));
729 EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL); 734 EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL);
730 server_socket_->Disconnect(); 735 server_socket_->Disconnect();
731 client_socket_->Disconnect(); 736 client_socket_->Disconnect();
732 737
733 // Create the connection again. 738 // Create the connection again.
734 ASSERT_NO_FATAL_FAILURE(CreateSockets()); 739 ASSERT_NO_FATAL_FAILURE(CreateSockets());
735 TestCompletionCallback handshake_callback2; 740 TestCompletionCallback handshake_callback2;
736 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); 741 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback());
737 742
738 TestCompletionCallback connect_callback2; 743 TestCompletionCallback connect_callback2;
739 int client_ret2 = client_socket_->Connect(connect_callback2.callback()); 744 int client_ret2 = client_socket_->Connect(connect_callback2.callback());
740 745
741 client_ret2 = connect_callback2.GetResult(client_ret2); 746 client_ret2 = connect_callback2.GetResult(client_ret2);
742 server_ret2 = handshake_callback2.GetResult(server_ret2); 747 server_ret2 = handshake_callback2.GetResult(server_ret2);
743 748
744 ASSERT_EQ(OK, client_ret2); 749 ASSERT_THAT(client_ret2, IsOk());
745 ASSERT_EQ(OK, server_ret2); 750 ASSERT_THAT(server_ret2, IsOk());
746 751
747 // Make sure the cert status is expected. 752 // Make sure the cert status is expected.
748 SSLInfo ssl_info2; 753 SSLInfo ssl_info2;
749 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2)); 754 ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2));
750 EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); 755 EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME);
751 SSLInfo ssl_server_info2; 756 SSLInfo ssl_server_info2;
752 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2)); 757 ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2));
753 ASSERT_TRUE(ssl_server_info2.cert.get()); 758 ASSERT_TRUE(ssl_server_info2.cert.get());
754 EXPECT_TRUE(client_cert->Equals(ssl_server_info2.cert.get())); 759 EXPECT_TRUE(client_cert->Equals(ssl_server_info2.cert.get()));
755 EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); 760 EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME);
(...skipping 22 matching lines...) Expand all
778 783
779 // Check that the authority name that arrived in the CertificateRequest 784 // Check that the authority name that arrived in the CertificateRequest
780 // handshake message is as expected. 785 // handshake message is as expected.
781 scoped_refptr<X509Certificate> client_cert = 786 scoped_refptr<X509Certificate> client_cert =
782 ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName); 787 ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName);
783 ASSERT_TRUE(client_cert); 788 ASSERT_TRUE(client_cert);
784 EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info->cert_authorities)); 789 EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info->cert_authorities));
785 790
786 client_socket_->Disconnect(); 791 client_socket_->Disconnect();
787 792
788 EXPECT_EQ(ERR_FAILED, handshake_callback.GetResult(server_ret)); 793 EXPECT_THAT(handshake_callback.GetResult(server_ret), IsError(ERR_FAILED));
789 } 794 }
790 795
791 TEST_F(SSLServerSocketTest, HandshakeWithClientCertRequiredNotSuppliedCached) { 796 TEST_F(SSLServerSocketTest, HandshakeWithClientCertRequiredNotSuppliedCached) {
792 ASSERT_NO_FATAL_FAILURE(ConfigureClientCertsForServer()); 797 ASSERT_NO_FATAL_FAILURE(ConfigureClientCertsForServer());
793 ASSERT_NO_FATAL_FAILURE(CreateContext()); 798 ASSERT_NO_FATAL_FAILURE(CreateContext());
794 ASSERT_NO_FATAL_FAILURE(CreateSockets()); 799 ASSERT_NO_FATAL_FAILURE(CreateSockets());
795 // Use the default setting for the client socket, which is to not send 800 // Use the default setting for the client socket, which is to not send
796 // a client certificate. This will cause the client to receive an 801 // a client certificate. This will cause the client to receive an
797 // ERR_SSL_CLIENT_AUTH_CERT_NEEDED error, and allow for inspecting the 802 // ERR_SSL_CLIENT_AUTH_CERT_NEEDED error, and allow for inspecting the
798 // requested cert_authorities from the CertificateRequest sent by the 803 // requested cert_authorities from the CertificateRequest sent by the
(...skipping 12 matching lines...) Expand all
811 816
812 // Check that the authority name that arrived in the CertificateRequest 817 // Check that the authority name that arrived in the CertificateRequest
813 // handshake message is as expected. 818 // handshake message is as expected.
814 scoped_refptr<X509Certificate> client_cert = 819 scoped_refptr<X509Certificate> client_cert =
815 ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName); 820 ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName);
816 ASSERT_TRUE(client_cert); 821 ASSERT_TRUE(client_cert);
817 EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info->cert_authorities)); 822 EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info->cert_authorities));
818 823
819 client_socket_->Disconnect(); 824 client_socket_->Disconnect();
820 825
821 EXPECT_EQ(ERR_FAILED, handshake_callback.GetResult(server_ret)); 826 EXPECT_THAT(handshake_callback.GetResult(server_ret), IsError(ERR_FAILED));
822 server_socket_->Disconnect(); 827 server_socket_->Disconnect();
823 828
824 // Below, check that the cache didn't store the result of a failed handshake. 829 // Below, check that the cache didn't store the result of a failed handshake.
825 ASSERT_NO_FATAL_FAILURE(CreateSockets()); 830 ASSERT_NO_FATAL_FAILURE(CreateSockets());
826 TestCompletionCallback handshake_callback2; 831 TestCompletionCallback handshake_callback2;
827 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); 832 int server_ret2 = server_socket_->Handshake(handshake_callback2.callback());
828 833
829 TestCompletionCallback connect_callback2; 834 TestCompletionCallback connect_callback2;
830 EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED, 835 EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED,
831 connect_callback2.GetResult( 836 connect_callback2.GetResult(
832 client_socket_->Connect(connect_callback2.callback()))); 837 client_socket_->Connect(connect_callback2.callback())));
833 838
834 scoped_refptr<SSLCertRequestInfo> request_info2 = new SSLCertRequestInfo(); 839 scoped_refptr<SSLCertRequestInfo> request_info2 = new SSLCertRequestInfo();
835 client_socket_->GetSSLCertRequestInfo(request_info2.get()); 840 client_socket_->GetSSLCertRequestInfo(request_info2.get());
836 841
837 // Check that the authority name that arrived in the CertificateRequest 842 // Check that the authority name that arrived in the CertificateRequest
838 // handshake message is as expected. 843 // handshake message is as expected.
839 EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info2->cert_authorities)); 844 EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info2->cert_authorities));
840 845
841 client_socket_->Disconnect(); 846 client_socket_->Disconnect();
842 847
843 EXPECT_EQ(ERR_FAILED, handshake_callback2.GetResult(server_ret2)); 848 EXPECT_THAT(handshake_callback2.GetResult(server_ret2), IsError(ERR_FAILED));
844 } 849 }
845 850
846 TEST_F(SSLServerSocketTest, HandshakeWithWrongClientCertSupplied) { 851 TEST_F(SSLServerSocketTest, HandshakeWithWrongClientCertSupplied) {
847 scoped_refptr<X509Certificate> client_cert = 852 scoped_refptr<X509Certificate> client_cert =
848 ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName); 853 ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName);
849 ASSERT_TRUE(client_cert); 854 ASSERT_TRUE(client_cert);
850 855
851 ASSERT_NO_FATAL_FAILURE(ConfigureClientCertsForClient( 856 ASSERT_NO_FATAL_FAILURE(ConfigureClientCertsForClient(
852 kWrongClientCertFileName, kWrongClientPrivateKeyFileName)); 857 kWrongClientCertFileName, kWrongClientPrivateKeyFileName));
853 ASSERT_NO_FATAL_FAILURE(ConfigureClientCertsForServer()); 858 ASSERT_NO_FATAL_FAILURE(ConfigureClientCertsForServer());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 // Establish connection. 917 // Establish connection.
913 TestCompletionCallback connect_callback; 918 TestCompletionCallback connect_callback;
914 int client_ret = client_socket_->Connect(connect_callback.callback()); 919 int client_ret = client_socket_->Connect(connect_callback.callback());
915 ASSERT_TRUE(client_ret == OK || client_ret == ERR_IO_PENDING); 920 ASSERT_TRUE(client_ret == OK || client_ret == ERR_IO_PENDING);
916 921
917 TestCompletionCallback handshake_callback; 922 TestCompletionCallback handshake_callback;
918 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 923 int server_ret = server_socket_->Handshake(handshake_callback.callback());
919 ASSERT_TRUE(server_ret == OK || server_ret == ERR_IO_PENDING); 924 ASSERT_TRUE(server_ret == OK || server_ret == ERR_IO_PENDING);
920 925
921 client_ret = connect_callback.GetResult(client_ret); 926 client_ret = connect_callback.GetResult(client_ret);
922 ASSERT_EQ(OK, client_ret); 927 ASSERT_THAT(client_ret, IsOk());
923 server_ret = handshake_callback.GetResult(server_ret); 928 server_ret = handshake_callback.GetResult(server_ret);
924 ASSERT_EQ(OK, server_ret); 929 ASSERT_THAT(server_ret, IsOk());
925 930
926 const int kReadBufSize = 1024; 931 const int kReadBufSize = 1024;
927 scoped_refptr<StringIOBuffer> write_buf = 932 scoped_refptr<StringIOBuffer> write_buf =
928 new StringIOBuffer("testing123"); 933 new StringIOBuffer("testing123");
929 scoped_refptr<DrainableIOBuffer> read_buf = 934 scoped_refptr<DrainableIOBuffer> read_buf =
930 new DrainableIOBuffer(new IOBuffer(kReadBufSize), kReadBufSize); 935 new DrainableIOBuffer(new IOBuffer(kReadBufSize), kReadBufSize);
931 936
932 // Write then read. 937 // Write then read.
933 TestCompletionCallback write_callback; 938 TestCompletionCallback write_callback;
934 TestCompletionCallback read_callback; 939 TestCompletionCallback read_callback;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 // Establish connection. 1001 // Establish connection.
997 TestCompletionCallback connect_callback; 1002 TestCompletionCallback connect_callback;
998 int client_ret = client_socket_->Connect(connect_callback.callback()); 1003 int client_ret = client_socket_->Connect(connect_callback.callback());
999 ASSERT_TRUE(client_ret == OK || client_ret == ERR_IO_PENDING); 1004 ASSERT_TRUE(client_ret == OK || client_ret == ERR_IO_PENDING);
1000 1005
1001 TestCompletionCallback handshake_callback; 1006 TestCompletionCallback handshake_callback;
1002 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 1007 int server_ret = server_socket_->Handshake(handshake_callback.callback());
1003 ASSERT_TRUE(server_ret == OK || server_ret == ERR_IO_PENDING); 1008 ASSERT_TRUE(server_ret == OK || server_ret == ERR_IO_PENDING);
1004 1009
1005 client_ret = connect_callback.GetResult(client_ret); 1010 client_ret = connect_callback.GetResult(client_ret);
1006 ASSERT_EQ(OK, client_ret); 1011 ASSERT_THAT(client_ret, IsOk());
1007 server_ret = handshake_callback.GetResult(server_ret); 1012 server_ret = handshake_callback.GetResult(server_ret);
1008 ASSERT_EQ(OK, server_ret); 1013 ASSERT_THAT(server_ret, IsOk());
1009 1014
1010 scoped_refptr<StringIOBuffer> write_buf = new StringIOBuffer("testing123"); 1015 scoped_refptr<StringIOBuffer> write_buf = new StringIOBuffer("testing123");
1011 1016
1012 // The server closes the connection. The server needs to write some 1017 // The server closes the connection. The server needs to write some
1013 // data first so that the client's Read() calls from the transport 1018 // data first so that the client's Read() calls from the transport
1014 // socket won't return ERR_IO_PENDING. This ensures that the client 1019 // socket won't return ERR_IO_PENDING. This ensures that the client
1015 // will call Read() on the transport socket again. 1020 // will call Read() on the transport socket again.
1016 TestCompletionCallback write_callback; 1021 TestCompletionCallback write_callback;
1017 server_ret = server_socket_->Write(write_buf.get(), write_buf->size(), 1022 server_ret = server_socket_->Write(write_buf.get(), write_buf->size(),
1018 write_callback.callback()); 1023 write_callback.callback());
(...skipping 27 matching lines...) Expand all
1046 1051
1047 TestCompletionCallback connect_callback; 1052 TestCompletionCallback connect_callback;
1048 int client_ret = client_socket_->Connect(connect_callback.callback()); 1053 int client_ret = client_socket_->Connect(connect_callback.callback());
1049 ASSERT_TRUE(client_ret == OK || client_ret == ERR_IO_PENDING); 1054 ASSERT_TRUE(client_ret == OK || client_ret == ERR_IO_PENDING);
1050 1055
1051 TestCompletionCallback handshake_callback; 1056 TestCompletionCallback handshake_callback;
1052 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 1057 int server_ret = server_socket_->Handshake(handshake_callback.callback());
1053 ASSERT_TRUE(server_ret == OK || server_ret == ERR_IO_PENDING); 1058 ASSERT_TRUE(server_ret == OK || server_ret == ERR_IO_PENDING);
1054 1059
1055 if (client_ret == ERR_IO_PENDING) { 1060 if (client_ret == ERR_IO_PENDING) {
1056 ASSERT_EQ(OK, connect_callback.WaitForResult()); 1061 ASSERT_THAT(connect_callback.WaitForResult(), IsOk());
1057 } 1062 }
1058 if (server_ret == ERR_IO_PENDING) { 1063 if (server_ret == ERR_IO_PENDING) {
1059 ASSERT_EQ(OK, handshake_callback.WaitForResult()); 1064 ASSERT_THAT(handshake_callback.WaitForResult(), IsOk());
1060 } 1065 }
1061 1066
1062 const int kKeyingMaterialSize = 32; 1067 const int kKeyingMaterialSize = 32;
1063 const char kKeyingLabel[] = "EXPERIMENTAL-server-socket-test"; 1068 const char kKeyingLabel[] = "EXPERIMENTAL-server-socket-test";
1064 const char kKeyingContext[] = ""; 1069 const char kKeyingContext[] = "";
1065 unsigned char server_out[kKeyingMaterialSize]; 1070 unsigned char server_out[kKeyingMaterialSize];
1066 int rv = server_socket_->ExportKeyingMaterial( 1071 int rv = server_socket_->ExportKeyingMaterial(
1067 kKeyingLabel, false, kKeyingContext, server_out, sizeof(server_out)); 1072 kKeyingLabel, false, kKeyingContext, server_out, sizeof(server_out));
1068 ASSERT_EQ(OK, rv); 1073 ASSERT_THAT(rv, IsOk());
1069 1074
1070 unsigned char client_out[kKeyingMaterialSize]; 1075 unsigned char client_out[kKeyingMaterialSize];
1071 rv = client_socket_->ExportKeyingMaterial(kKeyingLabel, false, kKeyingContext, 1076 rv = client_socket_->ExportKeyingMaterial(kKeyingLabel, false, kKeyingContext,
1072 client_out, sizeof(client_out)); 1077 client_out, sizeof(client_out));
1073 ASSERT_EQ(OK, rv); 1078 ASSERT_THAT(rv, IsOk());
1074 EXPECT_EQ(0, memcmp(server_out, client_out, sizeof(server_out))); 1079 EXPECT_EQ(0, memcmp(server_out, client_out, sizeof(server_out)));
1075 1080
1076 const char kKeyingLabelBad[] = "EXPERIMENTAL-server-socket-test-bad"; 1081 const char kKeyingLabelBad[] = "EXPERIMENTAL-server-socket-test-bad";
1077 unsigned char client_bad[kKeyingMaterialSize]; 1082 unsigned char client_bad[kKeyingMaterialSize];
1078 rv = client_socket_->ExportKeyingMaterial( 1083 rv = client_socket_->ExportKeyingMaterial(
1079 kKeyingLabelBad, false, kKeyingContext, client_bad, sizeof(client_bad)); 1084 kKeyingLabelBad, false, kKeyingContext, client_bad, sizeof(client_bad));
1080 ASSERT_EQ(rv, OK); 1085 ASSERT_EQ(rv, OK);
1081 EXPECT_NE(0, memcmp(server_out, client_bad, sizeof(server_out))); 1086 EXPECT_NE(0, memcmp(server_out, client_bad, sizeof(server_out)));
1082 } 1087 }
1083 1088
(...skipping 23 matching lines...) Expand all
1107 1112
1108 TestCompletionCallback connect_callback; 1113 TestCompletionCallback connect_callback;
1109 int client_ret = client_socket_->Connect(connect_callback.callback()); 1114 int client_ret = client_socket_->Connect(connect_callback.callback());
1110 1115
1111 TestCompletionCallback handshake_callback; 1116 TestCompletionCallback handshake_callback;
1112 int server_ret = server_socket_->Handshake(handshake_callback.callback()); 1117 int server_ret = server_socket_->Handshake(handshake_callback.callback());
1113 1118
1114 client_ret = connect_callback.GetResult(client_ret); 1119 client_ret = connect_callback.GetResult(client_ret);
1115 server_ret = handshake_callback.GetResult(server_ret); 1120 server_ret = handshake_callback.GetResult(server_ret);
1116 1121
1117 ASSERT_EQ(ERR_SSL_VERSION_OR_CIPHER_MISMATCH, client_ret); 1122 ASSERT_THAT(client_ret, IsError(ERR_SSL_VERSION_OR_CIPHER_MISMATCH));
1118 ASSERT_EQ(ERR_SSL_VERSION_OR_CIPHER_MISMATCH, server_ret); 1123 ASSERT_THAT(server_ret, IsError(ERR_SSL_VERSION_OR_CIPHER_MISMATCH));
1119 } 1124 }
1120 1125
1121 } // namespace net 1126 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_unittest.cc ('k') | net/socket/tcp_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698