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

Side by Side Diff: chrome/browser/browsing_data/browsing_data_server_bound_cert_helper_unittest.cc

Issue 17127002: Correctly integrate StoragePartition into TestingProfile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix InstantNTP test. Created 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/browsing_data/browsing_data_server_bound_cert_helper.h" 5 #include "chrome/browser/browsing_data/browsing_data_server_bound_cert_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/run_loop.h"
9 #include "base/synchronization/waitable_event.h"
10 #include "chrome/test/base/testing_profile.h" 9 #include "chrome/test/base/testing_profile.h"
11 #include "content/public/test/test_browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
11 #include "content/public/test/test_browser_thread_bundle.h"
12 #include "net/ssl/server_bound_cert_service.h" 12 #include "net/ssl/server_bound_cert_service.h"
13 #include "net/url_request/url_request_context.h" 13 #include "net/url_request/url_request_context.h"
14 #include "net/url_request/url_request_context_getter.h" 14 #include "net/url_request/url_request_context_getter.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 using content::BrowserThread; 17 using content::BrowserThread;
18 18
19 class BrowsingDataServerBoundCertHelperTest 19 class BrowsingDataServerBoundCertHelperTest
20 : public testing::Test, 20 : public testing::Test,
21 public net::SSLConfigService::Observer { 21 public net::SSLConfigService::Observer {
22 public: 22 public:
23 BrowsingDataServerBoundCertHelperTest() : ssl_config_changed_count_(0) { 23 BrowsingDataServerBoundCertHelperTest() : ssl_config_changed_count_(0) {
24 } 24 }
25 25
26 virtual void SetUp() OVERRIDE { 26 virtual void SetUp() OVERRIDE {
27 ui_thread_.reset(new content::TestBrowserThread(BrowserThread::UI,
28 &message_loop_));
29 io_thread_.reset(new content::TestBrowserThread(BrowserThread::IO,
30 &message_loop_));
31 testing_profile_.reset(new TestingProfile()); 27 testing_profile_.reset(new TestingProfile());
32 testing_profile_->CreateRequestContext();
33 28
34 testing_profile_->GetSSLConfigService()->AddObserver(this); 29 testing_profile_->GetSSLConfigService()->AddObserver(this);
35 } 30 }
36 31
37 virtual void TearDown() OVERRIDE { 32 virtual void TearDown() OVERRIDE {
38 testing_profile_->GetSSLConfigService()->RemoveObserver(this); 33 testing_profile_->GetSSLConfigService()->RemoveObserver(this);
39 } 34 }
40 35
41 void CreateCertsForTest() { 36 void CreateCertsForTest() {
42 net::URLRequestContext* context = 37 net::URLRequestContext* context =
43 testing_profile_->GetRequestContext()->GetURLRequestContext(); 38 testing_profile_->GetRequestContext()->GetURLRequestContext();
44 net::ServerBoundCertStore* cert_store = 39 net::ServerBoundCertStore* cert_store =
45 context->server_bound_cert_service()->GetCertStore(); 40 context->server_bound_cert_service()->GetCertStore();
46 cert_store->SetServerBoundCert("https://www.google.com:443", 41 cert_store->SetServerBoundCert("https://www.google.com:443",
47 net::CLIENT_CERT_RSA_SIGN, 42 net::CLIENT_CERT_RSA_SIGN,
48 base::Time(), base::Time(), 43 base::Time(), base::Time(),
49 "key", "cert"); 44 "key", "cert");
50 cert_store->SetServerBoundCert("https://www.youtube.com:443", 45 cert_store->SetServerBoundCert("https://www.youtube.com:443",
51 net::CLIENT_CERT_RSA_SIGN, 46 net::CLIENT_CERT_RSA_SIGN,
52 base::Time(), base::Time(), 47 base::Time(), base::Time(),
53 "key", "cert"); 48 "key", "cert");
54 } 49 }
55 50
56 void FetchCallback( 51 void FetchCallback(
57 const net::ServerBoundCertStore::ServerBoundCertList& certs) { 52 const net::ServerBoundCertStore::ServerBoundCertList& certs) {
58 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 53 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
59 server_bound_cert_list_ = certs; 54 server_bound_cert_list_ = certs;
60 base::MessageLoop::current()->Quit();
61 } 55 }
62 56
63 // net::SSLConfigService::Observer implementation: 57 // net::SSLConfigService::Observer implementation:
64 virtual void OnSSLConfigChanged() OVERRIDE { 58 virtual void OnSSLConfigChanged() OVERRIDE {
65 ssl_config_changed_count_++; 59 ssl_config_changed_count_++;
66 } 60 }
67 61
68 protected: 62 protected:
69 base::MessageLoop message_loop_; 63 content::TestBrowserThreadBundle thread_bundle_;
70 scoped_ptr<content::TestBrowserThread> ui_thread_;
71 scoped_ptr<content::TestBrowserThread> io_thread_;
72 scoped_ptr<TestingProfile> testing_profile_; 64 scoped_ptr<TestingProfile> testing_profile_;
73 65
74 net::ServerBoundCertStore::ServerBoundCertList server_bound_cert_list_; 66 net::ServerBoundCertStore::ServerBoundCertList server_bound_cert_list_;
75 67
76 int ssl_config_changed_count_; 68 int ssl_config_changed_count_;
77 }; 69 };
78 70
79 TEST_F(BrowsingDataServerBoundCertHelperTest, FetchData) { 71 TEST_F(BrowsingDataServerBoundCertHelperTest, FetchData) {
80 CreateCertsForTest(); 72 CreateCertsForTest();
81 scoped_refptr<BrowsingDataServerBoundCertHelper> helper( 73 scoped_refptr<BrowsingDataServerBoundCertHelper> helper(
82 BrowsingDataServerBoundCertHelper::Create(testing_profile_.get())); 74 BrowsingDataServerBoundCertHelper::Create(testing_profile_.get()));
83 75
84 helper->StartFetching( 76 helper->StartFetching(
85 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback, 77 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback,
86 base::Unretained(this))); 78 base::Unretained(this)));
87 79
88 // Blocks until BrowsingDataServerBoundCertHelperTest::FetchCallback is 80 // Blocks until BrowsingDataServerBoundCertHelperTest::FetchCallback is
89 // notified. 81 // notified.
90 base::MessageLoop::current()->Run(); 82 base::RunLoop().RunUntilIdle();
91 83
92 ASSERT_EQ(2UL, server_bound_cert_list_.size()); 84 ASSERT_EQ(2UL, server_bound_cert_list_.size());
93 net::ServerBoundCertStore::ServerBoundCertList::const_iterator it = 85 net::ServerBoundCertStore::ServerBoundCertList::const_iterator it =
94 server_bound_cert_list_.begin(); 86 server_bound_cert_list_.begin();
95 87
96 // Correct because fetching server_bound_cert_list_ will get them out in the 88 // Correct because fetching server_bound_cert_list_ will get them out in the
97 // same order CreateCertsForTest put them in. 89 // same order CreateCertsForTest put them in.
98 ASSERT_TRUE(it != server_bound_cert_list_.end()); 90 ASSERT_TRUE(it != server_bound_cert_list_.end());
99 EXPECT_EQ("https://www.google.com:443", it->server_identifier()); 91 EXPECT_EQ("https://www.google.com:443", it->server_identifier());
100 92
101 ASSERT_TRUE(++it != server_bound_cert_list_.end()); 93 ASSERT_TRUE(++it != server_bound_cert_list_.end());
102 EXPECT_EQ("https://www.youtube.com:443", it->server_identifier()); 94 EXPECT_EQ("https://www.youtube.com:443", it->server_identifier());
103 95
104 ASSERT_TRUE(++it == server_bound_cert_list_.end()); 96 ASSERT_TRUE(++it == server_bound_cert_list_.end());
105 97
106 EXPECT_EQ(0, ssl_config_changed_count_); 98 EXPECT_EQ(0, ssl_config_changed_count_);
107 } 99 }
108 100
109 TEST_F(BrowsingDataServerBoundCertHelperTest, DeleteCert) { 101 TEST_F(BrowsingDataServerBoundCertHelperTest, DeleteCert) {
110 CreateCertsForTest(); 102 CreateCertsForTest();
111 scoped_refptr<BrowsingDataServerBoundCertHelper> helper( 103 scoped_refptr<BrowsingDataServerBoundCertHelper> helper(
112 BrowsingDataServerBoundCertHelper::Create(testing_profile_.get())); 104 BrowsingDataServerBoundCertHelper::Create(testing_profile_.get()));
113 105
114 helper->DeleteServerBoundCert("https://www.google.com:443"); 106 helper->DeleteServerBoundCert("https://www.google.com:443");
115 107
116 helper->StartFetching( 108 helper->StartFetching(
117 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback, 109 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback,
118 base::Unretained(this))); 110 base::Unretained(this)));
119 base::MessageLoop::current()->Run(); 111 base::RunLoop().RunUntilIdle();
120 112
121 EXPECT_EQ(1, ssl_config_changed_count_); 113 EXPECT_EQ(1, ssl_config_changed_count_);
122 ASSERT_EQ(1UL, server_bound_cert_list_.size()); 114 ASSERT_EQ(1UL, server_bound_cert_list_.size());
123 net::ServerBoundCertStore::ServerBoundCertList::const_iterator it = 115 net::ServerBoundCertStore::ServerBoundCertList::const_iterator it =
124 server_bound_cert_list_.begin(); 116 server_bound_cert_list_.begin();
125 117
126 ASSERT_TRUE(it != server_bound_cert_list_.end()); 118 ASSERT_TRUE(it != server_bound_cert_list_.end());
127 EXPECT_EQ("https://www.youtube.com:443", it->server_identifier()); 119 EXPECT_EQ("https://www.youtube.com:443", it->server_identifier());
128 120
129 ASSERT_TRUE(++it == server_bound_cert_list_.end()); 121 ASSERT_TRUE(++it == server_bound_cert_list_.end());
130 122
131 helper->DeleteServerBoundCert("https://www.youtube.com:443"); 123 helper->DeleteServerBoundCert("https://www.youtube.com:443");
132 124
133 helper->StartFetching( 125 helper->StartFetching(
134 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback, 126 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback,
135 base::Unretained(this))); 127 base::Unretained(this)));
136 base::MessageLoop::current()->Run(); 128 base::RunLoop().RunUntilIdle();
129
137 EXPECT_EQ(2, ssl_config_changed_count_); 130 EXPECT_EQ(2, ssl_config_changed_count_);
138 ASSERT_EQ(0UL, server_bound_cert_list_.size()); 131 ASSERT_EQ(0UL, server_bound_cert_list_.size());
139 } 132 }
140 133
141 TEST_F(BrowsingDataServerBoundCertHelperTest, CannedUnique) { 134 TEST_F(BrowsingDataServerBoundCertHelperTest, CannedUnique) {
142 std::string origin = "https://www.google.com:443"; 135 std::string origin = "https://www.google.com:443";
143 136
144 scoped_refptr<CannedBrowsingDataServerBoundCertHelper> helper( 137 scoped_refptr<CannedBrowsingDataServerBoundCertHelper> helper(
145 new CannedBrowsingDataServerBoundCertHelper()); 138 new CannedBrowsingDataServerBoundCertHelper());
146 139
147 ASSERT_TRUE(helper->empty()); 140 ASSERT_TRUE(helper->empty());
148 helper->AddServerBoundCert(net::ServerBoundCertStore::ServerBoundCert( 141 helper->AddServerBoundCert(net::ServerBoundCertStore::ServerBoundCert(
149 origin, net::CLIENT_CERT_RSA_SIGN, base::Time(), base::Time(), "key", 142 origin, net::CLIENT_CERT_RSA_SIGN, base::Time(), base::Time(), "key",
150 "cert")); 143 "cert"));
151 helper->AddServerBoundCert(net::ServerBoundCertStore::ServerBoundCert( 144 helper->AddServerBoundCert(net::ServerBoundCertStore::ServerBoundCert(
152 origin, net::CLIENT_CERT_ECDSA_SIGN, base::Time(), base::Time(), "key", 145 origin, net::CLIENT_CERT_ECDSA_SIGN, base::Time(), base::Time(), "key",
153 "cert")); 146 "cert"));
154 147
155 helper->StartFetching( 148 helper->StartFetching(
156 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback, 149 base::Bind(&BrowsingDataServerBoundCertHelperTest::FetchCallback,
157 base::Unretained(this))); 150 base::Unretained(this)));
158 base::MessageLoop::current()->Run(); 151 base::RunLoop().RunUntilIdle();
159 152
160 ASSERT_EQ(1UL, server_bound_cert_list_.size()); 153 ASSERT_EQ(1UL, server_bound_cert_list_.size());
161 net::ServerBoundCertStore::ServerBoundCert& cert = 154 net::ServerBoundCertStore::ServerBoundCert& cert =
162 server_bound_cert_list_.front(); 155 server_bound_cert_list_.front();
163 156
164 EXPECT_EQ("https://www.google.com:443", cert.server_identifier()); 157 EXPECT_EQ("https://www.google.com:443", cert.server_identifier());
165 EXPECT_EQ(net::CLIENT_CERT_ECDSA_SIGN, cert.type()); 158 EXPECT_EQ(net::CLIENT_CERT_ECDSA_SIGN, cert.type());
166 EXPECT_EQ(0, ssl_config_changed_count_); 159 EXPECT_EQ(0, ssl_config_changed_count_);
167 } 160 }
168 161
169 TEST_F(BrowsingDataServerBoundCertHelperTest, CannedEmpty) { 162 TEST_F(BrowsingDataServerBoundCertHelperTest, CannedEmpty) {
170 std::string origin = "https://www.google.com"; 163 std::string origin = "https://www.google.com";
171 164
172 scoped_refptr<CannedBrowsingDataServerBoundCertHelper> helper( 165 scoped_refptr<CannedBrowsingDataServerBoundCertHelper> helper(
173 new CannedBrowsingDataServerBoundCertHelper()); 166 new CannedBrowsingDataServerBoundCertHelper());
174 167
175 ASSERT_TRUE(helper->empty()); 168 ASSERT_TRUE(helper->empty());
176 helper->AddServerBoundCert(net::ServerBoundCertStore::ServerBoundCert( 169 helper->AddServerBoundCert(net::ServerBoundCertStore::ServerBoundCert(
177 origin, net::CLIENT_CERT_RSA_SIGN, base::Time(), base::Time(), "key", 170 origin, net::CLIENT_CERT_RSA_SIGN, base::Time(), base::Time(), "key",
178 "cert")); 171 "cert"));
179 ASSERT_FALSE(helper->empty()); 172 ASSERT_FALSE(helper->empty());
180 helper->Reset(); 173 helper->Reset();
181 ASSERT_TRUE(helper->empty()); 174 ASSERT_TRUE(helper->empty());
182 } 175 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698