Index: net/cert/multi_threaded_cert_verifier_unittest.cc |
diff --git a/net/cert/multi_threaded_cert_verifier_unittest.cc b/net/cert/multi_threaded_cert_verifier_unittest.cc |
index 26d9e0205f6920f70764bb98af00091dd234f87b..63670a5ebd2ad2e8071db5e9b22a4ffe9a67b78b 100644 |
--- a/net/cert/multi_threaded_cert_verifier_unittest.cc |
+++ b/net/cert/multi_threaded_cert_verifier_unittest.cc |
@@ -14,19 +14,13 @@ |
#include "net/base/net_errors.h" |
#include "net/base/test_completion_callback.h" |
#include "net/base/test_data_directory.h" |
-#include "net/cert/cert_trust_anchor_provider.h" |
-#include "net/cert/cert_verifier.h" |
#include "net/cert/cert_verify_proc.h" |
#include "net/cert/cert_verify_result.h" |
#include "net/cert/x509_certificate.h" |
#include "net/log/net_log.h" |
#include "net/test/cert_test_util.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-using testing::Mock; |
-using testing::ReturnRef; |
- |
namespace net { |
namespace { |
@@ -60,14 +54,6 @@ class MockCertVerifyProc : public CertVerifyProc { |
} |
}; |
-class MockCertTrustAnchorProvider : public CertTrustAnchorProvider { |
- public: |
- MockCertTrustAnchorProvider() {} |
- virtual ~MockCertTrustAnchorProvider() {} |
- |
- MOCK_METHOD0(GetAdditionalTrustAnchors, const CertificateList&()); |
-}; |
- |
} // namespace |
class MultiThreadedCertVerifierTest : public ::testing::Test { |
@@ -79,106 +65,6 @@ class MultiThreadedCertVerifierTest : public ::testing::Test { |
MultiThreadedCertVerifier verifier_; |
}; |
-TEST_F(MultiThreadedCertVerifierTest, CacheHit) { |
- base::FilePath certs_dir = GetTestCertsDirectory(); |
- scoped_refptr<X509Certificate> test_cert( |
- ImportCertFromFile(certs_dir, "ok_cert.pem")); |
- ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); |
- |
- int error; |
- CertVerifyResult verify_result; |
- TestCompletionCallback callback; |
- std::unique_ptr<CertVerifier::Request> request; |
- |
- error = verifier_.Verify( |
- CertVerifier::RequestParams(test_cert, "www.example.com", 0, |
- std::string(), CertificateList()), |
- NULL, &verify_result, callback.callback(), &request, BoundNetLog()); |
- ASSERT_EQ(ERR_IO_PENDING, error); |
- EXPECT_TRUE(request); |
- error = callback.WaitForResult(); |
- ASSERT_TRUE(IsCertificateError(error)); |
- ASSERT_EQ(1u, verifier_.requests()); |
- ASSERT_EQ(0u, verifier_.cache_hits()); |
- ASSERT_EQ(0u, verifier_.inflight_joins()); |
- ASSERT_EQ(1u, verifier_.GetCacheSize()); |
- |
- error = verifier_.Verify( |
- CertVerifier::RequestParams(test_cert, "www.example.com", 0, |
- std::string(), CertificateList()), |
- NULL, &verify_result, callback.callback(), &request, BoundNetLog()); |
- // Synchronous completion. |
- ASSERT_NE(ERR_IO_PENDING, error); |
- ASSERT_TRUE(IsCertificateError(error)); |
- ASSERT_FALSE(request); |
- ASSERT_EQ(2u, verifier_.requests()); |
- ASSERT_EQ(1u, verifier_.cache_hits()); |
- ASSERT_EQ(0u, verifier_.inflight_joins()); |
- ASSERT_EQ(1u, verifier_.GetCacheSize()); |
-} |
- |
-// Tests the same server certificate with different intermediate CA |
-// certificates. These should be treated as different certificate chains even |
-// though the two X509Certificate objects contain the same server certificate. |
-TEST_F(MultiThreadedCertVerifierTest, DifferentCACerts) { |
- base::FilePath certs_dir = GetTestCertsDirectory(); |
- |
- scoped_refptr<X509Certificate> server_cert = |
- ImportCertFromFile(certs_dir, "salesforce_com_test.pem"); |
- ASSERT_NE(static_cast<X509Certificate*>(NULL), server_cert.get()); |
- |
- scoped_refptr<X509Certificate> intermediate_cert1 = |
- ImportCertFromFile(certs_dir, "verisign_intermediate_ca_2011.pem"); |
- ASSERT_NE(static_cast<X509Certificate*>(NULL), intermediate_cert1.get()); |
- |
- scoped_refptr<X509Certificate> intermediate_cert2 = |
- ImportCertFromFile(certs_dir, "verisign_intermediate_ca_2016.pem"); |
- ASSERT_NE(static_cast<X509Certificate*>(NULL), intermediate_cert2.get()); |
- |
- X509Certificate::OSCertHandles intermediates; |
- intermediates.push_back(intermediate_cert1->os_cert_handle()); |
- scoped_refptr<X509Certificate> cert_chain1 = |
- X509Certificate::CreateFromHandle(server_cert->os_cert_handle(), |
- intermediates); |
- |
- intermediates.clear(); |
- intermediates.push_back(intermediate_cert2->os_cert_handle()); |
- scoped_refptr<X509Certificate> cert_chain2 = |
- X509Certificate::CreateFromHandle(server_cert->os_cert_handle(), |
- intermediates); |
- |
- int error; |
- CertVerifyResult verify_result; |
- TestCompletionCallback callback; |
- std::unique_ptr<CertVerifier::Request> request; |
- |
- error = verifier_.Verify( |
- CertVerifier::RequestParams(cert_chain1, "www.example.com", 0, |
- std::string(), CertificateList()), |
- NULL, &verify_result, callback.callback(), &request, BoundNetLog()); |
- ASSERT_EQ(ERR_IO_PENDING, error); |
- EXPECT_TRUE(request); |
- error = callback.WaitForResult(); |
- ASSERT_TRUE(IsCertificateError(error)); |
- ASSERT_EQ(1u, verifier_.requests()); |
- ASSERT_EQ(0u, verifier_.cache_hits()); |
- ASSERT_EQ(0u, verifier_.inflight_joins()); |
- ASSERT_EQ(1u, verifier_.GetCacheSize()); |
- |
- error = verifier_.Verify( |
- CertVerifier::RequestParams(cert_chain2, "www.example.com", 0, |
- std::string(), CertificateList()), |
- NULL, &verify_result, callback.callback(), &request, BoundNetLog()); |
- ASSERT_EQ(ERR_IO_PENDING, error); |
- EXPECT_TRUE(request); |
- error = callback.WaitForResult(); |
- ASSERT_TRUE(IsCertificateError(error)); |
- ASSERT_EQ(2u, verifier_.requests()); |
- ASSERT_EQ(0u, verifier_.cache_hits()); |
- ASSERT_EQ(0u, verifier_.inflight_joins()); |
- ASSERT_EQ(2u, verifier_.GetCacheSize()); |
-} |
- |
// Tests an inflight join. |
TEST_F(MultiThreadedCertVerifierTest, InflightJoin) { |
base::FilePath certs_dir = GetTestCertsDirectory(); |
@@ -211,7 +97,6 @@ TEST_F(MultiThreadedCertVerifierTest, InflightJoin) { |
error = callback2.WaitForResult(); |
ASSERT_TRUE(IsCertificateError(error)); |
ASSERT_EQ(2u, verifier_.requests()); |
- ASSERT_EQ(0u, verifier_.cache_hits()); |
ASSERT_EQ(1u, verifier_.inflight_joins()); |
} |
@@ -246,7 +131,6 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequest) { |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request); |
error = callback.WaitForResult(); |
- verifier_.ClearCache(); |
} |
} |
@@ -281,68 +165,6 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequestThenQuit) { |
// Destroy |verifier| by going out of scope. |
} |
-TEST_F(MultiThreadedCertVerifierTest, CertTrustAnchorProvider) { |
- MockCertTrustAnchorProvider trust_provider; |
- verifier_.SetCertTrustAnchorProvider(&trust_provider); |
- |
- scoped_refptr<X509Certificate> test_cert( |
- ImportCertFromFile(GetTestCertsDirectory(), "ok_cert.pem")); |
- ASSERT_TRUE(test_cert.get()); |
- |
- const CertificateList empty_cert_list; |
- CertificateList cert_list; |
- cert_list.push_back(test_cert); |
- |
- // Check that Verify() asks the |trust_provider| for the current list of |
- // additional trust anchors. |
- int error; |
- CertVerifyResult verify_result; |
- TestCompletionCallback callback; |
- std::unique_ptr<CertVerifier::Request> request; |
- EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) |
- .WillOnce(ReturnRef(empty_cert_list)); |
- error = verifier_.Verify( |
- CertVerifier::RequestParams(test_cert, "www.example.com", 0, |
- std::string(), CertificateList()), |
- NULL, &verify_result, callback.callback(), &request, BoundNetLog()); |
- Mock::VerifyAndClearExpectations(&trust_provider); |
- ASSERT_EQ(ERR_IO_PENDING, error); |
- EXPECT_TRUE(request); |
- error = callback.WaitForResult(); |
- EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); |
- ASSERT_EQ(1u, verifier_.requests()); |
- ASSERT_EQ(0u, verifier_.cache_hits()); |
- |
- // The next Verify() uses the cached result. |
- EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) |
- .WillOnce(ReturnRef(empty_cert_list)); |
- error = verifier_.Verify( |
- CertVerifier::RequestParams(test_cert, "www.example.com", 0, |
- std::string(), CertificateList()), |
- NULL, &verify_result, callback.callback(), &request, BoundNetLog()); |
- Mock::VerifyAndClearExpectations(&trust_provider); |
- EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); |
- EXPECT_FALSE(request); |
- ASSERT_EQ(2u, verifier_.requests()); |
- ASSERT_EQ(1u, verifier_.cache_hits()); |
- |
- // Another Verify() for the same certificate but with a different list of |
- // trust anchors will not reuse the cache. |
- EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) |
- .WillOnce(ReturnRef(cert_list)); |
- error = verifier_.Verify( |
- CertVerifier::RequestParams(test_cert, "www.example.com", 0, |
- std::string(), CertificateList()), |
- NULL, &verify_result, callback.callback(), &request, BoundNetLog()); |
- Mock::VerifyAndClearExpectations(&trust_provider); |
- ASSERT_EQ(ERR_IO_PENDING, error); |
- EXPECT_TRUE(request); |
- error = callback.WaitForResult(); |
- EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); |
- ASSERT_EQ(3u, verifier_.requests()); |
- ASSERT_EQ(1u, verifier_.cache_hits()); |
-} |
- |
// Tests de-duplication of requests. |
// Starts up 5 requests, of which 3 are unique. |
TEST_F(MultiThreadedCertVerifierTest, MultipleInflightJoin) { |
@@ -418,7 +240,6 @@ TEST_F(MultiThreadedCertVerifierTest, MultipleInflightJoin) { |
// Let the other requests automatically cancel. |
ASSERT_EQ(5u, verifier_.requests()); |
- ASSERT_EQ(0u, verifier_.cache_hits()); |
ASSERT_EQ(2u, verifier_.inflight_joins()); |
} |