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" |
11 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 11 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
12 #include "chrome/browser/ui/views/ssl_client_certificate_selector.h" | 12 #include "chrome/browser/ui/views/ssl_client_certificate_selector.h" |
13 #include "chrome/test/base/in_process_browser_test.h" | 13 #include "chrome/test/base/in_process_browser_test.h" |
14 #include "chrome/test/base/interactive_test_utils.h" | 14 #include "chrome/test/base/interactive_test_utils.h" |
15 #include "chrome/test/base/ui_test_utils.h" | 15 #include "chrome/test/base/ui_test_utils.h" |
16 #include "content/public/browser/web_contents.h" | 16 #include "content/public/browser/web_contents.h" |
17 #include "content/public/test/browser_test_utils.h" | 17 #include "content/public/test/browser_test_utils.h" |
18 #include "net/base/request_priority.h" | 18 #include "net/base/request_priority.h" |
19 #include "net/base/test_data_directory.h" | 19 #include "net/base/test_data_directory.h" |
20 #include "net/cert/x509_certificate.h" | 20 #include "net/cert/x509_certificate.h" |
21 #include "net/http/http_transaction_factory.h" | 21 #include "net/http/http_transaction_factory.h" |
22 #include "net/ssl/ssl_cert_request_info.h" | 22 #include "net/ssl/ssl_cert_request_info.h" |
23 #include "net/test/cert_test_util.h" | 23 #include "net/test/cert_test_util.h" |
24 #include "net/url_request/url_request.h" | 24 #include "net/url_request/url_request.h" |
25 #include "net/url_request/url_request_context.h" | 25 #include "net/url_request/url_request_context.h" |
26 #include "net/url_request/url_request_context_getter.h" | 26 #include "net/url_request/url_request_context_getter.h" |
27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
28 | 28 |
29 #if defined(USE_NSS) | |
30 #include "crypto/scoped_test_nss_db.h" | |
31 #endif | |
32 | |
29 using ::testing::Mock; | 33 using ::testing::Mock; |
30 using ::testing::StrictMock; | 34 using ::testing::StrictMock; |
31 using content::BrowserThread; | 35 using content::BrowserThread; |
32 | 36 |
33 // We don't have a way to do end-to-end SSL client auth testing, so this test | 37 // We don't have a way to do end-to-end SSL client auth testing, so this test |
34 // creates a certificate selector_ manually with a mocked | 38 // creates a certificate selector_ manually with a mocked |
35 // SSLClientAuthHandler. | 39 // SSLClientAuthHandler. |
36 | 40 |
37 class SSLClientCertificateSelectorTest : public InProcessBrowserTest { | 41 class SSLClientCertificateSelectorTest : public InProcessBrowserTest { |
38 public: | 42 public: |
39 SSLClientCertificateSelectorTest() | 43 SSLClientCertificateSelectorTest() |
40 : io_loop_finished_event_(false, false), | 44 : io_loop_finished_event_(false, false), |
41 url_request_(NULL), | 45 url_request_(NULL), |
42 selector_(NULL) { | 46 selector_(NULL) { |
43 } | 47 } |
44 | 48 |
45 void SetUpInProcessBrowserTestFixture() override { | 49 void SetUpInProcessBrowserTestFixture() override { |
46 base::FilePath certs_dir = net::GetTestCertsDirectory(); | 50 base::FilePath certs_dir = net::GetTestCertsDirectory(); |
47 | 51 |
48 mit_davidben_cert_ = net::ImportCertFromFile(certs_dir, "mit.davidben.der"); | 52 #if defined(USE_NSS) |
davidben
2015/02/19 20:54:20
Nit: maybe a comment for why we import the key her
pneubeck (no reviews)
2015/02/20 09:54:00
Done.
| |
49 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), | 53 ASSERT_TRUE(test_nssdb_.is_open()); |
50 mit_davidben_cert_.get()); | 54 client_cert_1_ = net::ImportClientCertAndKeyFromFile( |
51 | 55 certs_dir, "client_1.pem", "client_1.pk8", test_nssdb_.slot()); |
52 foaf_me_chromium_test_cert_ = net::ImportCertFromFile( | 56 client_cert_2_ = net::ImportClientCertAndKeyFromFile( |
53 certs_dir, "foaf.me.chromium-test-cert.der"); | 57 certs_dir, "client_2.pem", "client_2.pk8", test_nssdb_.slot()); |
54 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), | 58 #else |
55 foaf_me_chromium_test_cert_.get()); | 59 client_cert_1_ = net::ImportCertFromFile(certs_dir, "client_1.pem"); |
60 client_cert_2_ = net::ImportCertFromFile(certs_dir, "client_2.pem"); | |
61 #endif | |
62 ASSERT_NE(nullptr, client_cert_1_.get()); | |
63 ASSERT_NE(nullptr, client_cert_2_.get()); | |
56 | 64 |
57 cert_request_info_ = new net::SSLCertRequestInfo; | 65 cert_request_info_ = new net::SSLCertRequestInfo; |
58 cert_request_info_->host_and_port = net::HostPortPair("foo", 123); | 66 cert_request_info_->host_and_port = net::HostPortPair("foo", 123); |
59 cert_request_info_->client_certs.push_back(mit_davidben_cert_); | 67 cert_request_info_->client_certs.push_back(client_cert_1_); |
60 cert_request_info_->client_certs.push_back(foaf_me_chromium_test_cert_); | 68 cert_request_info_->client_certs.push_back(client_cert_2_); |
61 } | 69 } |
62 | 70 |
63 void SetUpOnMainThread() override { | 71 void SetUpOnMainThread() override { |
64 url_request_context_getter_ = browser()->profile()->GetRequestContext(); | 72 url_request_context_getter_ = browser()->profile()->GetRequestContext(); |
65 | 73 |
66 BrowserThread::PostTask( | 74 BrowserThread::PostTask( |
67 BrowserThread::IO, FROM_HERE, | 75 BrowserThread::IO, FROM_HERE, |
68 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this)); | 76 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this)); |
69 | 77 |
70 io_loop_finished_event_.Wait(); | 78 io_loop_finished_event_.Wait(); |
71 | 79 |
72 content::WaitForLoadStop( | 80 content::WaitForLoadStop( |
73 browser()->tab_strip_model()->GetActiveWebContents()); | 81 browser()->tab_strip_model()->GetActiveWebContents()); |
74 selector_ = new SSLClientCertificateSelector( | 82 selector_ = new SSLClientCertificateSelector( |
75 browser()->tab_strip_model()->GetActiveWebContents(), | 83 browser()->tab_strip_model()->GetActiveWebContents(), |
76 auth_requestor_->cert_request_info_, | 84 auth_requestor_->cert_request_info_, |
77 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 85 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
78 auth_requestor_)); | 86 auth_requestor_)); |
79 selector_->Init(); | 87 selector_->Init(); |
80 | 88 |
81 EXPECT_EQ(mit_davidben_cert_.get(), selector_->GetSelectedCert()); | 89 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert()); |
82 } | 90 } |
83 | 91 |
84 virtual void SetUpOnIOThread() { | 92 virtual void SetUpOnIOThread() { |
85 url_request_ = MakeURLRequest(url_request_context_getter_.get()).release(); | 93 url_request_ = MakeURLRequest(url_request_context_getter_.get()).release(); |
86 | 94 |
87 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>( | 95 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>( |
88 url_request_, | 96 url_request_, |
89 cert_request_info_); | 97 cert_request_info_); |
90 | 98 |
91 io_loop_finished_event_.Signal(); | 99 io_loop_finished_event_.Signal(); |
(...skipping 22 matching lines...) Expand all Loading... | |
114 net::URLRequestContextGetter* context_getter) { | 122 net::URLRequestContextGetter* context_getter) { |
115 return context_getter->GetURLRequestContext()->CreateRequest( | 123 return context_getter->GetURLRequestContext()->CreateRequest( |
116 GURL("https://example"), net::DEFAULT_PRIORITY, NULL, NULL); | 124 GURL("https://example"), net::DEFAULT_PRIORITY, NULL, NULL); |
117 } | 125 } |
118 | 126 |
119 base::WaitableEvent io_loop_finished_event_; | 127 base::WaitableEvent io_loop_finished_event_; |
120 | 128 |
121 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; | 129 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; |
122 net::URLRequest* url_request_; | 130 net::URLRequest* url_request_; |
123 | 131 |
124 scoped_refptr<net::X509Certificate> mit_davidben_cert_; | 132 scoped_refptr<net::X509Certificate> client_cert_1_; |
125 scoped_refptr<net::X509Certificate> foaf_me_chromium_test_cert_; | 133 scoped_refptr<net::X509Certificate> client_cert_2_; |
126 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; | 134 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; |
127 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_; | 135 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_; |
128 // The selector will be deleted when a cert is selected or the tab is closed. | 136 // The selector will be deleted when a cert is selected or the tab is closed. |
129 SSLClientCertificateSelector* selector_; | 137 SSLClientCertificateSelector* selector_; |
138 #if defined(USE_NSS) | |
139 crypto::ScopedTestNSSDB test_nssdb_; | |
140 #endif | |
130 }; | 141 }; |
131 | 142 |
132 class SSLClientCertificateSelectorMultiTabTest | 143 class SSLClientCertificateSelectorMultiTabTest |
133 : public SSLClientCertificateSelectorTest { | 144 : public SSLClientCertificateSelectorTest { |
134 public: | 145 public: |
135 void SetUpInProcessBrowserTestFixture() override { | 146 void SetUpInProcessBrowserTestFixture() override { |
136 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); | 147 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); |
137 | 148 |
138 cert_request_info_1_ = new net::SSLCertRequestInfo; | 149 cert_request_info_1_ = new net::SSLCertRequestInfo; |
139 cert_request_info_1_->host_and_port = net::HostPortPair("bar", 123); | 150 cert_request_info_1_->host_and_port = net::HostPortPair("bar", 123); |
140 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); | 151 cert_request_info_1_->client_certs.push_back(client_cert_1_); |
141 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); | 152 cert_request_info_1_->client_certs.push_back(client_cert_2_); |
142 | 153 |
143 cert_request_info_2_ = new net::SSLCertRequestInfo; | 154 cert_request_info_2_ = new net::SSLCertRequestInfo; |
144 cert_request_info_2_->host_and_port = net::HostPortPair("bar", 123); | 155 cert_request_info_2_->host_and_port = net::HostPortPair("bar", 123); |
145 cert_request_info_2_->client_certs.push_back(mit_davidben_cert_); | 156 cert_request_info_2_->client_certs.push_back(client_cert_1_); |
146 cert_request_info_2_->client_certs.push_back(foaf_me_chromium_test_cert_); | 157 cert_request_info_2_->client_certs.push_back(client_cert_2_); |
147 } | 158 } |
148 | 159 |
149 void SetUpOnMainThread() override { | 160 void SetUpOnMainThread() override { |
150 // Also calls SetUpOnIOThread. | 161 // Also calls SetUpOnIOThread. |
151 SSLClientCertificateSelectorTest::SetUpOnMainThread(); | 162 SSLClientCertificateSelectorTest::SetUpOnMainThread(); |
152 | 163 |
153 AddTabAtIndex(1, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); | 164 AddTabAtIndex(1, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); |
154 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); | 165 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); |
155 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0)); | 166 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0)); |
156 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1)); | 167 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1)); |
157 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2)); | 168 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2)); |
158 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1)); | 169 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1)); |
159 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2)); | 170 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2)); |
160 | 171 |
161 selector_1_ = new SSLClientCertificateSelector( | 172 selector_1_ = new SSLClientCertificateSelector( |
162 browser()->tab_strip_model()->GetWebContentsAt(1), | 173 browser()->tab_strip_model()->GetWebContentsAt(1), |
163 auth_requestor_1_->cert_request_info_, | 174 auth_requestor_1_->cert_request_info_, |
164 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 175 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
165 auth_requestor_1_)); | 176 auth_requestor_1_)); |
166 selector_1_->Init(); | 177 selector_1_->Init(); |
167 selector_2_ = new SSLClientCertificateSelector( | 178 selector_2_ = new SSLClientCertificateSelector( |
168 browser()->tab_strip_model()->GetWebContentsAt(2), | 179 browser()->tab_strip_model()->GetWebContentsAt(2), |
169 auth_requestor_2_->cert_request_info_, | 180 auth_requestor_2_->cert_request_info_, |
170 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 181 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
171 auth_requestor_2_)); | 182 auth_requestor_2_)); |
172 selector_2_->Init(); | 183 selector_2_->Init(); |
173 | 184 |
174 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 185 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
175 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 186 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); |
176 EXPECT_EQ(mit_davidben_cert_.get(), selector_2_->GetSelectedCert()); | 187 EXPECT_EQ(client_cert_1_.get(), selector_2_->GetSelectedCert()); |
177 } | 188 } |
178 | 189 |
179 void SetUpOnIOThread() override { | 190 void SetUpOnIOThread() override { |
180 url_request_1_ = | 191 url_request_1_ = |
181 MakeURLRequest(url_request_context_getter_.get()).release(); | 192 MakeURLRequest(url_request_context_getter_.get()).release(); |
182 url_request_2_ = | 193 url_request_2_ = |
183 MakeURLRequest(url_request_context_getter_.get()).release(); | 194 MakeURLRequest(url_request_context_getter_.get()).release(); |
184 | 195 |
185 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( | 196 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( |
186 url_request_1_, | 197 url_request_1_, |
(...skipping 29 matching lines...) Expand all Loading... | |
216 }; | 227 }; |
217 | 228 |
218 class SSLClientCertificateSelectorMultiProfileTest | 229 class SSLClientCertificateSelectorMultiProfileTest |
219 : public SSLClientCertificateSelectorTest { | 230 : public SSLClientCertificateSelectorTest { |
220 public: | 231 public: |
221 void SetUpInProcessBrowserTestFixture() override { | 232 void SetUpInProcessBrowserTestFixture() override { |
222 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); | 233 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); |
223 | 234 |
224 cert_request_info_1_ = new net::SSLCertRequestInfo; | 235 cert_request_info_1_ = new net::SSLCertRequestInfo; |
225 cert_request_info_1_->host_and_port = net::HostPortPair("foo", 123); | 236 cert_request_info_1_->host_and_port = net::HostPortPair("foo", 123); |
226 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); | 237 cert_request_info_1_->client_certs.push_back(client_cert_1_); |
227 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); | 238 cert_request_info_1_->client_certs.push_back(client_cert_2_); |
228 } | 239 } |
229 | 240 |
230 void SetUpOnMainThread() override { | 241 void SetUpOnMainThread() override { |
231 browser_1_ = CreateIncognitoBrowser(); | 242 browser_1_ = CreateIncognitoBrowser(); |
232 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext(); | 243 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext(); |
233 | 244 |
234 // Also calls SetUpOnIOThread. | 245 // Also calls SetUpOnIOThread. |
235 SSLClientCertificateSelectorTest::SetUpOnMainThread(); | 246 SSLClientCertificateSelectorTest::SetUpOnMainThread(); |
236 | 247 |
237 selector_1_ = new SSLClientCertificateSelector( | 248 selector_1_ = new SSLClientCertificateSelector( |
238 browser_1_->tab_strip_model()->GetActiveWebContents(), | 249 browser_1_->tab_strip_model()->GetActiveWebContents(), |
239 auth_requestor_1_->cert_request_info_, | 250 auth_requestor_1_->cert_request_info_, |
240 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 251 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
241 auth_requestor_1_)); | 252 auth_requestor_1_)); |
242 selector_1_->Init(); | 253 selector_1_->Init(); |
243 | 254 |
244 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 255 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); |
245 } | 256 } |
246 | 257 |
247 void SetUpOnIOThread() override { | 258 void SetUpOnIOThread() override { |
248 url_request_1_ = | 259 url_request_1_ = |
249 MakeURLRequest(url_request_context_getter_1_.get()).release(); | 260 MakeURLRequest(url_request_context_getter_1_.get()).release(); |
250 | 261 |
251 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( | 262 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( |
252 url_request_1_, | 263 url_request_1_, |
253 cert_request_info_1_); | 264 cert_request_info_1_); |
254 | 265 |
(...skipping 26 matching lines...) Expand all Loading... | |
281 #define MAYBE_SelectNone SelectNone | 292 #define MAYBE_SelectNone SelectNone |
282 #endif | 293 #endif |
283 | 294 |
284 | 295 |
285 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, MAYBE_SelectNone) { | 296 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, MAYBE_SelectNone) { |
286 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 297 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
287 | 298 |
288 // Let the mock get checked on destruction. | 299 // Let the mock get checked on destruction. |
289 } | 300 } |
290 | 301 |
291 // http://crbug.com/121007 | 302 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, Escape) { |
292 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, DISABLED_Escape) { | |
293 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 303 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
294 | 304 |
295 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 305 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
296 browser(), ui::VKEY_ESCAPE, false, false, false, false)); | 306 browser(), ui::VKEY_ESCAPE, false, false, false, false)); |
297 | 307 |
298 Mock::VerifyAndClear(auth_requestor_.get()); | 308 Mock::VerifyAndClear(auth_requestor_.get()); |
299 } | 309 } |
300 | 310 |
301 // Flaky, http://crbug.com/103534 . | 311 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, SelectDefault) { |
302 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, | |
303 DISABLED_SelectDefault) { | |
304 EXPECT_CALL(*auth_requestor_.get(), | 312 EXPECT_CALL(*auth_requestor_.get(), |
305 CertificateSelected(mit_davidben_cert_.get())); | 313 CertificateSelected(client_cert_1_.get())); |
306 | 314 |
307 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 315 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
308 browser(), ui::VKEY_RETURN, false, false, false, false)); | 316 browser(), ui::VKEY_RETURN, false, false, false, false)); |
309 | 317 |
310 Mock::VerifyAndClear(auth_requestor_.get()); | 318 Mock::VerifyAndClear(auth_requestor_.get()); |
311 } | 319 } |
312 | 320 |
313 // http://crbug.com/121007 | 321 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, Escape) { |
314 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, | |
315 DISABLED_Escape) { | |
316 // auth_requestor_1_ should get selected automatically by the | 322 // auth_requestor_1_ should get selected automatically by the |
317 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have | 323 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have |
318 // the same host:port. | 324 // the same host:port. |
319 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); | 325 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); |
320 EXPECT_CALL(*auth_requestor_2_.get(), CertificateSelected(NULL)); | 326 EXPECT_CALL(*auth_requestor_2_.get(), CertificateSelected(NULL)); |
321 | 327 |
322 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 328 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
323 browser(), ui::VKEY_ESCAPE, false, false, false, false)); | 329 browser(), ui::VKEY_ESCAPE, false, false, false, false)); |
324 | 330 |
325 Mock::VerifyAndClear(auth_requestor_.get()); | 331 Mock::VerifyAndClear(auth_requestor_.get()); |
326 Mock::VerifyAndClear(auth_requestor_1_.get()); | 332 Mock::VerifyAndClear(auth_requestor_1_.get()); |
327 Mock::VerifyAndClear(auth_requestor_2_.get()); | 333 Mock::VerifyAndClear(auth_requestor_2_.get()); |
328 | 334 |
329 // Now let the default selection for auth_requestor_ mock get checked on | 335 // Now let the default selection for auth_requestor_ mock get checked on |
330 // destruction. | 336 // destruction. |
331 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 337 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
332 } | 338 } |
333 | 339 |
334 // http://crbug.com/121007 | 340 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, SelectSecond) { |
335 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, | |
336 DISABLED_SelectSecond) { | |
337 // auth_requestor_1_ should get selected automatically by the | 341 // auth_requestor_1_ should get selected automatically by the |
338 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have | 342 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have |
339 // the same host:port. | 343 // the same host:port. |
340 EXPECT_CALL(*auth_requestor_1_.get(), | 344 EXPECT_CALL(*auth_requestor_1_.get(), |
341 CertificateSelected(foaf_me_chromium_test_cert_.get())); | 345 CertificateSelected(client_cert_2_.get())); |
342 EXPECT_CALL(*auth_requestor_2_.get(), | 346 EXPECT_CALL(*auth_requestor_2_.get(), |
343 CertificateSelected(foaf_me_chromium_test_cert_.get())); | 347 CertificateSelected(client_cert_2_.get())); |
344 | 348 |
345 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 349 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
346 browser(), ui::VKEY_DOWN, false, false, false, false)); | 350 browser(), ui::VKEY_DOWN, false, false, false, false)); |
347 | 351 |
348 EXPECT_EQ(mit_davidben_cert_.get(), selector_->GetSelectedCert()); | 352 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert()); |
349 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 353 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); |
350 EXPECT_EQ(foaf_me_chromium_test_cert_.get(), selector_2_->GetSelectedCert()); | 354 EXPECT_EQ(client_cert_2_.get(), selector_2_->GetSelectedCert()); |
351 | 355 |
352 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 356 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
353 browser(), ui::VKEY_RETURN, false, false, false, false)); | 357 browser(), ui::VKEY_RETURN, false, false, false, false)); |
354 | 358 |
355 Mock::VerifyAndClear(auth_requestor_.get()); | 359 Mock::VerifyAndClear(auth_requestor_.get()); |
356 Mock::VerifyAndClear(auth_requestor_1_.get()); | 360 Mock::VerifyAndClear(auth_requestor_1_.get()); |
357 Mock::VerifyAndClear(auth_requestor_2_.get()); | 361 Mock::VerifyAndClear(auth_requestor_2_.get()); |
358 | 362 |
359 // Now let the default selection for auth_requestor_ mock get checked on | 363 // Now let the default selection for auth_requestor_ mock get checked on |
360 // destruction. | 364 // destruction. |
361 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 365 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
362 } | 366 } |
363 | 367 |
364 // http://crbug.com/103529 | 368 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, Escape) { |
365 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, | |
366 DISABLED_Escape) { | |
367 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); | 369 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); |
368 | 370 |
369 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 371 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
370 browser_1_, ui::VKEY_ESCAPE, false, false, false, false)); | 372 browser_1_, ui::VKEY_ESCAPE, false, false, false, false)); |
371 | 373 |
372 Mock::VerifyAndClear(auth_requestor_.get()); | 374 Mock::VerifyAndClear(auth_requestor_.get()); |
373 Mock::VerifyAndClear(auth_requestor_1_.get()); | 375 Mock::VerifyAndClear(auth_requestor_1_.get()); |
374 | 376 |
375 // Now let the default selection for auth_requestor_ mock get checked on | 377 // Now let the default selection for auth_requestor_ mock get checked on |
376 // destruction. | 378 // destruction. |
377 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 379 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
378 } | 380 } |
379 | 381 |
380 // http://crbug.com/103534 | |
381 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, | 382 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, |
382 DISABLED_SelectDefault) { | 383 SelectDefault) { |
383 EXPECT_CALL(*auth_requestor_1_.get(), | 384 EXPECT_CALL(*auth_requestor_1_.get(), |
384 CertificateSelected(mit_davidben_cert_.get())); | 385 CertificateSelected(client_cert_1_.get())); |
385 | 386 |
386 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 387 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
387 browser_1_, ui::VKEY_RETURN, false, false, false, false)); | 388 browser_1_, ui::VKEY_RETURN, false, false, false, false)); |
388 | 389 |
389 Mock::VerifyAndClear(auth_requestor_.get()); | 390 Mock::VerifyAndClear(auth_requestor_.get()); |
390 Mock::VerifyAndClear(auth_requestor_1_.get()); | 391 Mock::VerifyAndClear(auth_requestor_1_.get()); |
391 | 392 |
392 // Now let the default selection for auth_requestor_ mock get checked on | 393 // Now let the default selection for auth_requestor_ mock get checked on |
393 // destruction. | 394 // destruction. |
394 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 395 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
395 } | 396 } |
OLD | NEW |