| Index: chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc
|
| diff --git a/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc b/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc
|
| index 390abd4541c9961e475105ee18a3eda8f1b9c1eb..63ee691a18b56b7a5379b6bcf26aa732c6fd178f 100644
|
| --- a/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc
|
| +++ b/chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc
|
| @@ -26,6 +26,10 @@
|
| #include "net/url_request/url_request_context_getter.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +#if defined(USE_NSS)
|
| +#include "crypto/scoped_test_nss_db.h"
|
| +#endif
|
| +
|
| using ::testing::Mock;
|
| using ::testing::StrictMock;
|
| using content::BrowserThread;
|
| @@ -45,19 +49,28 @@ class SSLClientCertificateSelectorTest : public InProcessBrowserTest {
|
| void SetUpInProcessBrowserTestFixture() override {
|
| base::FilePath certs_dir = net::GetTestCertsDirectory();
|
|
|
| - mit_davidben_cert_ = net::ImportCertFromFile(certs_dir, "mit.davidben.der");
|
| - ASSERT_NE(static_cast<net::X509Certificate*>(NULL),
|
| - mit_davidben_cert_.get());
|
| -
|
| - foaf_me_chromium_test_cert_ = net::ImportCertFromFile(
|
| - certs_dir, "foaf.me.chromium-test-cert.der");
|
| - ASSERT_NE(static_cast<net::X509Certificate*>(NULL),
|
| - foaf_me_chromium_test_cert_.get());
|
| +#if defined(USE_NSS)
|
| + // If USE_NSS, the selector tries to unlock the slot where the private key
|
| + // of each certificate is stored. If no private key is found, the slot would
|
| + // be null and the unlock will crash.
|
| + ASSERT_TRUE(test_nssdb_.is_open());
|
| + client_cert_1_ = net::ImportClientCertAndKeyFromFile(
|
| + certs_dir, "client_1.pem", "client_1.pk8", test_nssdb_.slot());
|
| + client_cert_2_ = net::ImportClientCertAndKeyFromFile(
|
| + certs_dir, "client_2.pem", "client_2.pk8", test_nssdb_.slot());
|
| +#else
|
| + // No unlock is attempted if !USE_NSS. Thus, there is no need to import a
|
| + // private key.
|
| + client_cert_1_ = net::ImportCertFromFile(certs_dir, "client_1.pem");
|
| + client_cert_2_ = net::ImportCertFromFile(certs_dir, "client_2.pem");
|
| +#endif
|
| + ASSERT_NE(nullptr, client_cert_1_.get());
|
| + ASSERT_NE(nullptr, client_cert_2_.get());
|
|
|
| cert_request_info_ = new net::SSLCertRequestInfo;
|
| cert_request_info_->host_and_port = net::HostPortPair("foo", 123);
|
| - cert_request_info_->client_certs.push_back(mit_davidben_cert_);
|
| - cert_request_info_->client_certs.push_back(foaf_me_chromium_test_cert_);
|
| + cert_request_info_->client_certs.push_back(client_cert_1_);
|
| + cert_request_info_->client_certs.push_back(client_cert_2_);
|
| }
|
|
|
| void SetUpOnMainThread() override {
|
| @@ -77,8 +90,9 @@ class SSLClientCertificateSelectorTest : public InProcessBrowserTest {
|
| base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
|
| auth_requestor_));
|
| selector_->Init();
|
| + selector_->Show();
|
|
|
| - EXPECT_EQ(mit_davidben_cert_.get(), selector_->GetSelectedCert());
|
| + EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert());
|
| }
|
|
|
| virtual void SetUpOnIOThread() {
|
| @@ -121,12 +135,15 @@ class SSLClientCertificateSelectorTest : public InProcessBrowserTest {
|
| scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
|
| net::URLRequest* url_request_;
|
|
|
| - scoped_refptr<net::X509Certificate> mit_davidben_cert_;
|
| - scoped_refptr<net::X509Certificate> foaf_me_chromium_test_cert_;
|
| + scoped_refptr<net::X509Certificate> client_cert_1_;
|
| + scoped_refptr<net::X509Certificate> client_cert_2_;
|
| scoped_refptr<net::SSLCertRequestInfo> cert_request_info_;
|
| scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_;
|
| // The selector will be deleted when a cert is selected or the tab is closed.
|
| SSLClientCertificateSelector* selector_;
|
| +#if defined(USE_NSS)
|
| + crypto::ScopedTestNSSDB test_nssdb_;
|
| +#endif
|
| };
|
|
|
| class SSLClientCertificateSelectorMultiTabTest
|
| @@ -137,13 +154,13 @@ class SSLClientCertificateSelectorMultiTabTest
|
|
|
| cert_request_info_1_ = new net::SSLCertRequestInfo;
|
| cert_request_info_1_->host_and_port = net::HostPortPair("bar", 123);
|
| - cert_request_info_1_->client_certs.push_back(mit_davidben_cert_);
|
| - cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_);
|
| + cert_request_info_1_->client_certs.push_back(client_cert_1_);
|
| + cert_request_info_1_->client_certs.push_back(client_cert_2_);
|
|
|
| cert_request_info_2_ = new net::SSLCertRequestInfo;
|
| cert_request_info_2_->host_and_port = net::HostPortPair("bar", 123);
|
| - cert_request_info_2_->client_certs.push_back(mit_davidben_cert_);
|
| - cert_request_info_2_->client_certs.push_back(foaf_me_chromium_test_cert_);
|
| + cert_request_info_2_->client_certs.push_back(client_cert_1_);
|
| + cert_request_info_2_->client_certs.push_back(client_cert_2_);
|
| }
|
|
|
| void SetUpOnMainThread() override {
|
| @@ -164,16 +181,18 @@ class SSLClientCertificateSelectorMultiTabTest
|
| base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
|
| auth_requestor_1_));
|
| selector_1_->Init();
|
| + selector_1_->Show();
|
| selector_2_ = new SSLClientCertificateSelector(
|
| browser()->tab_strip_model()->GetWebContentsAt(2),
|
| auth_requestor_2_->cert_request_info_,
|
| base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
|
| auth_requestor_2_));
|
| selector_2_->Init();
|
| + selector_2_->Show();
|
|
|
| EXPECT_EQ(2, browser()->tab_strip_model()->active_index());
|
| - EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert());
|
| - EXPECT_EQ(mit_davidben_cert_.get(), selector_2_->GetSelectedCert());
|
| + EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert());
|
| + EXPECT_EQ(client_cert_1_.get(), selector_2_->GetSelectedCert());
|
| }
|
|
|
| void SetUpOnIOThread() override {
|
| @@ -223,8 +242,8 @@ class SSLClientCertificateSelectorMultiProfileTest
|
|
|
| cert_request_info_1_ = new net::SSLCertRequestInfo;
|
| cert_request_info_1_->host_and_port = net::HostPortPair("foo", 123);
|
| - cert_request_info_1_->client_certs.push_back(mit_davidben_cert_);
|
| - cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_);
|
| + cert_request_info_1_->client_certs.push_back(client_cert_1_);
|
| + cert_request_info_1_->client_certs.push_back(client_cert_2_);
|
| }
|
|
|
| void SetUpOnMainThread() override {
|
| @@ -240,8 +259,9 @@ class SSLClientCertificateSelectorMultiProfileTest
|
| base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
|
| auth_requestor_1_));
|
| selector_1_->Init();
|
| + selector_1_->Show();
|
|
|
| - EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert());
|
| + EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert());
|
| }
|
|
|
| void SetUpOnIOThread() override {
|
| @@ -288,8 +308,7 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, MAYBE_SelectNone) {
|
| // Let the mock get checked on destruction.
|
| }
|
|
|
| -// http://crbug.com/121007
|
| -IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, DISABLED_Escape) {
|
| +IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, Escape) {
|
| EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL));
|
|
|
| EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
|
| @@ -298,11 +317,9 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, DISABLED_Escape) {
|
| Mock::VerifyAndClear(auth_requestor_.get());
|
| }
|
|
|
| -// Flaky, http://crbug.com/103534 .
|
| -IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest,
|
| - DISABLED_SelectDefault) {
|
| +IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, SelectDefault) {
|
| EXPECT_CALL(*auth_requestor_.get(),
|
| - CertificateSelected(mit_davidben_cert_.get()));
|
| + CertificateSelected(client_cert_1_.get()));
|
|
|
| EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
|
| browser(), ui::VKEY_RETURN, false, false, false, false));
|
| @@ -310,9 +327,7 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest,
|
| Mock::VerifyAndClear(auth_requestor_.get());
|
| }
|
|
|
| -// http://crbug.com/121007
|
| -IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest,
|
| - DISABLED_Escape) {
|
| +IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, Escape) {
|
| // auth_requestor_1_ should get selected automatically by the
|
| // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have
|
| // the same host:port.
|
| @@ -331,23 +346,21 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest,
|
| EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL));
|
| }
|
|
|
| -// http://crbug.com/121007
|
| -IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest,
|
| - DISABLED_SelectSecond) {
|
| +IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, SelectSecond) {
|
| // auth_requestor_1_ should get selected automatically by the
|
| // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have
|
| // the same host:port.
|
| EXPECT_CALL(*auth_requestor_1_.get(),
|
| - CertificateSelected(foaf_me_chromium_test_cert_.get()));
|
| + CertificateSelected(client_cert_2_.get()));
|
| EXPECT_CALL(*auth_requestor_2_.get(),
|
| - CertificateSelected(foaf_me_chromium_test_cert_.get()));
|
| + CertificateSelected(client_cert_2_.get()));
|
|
|
| EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
|
| browser(), ui::VKEY_DOWN, false, false, false, false));
|
|
|
| - EXPECT_EQ(mit_davidben_cert_.get(), selector_->GetSelectedCert());
|
| - EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert());
|
| - EXPECT_EQ(foaf_me_chromium_test_cert_.get(), selector_2_->GetSelectedCert());
|
| + EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert());
|
| + EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert());
|
| + EXPECT_EQ(client_cert_2_.get(), selector_2_->GetSelectedCert());
|
|
|
| EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
|
| browser(), ui::VKEY_RETURN, false, false, false, false));
|
| @@ -361,9 +374,7 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest,
|
| EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL));
|
| }
|
|
|
| -// http://crbug.com/103529
|
| -IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest,
|
| - DISABLED_Escape) {
|
| +IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, Escape) {
|
| EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL));
|
|
|
| EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
|
| @@ -377,11 +388,10 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest,
|
| EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL));
|
| }
|
|
|
| -// http://crbug.com/103534
|
| IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest,
|
| - DISABLED_SelectDefault) {
|
| + SelectDefault) {
|
| EXPECT_CALL(*auth_requestor_1_.get(),
|
| - CertificateSelected(mit_davidben_cert_.get()));
|
| + CertificateSelected(client_cert_1_.get()));
|
|
|
| EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
|
| browser_1_, ui::VKEY_RETURN, false, false, false, false));
|
|
|