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

Side by Side Diff: net/ssl/channel_id_service_unittest.cc

Issue 1841863002: Update monet. (Closed) Base URL: https://github.com/domokit/monet.git@master
Patch Set: Created 4 years, 8 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/ssl/channel_id_service.cc ('k') | net/ssl/ssl_cipher_suite_names.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 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 "net/ssl/channel_id_service.h" 5 #include "net/ssl/channel_id_service.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "base/message_loop/message_loop_proxy.h"
14 #include "base/task_runner.h" 13 #include "base/task_runner.h"
14 #include "base/thread_task_runner_handle.h"
15 #include "crypto/ec_private_key.h" 15 #include "crypto/ec_private_key.h"
16 #include "net/base/net_errors.h" 16 #include "net/base/net_errors.h"
17 #include "net/base/test_completion_callback.h" 17 #include "net/base/test_completion_callback.h"
18 #include "net/cert/asn1_util.h" 18 #include "net/cert/asn1_util.h"
19 #include "net/cert/x509_certificate.h" 19 #include "net/cert/x509_certificate.h"
20 #include "net/ssl/default_channel_id_store.h" 20 #include "net/ssl/default_channel_id_store.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 22
23 namespace net { 23 namespace net {
24 24
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 err, 112 err,
113 server_identifier_, 113 server_identifier_,
114 expiration_time, 114 expiration_time,
115 private_key, 115 private_key,
116 cert)); 116 cert));
117 } 117 }
118 118
119 class ChannelIDServiceTest : public testing::Test { 119 class ChannelIDServiceTest : public testing::Test {
120 public: 120 public:
121 ChannelIDServiceTest() 121 ChannelIDServiceTest()
122 : service_(new ChannelIDService( 122 : service_(new ChannelIDService(new DefaultChannelIDStore(NULL),
123 new DefaultChannelIDStore(NULL), 123 base::ThreadTaskRunnerHandle::Get())) {}
124 base::MessageLoopProxy::current())) {
125 }
126 124
127 protected: 125 protected:
128 scoped_ptr<ChannelIDService> service_; 126 scoped_ptr<ChannelIDService> service_;
129 }; 127 };
130 128
131 TEST_F(ChannelIDServiceTest, GetDomainForHost) { 129 TEST_F(ChannelIDServiceTest, GetDomainForHost) {
132 EXPECT_EQ("google.com", 130 EXPECT_EQ("google.com",
133 ChannelIDService::GetDomainForHost("google.com")); 131 ChannelIDService::GetDomainForHost("google.com"));
134 EXPECT_EQ("google.com", 132 EXPECT_EQ("google.com",
135 ChannelIDService::GetDomainForHost("www.google.com")); 133 ChannelIDService::GetDomainForHost("www.google.com"));
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 EXPECT_EQ(OK, error); 577 EXPECT_EQ(OK, error);
580 EXPECT_FALSE(request_handle.is_active()); 578 EXPECT_FALSE(request_handle.is_active());
581 EXPECT_EQ(2, service_->cert_count()); 579 EXPECT_EQ(2, service_->cert_count());
582 EXPECT_STREQ("c", private_key_info2.c_str()); 580 EXPECT_STREQ("c", private_key_info2.c_str());
583 EXPECT_STREQ("d", der_cert2.c_str()); 581 EXPECT_STREQ("d", der_cert2.c_str());
584 } 582 }
585 583
586 TEST_F(ChannelIDServiceTest, AsyncStoreGetOrCreateNoChannelIDsInStore) { 584 TEST_F(ChannelIDServiceTest, AsyncStoreGetOrCreateNoChannelIDsInStore) {
587 MockChannelIDStoreWithAsyncGet* mock_store = 585 MockChannelIDStoreWithAsyncGet* mock_store =
588 new MockChannelIDStoreWithAsyncGet(); 586 new MockChannelIDStoreWithAsyncGet();
589 service_ = scoped_ptr<ChannelIDService>(new ChannelIDService( 587 service_ = scoped_ptr<ChannelIDService>(
590 mock_store, base::MessageLoopProxy::current())); 588 new ChannelIDService(mock_store, base::ThreadTaskRunnerHandle::Get()));
591 589
592 std::string host("encrypted.google.com"); 590 std::string host("encrypted.google.com");
593 591
594 int error; 592 int error;
595 TestCompletionCallback callback; 593 TestCompletionCallback callback;
596 ChannelIDService::RequestHandle request_handle; 594 ChannelIDService::RequestHandle request_handle;
597 595
598 // Asynchronous completion with no certs in the store. 596 // Asynchronous completion with no certs in the store.
599 std::string private_key_info, der_cert; 597 std::string private_key_info, der_cert;
600 EXPECT_EQ(0, service_->cert_count()); 598 EXPECT_EQ(0, service_->cert_count());
601 error = service_->GetOrCreateChannelID( 599 error = service_->GetOrCreateChannelID(
602 host, &private_key_info, &der_cert, callback.callback(), &request_handle); 600 host, &private_key_info, &der_cert, callback.callback(), &request_handle);
603 EXPECT_EQ(ERR_IO_PENDING, error); 601 EXPECT_EQ(ERR_IO_PENDING, error);
604 EXPECT_TRUE(request_handle.is_active()); 602 EXPECT_TRUE(request_handle.is_active());
605 603
606 mock_store->CallGetChannelIDCallbackWithResult( 604 mock_store->CallGetChannelIDCallbackWithResult(
607 ERR_FILE_NOT_FOUND, base::Time(), std::string(), std::string()); 605 ERR_FILE_NOT_FOUND, base::Time(), std::string(), std::string());
608 606
609 error = callback.WaitForResult(); 607 error = callback.WaitForResult();
610 EXPECT_EQ(OK, error); 608 EXPECT_EQ(OK, error);
611 EXPECT_EQ(1, service_->cert_count()); 609 EXPECT_EQ(1, service_->cert_count());
612 EXPECT_FALSE(private_key_info.empty()); 610 EXPECT_FALSE(private_key_info.empty());
613 EXPECT_FALSE(der_cert.empty()); 611 EXPECT_FALSE(der_cert.empty());
614 EXPECT_FALSE(request_handle.is_active()); 612 EXPECT_FALSE(request_handle.is_active());
615 } 613 }
616 614
617 TEST_F(ChannelIDServiceTest, AsyncStoreGetNoChannelIDsInStore) { 615 TEST_F(ChannelIDServiceTest, AsyncStoreGetNoChannelIDsInStore) {
618 MockChannelIDStoreWithAsyncGet* mock_store = 616 MockChannelIDStoreWithAsyncGet* mock_store =
619 new MockChannelIDStoreWithAsyncGet(); 617 new MockChannelIDStoreWithAsyncGet();
620 service_ = scoped_ptr<ChannelIDService>(new ChannelIDService( 618 service_ = scoped_ptr<ChannelIDService>(
621 mock_store, base::MessageLoopProxy::current())); 619 new ChannelIDService(mock_store, base::ThreadTaskRunnerHandle::Get()));
622 620
623 std::string host("encrypted.google.com"); 621 std::string host("encrypted.google.com");
624 622
625 int error; 623 int error;
626 TestCompletionCallback callback; 624 TestCompletionCallback callback;
627 ChannelIDService::RequestHandle request_handle; 625 ChannelIDService::RequestHandle request_handle;
628 626
629 // Asynchronous completion with no certs in the store. 627 // Asynchronous completion with no certs in the store.
630 std::string private_key, der_cert; 628 std::string private_key, der_cert;
631 EXPECT_EQ(0, service_->cert_count()); 629 EXPECT_EQ(0, service_->cert_count());
632 error = service_->GetChannelID( 630 error = service_->GetChannelID(
633 host, &private_key, &der_cert, callback.callback(), &request_handle); 631 host, &private_key, &der_cert, callback.callback(), &request_handle);
634 EXPECT_EQ(ERR_IO_PENDING, error); 632 EXPECT_EQ(ERR_IO_PENDING, error);
635 EXPECT_TRUE(request_handle.is_active()); 633 EXPECT_TRUE(request_handle.is_active());
636 634
637 mock_store->CallGetChannelIDCallbackWithResult( 635 mock_store->CallGetChannelIDCallbackWithResult(
638 ERR_FILE_NOT_FOUND, base::Time(), std::string(), std::string()); 636 ERR_FILE_NOT_FOUND, base::Time(), std::string(), std::string());
639 637
640 error = callback.WaitForResult(); 638 error = callback.WaitForResult();
641 EXPECT_EQ(ERR_FILE_NOT_FOUND, error); 639 EXPECT_EQ(ERR_FILE_NOT_FOUND, error);
642 EXPECT_EQ(0, service_->cert_count()); 640 EXPECT_EQ(0, service_->cert_count());
643 EXPECT_EQ(0u, service_->workers_created()); 641 EXPECT_EQ(0u, service_->workers_created());
644 EXPECT_TRUE(der_cert.empty()); 642 EXPECT_TRUE(der_cert.empty());
645 EXPECT_FALSE(request_handle.is_active()); 643 EXPECT_FALSE(request_handle.is_active());
646 } 644 }
647 645
648 TEST_F(ChannelIDServiceTest, AsyncStoreGetOrCreateOneCertInStore) { 646 TEST_F(ChannelIDServiceTest, AsyncStoreGetOrCreateOneCertInStore) {
649 MockChannelIDStoreWithAsyncGet* mock_store = 647 MockChannelIDStoreWithAsyncGet* mock_store =
650 new MockChannelIDStoreWithAsyncGet(); 648 new MockChannelIDStoreWithAsyncGet();
651 service_ = scoped_ptr<ChannelIDService>(new ChannelIDService( 649 service_ = scoped_ptr<ChannelIDService>(
652 mock_store, base::MessageLoopProxy::current())); 650 new ChannelIDService(mock_store, base::ThreadTaskRunnerHandle::Get()));
653 651
654 std::string host("encrypted.google.com"); 652 std::string host("encrypted.google.com");
655 653
656 int error; 654 int error;
657 TestCompletionCallback callback; 655 TestCompletionCallback callback;
658 ChannelIDService::RequestHandle request_handle; 656 ChannelIDService::RequestHandle request_handle;
659 657
660 // Asynchronous completion with a cert in the store. 658 // Asynchronous completion with a cert in the store.
661 std::string private_key_info, der_cert; 659 std::string private_key_info, der_cert;
662 EXPECT_EQ(0, service_->cert_count()); 660 EXPECT_EQ(0, service_->cert_count());
(...skipping 14 matching lines...) Expand all
677 // created. 675 // created.
678 EXPECT_EQ(0u, service_->workers_created()); 676 EXPECT_EQ(0u, service_->workers_created());
679 EXPECT_STREQ("ab", private_key_info.c_str()); 677 EXPECT_STREQ("ab", private_key_info.c_str());
680 EXPECT_STREQ("cd", der_cert.c_str()); 678 EXPECT_STREQ("cd", der_cert.c_str());
681 EXPECT_FALSE(request_handle.is_active()); 679 EXPECT_FALSE(request_handle.is_active());
682 } 680 }
683 681
684 TEST_F(ChannelIDServiceTest, AsyncStoreGetOneCertInStore) { 682 TEST_F(ChannelIDServiceTest, AsyncStoreGetOneCertInStore) {
685 MockChannelIDStoreWithAsyncGet* mock_store = 683 MockChannelIDStoreWithAsyncGet* mock_store =
686 new MockChannelIDStoreWithAsyncGet(); 684 new MockChannelIDStoreWithAsyncGet();
687 service_ = scoped_ptr<ChannelIDService>(new ChannelIDService( 685 service_ = scoped_ptr<ChannelIDService>(
688 mock_store, base::MessageLoopProxy::current())); 686 new ChannelIDService(mock_store, base::ThreadTaskRunnerHandle::Get()));
689 687
690 std::string host("encrypted.google.com"); 688 std::string host("encrypted.google.com");
691 689
692 int error; 690 int error;
693 TestCompletionCallback callback; 691 TestCompletionCallback callback;
694 ChannelIDService::RequestHandle request_handle; 692 ChannelIDService::RequestHandle request_handle;
695 693
696 // Asynchronous completion with a cert in the store. 694 // Asynchronous completion with a cert in the store.
697 std::string private_key, der_cert; 695 std::string private_key, der_cert;
698 EXPECT_EQ(0, service_->cert_count()); 696 EXPECT_EQ(0, service_->cert_count());
(...skipping 13 matching lines...) Expand all
712 // Because the cert was found in the store, no new workers should have been 710 // Because the cert was found in the store, no new workers should have been
713 // created. 711 // created.
714 EXPECT_EQ(0u, service_->workers_created()); 712 EXPECT_EQ(0u, service_->workers_created());
715 EXPECT_STREQ("cd", der_cert.c_str()); 713 EXPECT_STREQ("cd", der_cert.c_str());
716 EXPECT_FALSE(request_handle.is_active()); 714 EXPECT_FALSE(request_handle.is_active());
717 } 715 }
718 716
719 TEST_F(ChannelIDServiceTest, AsyncStoreGetThenCreateNoCertsInStore) { 717 TEST_F(ChannelIDServiceTest, AsyncStoreGetThenCreateNoCertsInStore) {
720 MockChannelIDStoreWithAsyncGet* mock_store = 718 MockChannelIDStoreWithAsyncGet* mock_store =
721 new MockChannelIDStoreWithAsyncGet(); 719 new MockChannelIDStoreWithAsyncGet();
722 service_ = scoped_ptr<ChannelIDService>(new ChannelIDService( 720 service_ = scoped_ptr<ChannelIDService>(
723 mock_store, base::MessageLoopProxy::current())); 721 new ChannelIDService(mock_store, base::ThreadTaskRunnerHandle::Get()));
724 722
725 std::string host("encrypted.google.com"); 723 std::string host("encrypted.google.com");
726 724
727 int error; 725 int error;
728 726
729 // Asynchronous get with no certs in the store. 727 // Asynchronous get with no certs in the store.
730 TestCompletionCallback callback1; 728 TestCompletionCallback callback1;
731 ChannelIDService::RequestHandle request_handle1; 729 ChannelIDService::RequestHandle request_handle1;
732 std::string private_key1, der_cert1; 730 std::string private_key1, der_cert1;
733 EXPECT_EQ(0, service_->cert_count()); 731 EXPECT_EQ(0, service_->cert_count());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 EXPECT_EQ(der_cert1, der_cert2); 763 EXPECT_EQ(der_cert1, der_cert2);
766 EXPECT_FALSE(private_key1.empty()); 764 EXPECT_FALSE(private_key1.empty());
767 EXPECT_EQ(private_key1, private_key2); 765 EXPECT_EQ(private_key1, private_key2);
768 EXPECT_FALSE(request_handle1.is_active()); 766 EXPECT_FALSE(request_handle1.is_active());
769 EXPECT_FALSE(request_handle2.is_active()); 767 EXPECT_FALSE(request_handle2.is_active());
770 } 768 }
771 769
772 } // namespace 770 } // namespace
773 771
774 } // namespace net 772 } // namespace net
OLDNEW
« no previous file with comments | « net/ssl/channel_id_service.cc ('k') | net/ssl/ssl_cipher_suite_names.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698