OLD | NEW |
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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
7 #include "base/synchronization/waitable_event.h" | 7 #include "base/synchronization/waitable_event.h" |
8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
9 #include "chrome/browser/ssl/ssl_client_auth_requestor_mock.h" | 9 #include "chrome/browser/ssl/ssl_client_auth_requestor_mock.h" |
10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 // SSLClientAuthHandler. | 35 // SSLClientAuthHandler. |
36 | 36 |
37 class SSLClientCertificateSelectorTest : public InProcessBrowserTest { | 37 class SSLClientCertificateSelectorTest : public InProcessBrowserTest { |
38 public: | 38 public: |
39 SSLClientCertificateSelectorTest() | 39 SSLClientCertificateSelectorTest() |
40 : io_loop_finished_event_(false, false), | 40 : io_loop_finished_event_(false, false), |
41 url_request_(NULL), | 41 url_request_(NULL), |
42 selector_(NULL) { | 42 selector_(NULL) { |
43 } | 43 } |
44 | 44 |
45 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 45 virtual void SetUpInProcessBrowserTestFixture() override { |
46 base::FilePath certs_dir = net::GetTestCertsDirectory(); | 46 base::FilePath certs_dir = net::GetTestCertsDirectory(); |
47 | 47 |
48 mit_davidben_cert_ = net::ImportCertFromFile(certs_dir, "mit.davidben.der"); | 48 mit_davidben_cert_ = net::ImportCertFromFile(certs_dir, "mit.davidben.der"); |
49 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), | 49 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), |
50 mit_davidben_cert_.get()); | 50 mit_davidben_cert_.get()); |
51 | 51 |
52 foaf_me_chromium_test_cert_ = net::ImportCertFromFile( | 52 foaf_me_chromium_test_cert_ = net::ImportCertFromFile( |
53 certs_dir, "foaf.me.chromium-test-cert.der"); | 53 certs_dir, "foaf.me.chromium-test-cert.der"); |
54 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), | 54 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), |
55 foaf_me_chromium_test_cert_.get()); | 55 foaf_me_chromium_test_cert_.get()); |
56 | 56 |
57 cert_request_info_ = new net::SSLCertRequestInfo; | 57 cert_request_info_ = new net::SSLCertRequestInfo; |
58 cert_request_info_->host_and_port = net::HostPortPair("foo", 123); | 58 cert_request_info_->host_and_port = net::HostPortPair("foo", 123); |
59 cert_request_info_->client_certs.push_back(mit_davidben_cert_); | 59 cert_request_info_->client_certs.push_back(mit_davidben_cert_); |
60 cert_request_info_->client_certs.push_back(foaf_me_chromium_test_cert_); | 60 cert_request_info_->client_certs.push_back(foaf_me_chromium_test_cert_); |
61 } | 61 } |
62 | 62 |
63 virtual void SetUpOnMainThread() OVERRIDE { | 63 virtual void SetUpOnMainThread() override { |
64 url_request_context_getter_ = browser()->profile()->GetRequestContext(); | 64 url_request_context_getter_ = browser()->profile()->GetRequestContext(); |
65 | 65 |
66 BrowserThread::PostTask( | 66 BrowserThread::PostTask( |
67 BrowserThread::IO, FROM_HERE, | 67 BrowserThread::IO, FROM_HERE, |
68 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this)); | 68 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this)); |
69 | 69 |
70 io_loop_finished_event_.Wait(); | 70 io_loop_finished_event_.Wait(); |
71 | 71 |
72 content::WaitForLoadStop( | 72 content::WaitForLoadStop( |
73 browser()->tab_strip_model()->GetActiveWebContents()); | 73 browser()->tab_strip_model()->GetActiveWebContents()); |
(...skipping 13 matching lines...) Expand all Loading... |
87 | 87 |
88 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>( | 88 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>( |
89 url_request_, | 89 url_request_, |
90 cert_request_info_); | 90 cert_request_info_); |
91 | 91 |
92 io_loop_finished_event_.Signal(); | 92 io_loop_finished_event_.Signal(); |
93 } | 93 } |
94 | 94 |
95 // Have to release our reference to the auth handler during the test to allow | 95 // Have to release our reference to the auth handler during the test to allow |
96 // it to be destroyed while the Browser and its IO thread still exist. | 96 // it to be destroyed while the Browser and its IO thread still exist. |
97 virtual void TearDownOnMainThread() OVERRIDE { | 97 virtual void TearDownOnMainThread() override { |
98 BrowserThread::PostTask( | 98 BrowserThread::PostTask( |
99 BrowserThread::IO, FROM_HERE, | 99 BrowserThread::IO, FROM_HERE, |
100 base::Bind(&SSLClientCertificateSelectorTest::CleanUpOnIOThread, this)); | 100 base::Bind(&SSLClientCertificateSelectorTest::CleanUpOnIOThread, this)); |
101 | 101 |
102 io_loop_finished_event_.Wait(); | 102 io_loop_finished_event_.Wait(); |
103 | 103 |
104 auth_requestor_ = NULL; | 104 auth_requestor_ = NULL; |
105 } | 105 } |
106 | 106 |
107 virtual void CleanUpOnIOThread() { | 107 virtual void CleanUpOnIOThread() { |
(...skipping 18 matching lines...) Expand all Loading... |
126 scoped_refptr<net::X509Certificate> foaf_me_chromium_test_cert_; | 126 scoped_refptr<net::X509Certificate> foaf_me_chromium_test_cert_; |
127 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; | 127 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; |
128 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_; | 128 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_; |
129 // The selector will be deleted when a cert is selected or the tab is closed. | 129 // The selector will be deleted when a cert is selected or the tab is closed. |
130 SSLClientCertificateSelector* selector_; | 130 SSLClientCertificateSelector* selector_; |
131 }; | 131 }; |
132 | 132 |
133 class SSLClientCertificateSelectorMultiTabTest | 133 class SSLClientCertificateSelectorMultiTabTest |
134 : public SSLClientCertificateSelectorTest { | 134 : public SSLClientCertificateSelectorTest { |
135 public: | 135 public: |
136 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 136 virtual void SetUpInProcessBrowserTestFixture() override { |
137 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); | 137 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); |
138 | 138 |
139 cert_request_info_1_ = new net::SSLCertRequestInfo; | 139 cert_request_info_1_ = new net::SSLCertRequestInfo; |
140 cert_request_info_1_->host_and_port = net::HostPortPair("bar", 123); | 140 cert_request_info_1_->host_and_port = net::HostPortPair("bar", 123); |
141 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); | 141 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); |
142 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); | 142 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); |
143 | 143 |
144 cert_request_info_2_ = new net::SSLCertRequestInfo; | 144 cert_request_info_2_ = new net::SSLCertRequestInfo; |
145 cert_request_info_2_->host_and_port = net::HostPortPair("bar", 123); | 145 cert_request_info_2_->host_and_port = net::HostPortPair("bar", 123); |
146 cert_request_info_2_->client_certs.push_back(mit_davidben_cert_); | 146 cert_request_info_2_->client_certs.push_back(mit_davidben_cert_); |
147 cert_request_info_2_->client_certs.push_back(foaf_me_chromium_test_cert_); | 147 cert_request_info_2_->client_certs.push_back(foaf_me_chromium_test_cert_); |
148 } | 148 } |
149 | 149 |
150 virtual void SetUpOnMainThread() OVERRIDE { | 150 virtual void SetUpOnMainThread() override { |
151 // Also calls SetUpOnIOThread. | 151 // Also calls SetUpOnIOThread. |
152 SSLClientCertificateSelectorTest::SetUpOnMainThread(); | 152 SSLClientCertificateSelectorTest::SetUpOnMainThread(); |
153 | 153 |
154 AddTabAtIndex(1, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); | 154 AddTabAtIndex(1, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); |
155 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); | 155 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); |
156 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0)); | 156 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0)); |
157 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1)); | 157 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1)); |
158 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2)); | 158 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2)); |
159 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1)); | 159 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1)); |
160 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2)); | 160 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2)); |
(...skipping 11 matching lines...) Expand all Loading... |
172 auth_requestor_2_->cert_request_info_, | 172 auth_requestor_2_->cert_request_info_, |
173 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 173 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
174 auth_requestor_2_)); | 174 auth_requestor_2_)); |
175 selector_2_->Init(); | 175 selector_2_->Init(); |
176 | 176 |
177 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 177 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
178 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 178 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); |
179 EXPECT_EQ(mit_davidben_cert_.get(), selector_2_->GetSelectedCert()); | 179 EXPECT_EQ(mit_davidben_cert_.get(), selector_2_->GetSelectedCert()); |
180 } | 180 } |
181 | 181 |
182 virtual void SetUpOnIOThread() OVERRIDE { | 182 virtual void SetUpOnIOThread() override { |
183 url_request_1_ = | 183 url_request_1_ = |
184 MakeURLRequest(url_request_context_getter_.get()).release(); | 184 MakeURLRequest(url_request_context_getter_.get()).release(); |
185 url_request_2_ = | 185 url_request_2_ = |
186 MakeURLRequest(url_request_context_getter_.get()).release(); | 186 MakeURLRequest(url_request_context_getter_.get()).release(); |
187 | 187 |
188 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( | 188 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( |
189 url_request_1_, | 189 url_request_1_, |
190 cert_request_info_1_); | 190 cert_request_info_1_); |
191 auth_requestor_2_ = new StrictMock<SSLClientAuthRequestorMock>( | 191 auth_requestor_2_ = new StrictMock<SSLClientAuthRequestorMock>( |
192 url_request_2_, | 192 url_request_2_, |
193 cert_request_info_2_); | 193 cert_request_info_2_); |
194 | 194 |
195 SSLClientCertificateSelectorTest::SetUpOnIOThread(); | 195 SSLClientCertificateSelectorTest::SetUpOnIOThread(); |
196 } | 196 } |
197 | 197 |
198 virtual void TearDownOnMainThread() OVERRIDE { | 198 virtual void TearDownOnMainThread() override { |
199 auth_requestor_2_ = NULL; | 199 auth_requestor_2_ = NULL; |
200 auth_requestor_1_ = NULL; | 200 auth_requestor_1_ = NULL; |
201 SSLClientCertificateSelectorTest::TearDownOnMainThread(); | 201 SSLClientCertificateSelectorTest::TearDownOnMainThread(); |
202 } | 202 } |
203 | 203 |
204 virtual void CleanUpOnIOThread() OVERRIDE { | 204 virtual void CleanUpOnIOThread() override { |
205 delete url_request_1_; | 205 delete url_request_1_; |
206 delete url_request_2_; | 206 delete url_request_2_; |
207 SSLClientCertificateSelectorTest::CleanUpOnIOThread(); | 207 SSLClientCertificateSelectorTest::CleanUpOnIOThread(); |
208 } | 208 } |
209 | 209 |
210 protected: | 210 protected: |
211 net::URLRequest* url_request_1_; | 211 net::URLRequest* url_request_1_; |
212 net::URLRequest* url_request_2_; | 212 net::URLRequest* url_request_2_; |
213 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_1_; | 213 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_1_; |
214 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_2_; | 214 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_2_; |
215 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_1_; | 215 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_1_; |
216 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_2_; | 216 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_2_; |
217 SSLClientCertificateSelector* selector_1_; | 217 SSLClientCertificateSelector* selector_1_; |
218 SSLClientCertificateSelector* selector_2_; | 218 SSLClientCertificateSelector* selector_2_; |
219 }; | 219 }; |
220 | 220 |
221 class SSLClientCertificateSelectorMultiProfileTest | 221 class SSLClientCertificateSelectorMultiProfileTest |
222 : public SSLClientCertificateSelectorTest { | 222 : public SSLClientCertificateSelectorTest { |
223 public: | 223 public: |
224 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 224 virtual void SetUpInProcessBrowserTestFixture() override { |
225 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); | 225 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); |
226 | 226 |
227 cert_request_info_1_ = new net::SSLCertRequestInfo; | 227 cert_request_info_1_ = new net::SSLCertRequestInfo; |
228 cert_request_info_1_->host_and_port = net::HostPortPair("foo", 123); | 228 cert_request_info_1_->host_and_port = net::HostPortPair("foo", 123); |
229 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); | 229 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); |
230 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); | 230 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); |
231 } | 231 } |
232 | 232 |
233 virtual void SetUpOnMainThread() OVERRIDE { | 233 virtual void SetUpOnMainThread() override { |
234 browser_1_ = CreateIncognitoBrowser(); | 234 browser_1_ = CreateIncognitoBrowser(); |
235 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext(); | 235 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext(); |
236 | 236 |
237 // Also calls SetUpOnIOThread. | 237 // Also calls SetUpOnIOThread. |
238 SSLClientCertificateSelectorTest::SetUpOnMainThread(); | 238 SSLClientCertificateSelectorTest::SetUpOnMainThread(); |
239 | 239 |
240 selector_1_ = new SSLClientCertificateSelector( | 240 selector_1_ = new SSLClientCertificateSelector( |
241 browser_1_->tab_strip_model()->GetActiveWebContents(), | 241 browser_1_->tab_strip_model()->GetActiveWebContents(), |
242 auth_requestor_1_->http_network_session_, | 242 auth_requestor_1_->http_network_session_, |
243 auth_requestor_1_->cert_request_info_, | 243 auth_requestor_1_->cert_request_info_, |
244 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 244 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
245 auth_requestor_1_)); | 245 auth_requestor_1_)); |
246 selector_1_->Init(); | 246 selector_1_->Init(); |
247 | 247 |
248 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 248 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); |
249 } | 249 } |
250 | 250 |
251 virtual void SetUpOnIOThread() OVERRIDE { | 251 virtual void SetUpOnIOThread() override { |
252 url_request_1_ = | 252 url_request_1_ = |
253 MakeURLRequest(url_request_context_getter_1_.get()).release(); | 253 MakeURLRequest(url_request_context_getter_1_.get()).release(); |
254 | 254 |
255 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( | 255 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( |
256 url_request_1_, | 256 url_request_1_, |
257 cert_request_info_1_); | 257 cert_request_info_1_); |
258 | 258 |
259 SSLClientCertificateSelectorTest::SetUpOnIOThread(); | 259 SSLClientCertificateSelectorTest::SetUpOnIOThread(); |
260 } | 260 } |
261 | 261 |
262 virtual void TearDownOnMainThread() OVERRIDE { | 262 virtual void TearDownOnMainThread() override { |
263 auth_requestor_1_ = NULL; | 263 auth_requestor_1_ = NULL; |
264 SSLClientCertificateSelectorTest::TearDownOnMainThread(); | 264 SSLClientCertificateSelectorTest::TearDownOnMainThread(); |
265 } | 265 } |
266 | 266 |
267 virtual void CleanUpOnIOThread() OVERRIDE { | 267 virtual void CleanUpOnIOThread() override { |
268 delete url_request_1_; | 268 delete url_request_1_; |
269 SSLClientCertificateSelectorTest::CleanUpOnIOThread(); | 269 SSLClientCertificateSelectorTest::CleanUpOnIOThread(); |
270 } | 270 } |
271 | 271 |
272 protected: | 272 protected: |
273 Browser* browser_1_; | 273 Browser* browser_1_; |
274 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_1_; | 274 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_1_; |
275 net::URLRequest* url_request_1_; | 275 net::URLRequest* url_request_1_; |
276 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_1_; | 276 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_1_; |
277 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_1_; | 277 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_1_; |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 390 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
391 browser_1_, ui::VKEY_RETURN, false, false, false, false)); | 391 browser_1_, ui::VKEY_RETURN, false, false, false, false)); |
392 | 392 |
393 Mock::VerifyAndClear(auth_requestor_.get()); | 393 Mock::VerifyAndClear(auth_requestor_.get()); |
394 Mock::VerifyAndClear(auth_requestor_1_.get()); | 394 Mock::VerifyAndClear(auth_requestor_1_.get()); |
395 | 395 |
396 // Now let the default selection for auth_requestor_ mock get checked on | 396 // Now let the default selection for auth_requestor_ mock get checked on |
397 // destruction. | 397 // destruction. |
398 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 398 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
399 } | 399 } |
OLD | NEW |