summaryrefslogtreecommitdiff
path: root/chromium/net/cert/multi_threaded_cert_verifier_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/cert/multi_threaded_cert_verifier_unittest.cc')
-rw-r--r--chromium/net/cert/multi_threaded_cert_verifier_unittest.cc41
1 files changed, 33 insertions, 8 deletions
diff --git a/chromium/net/cert/multi_threaded_cert_verifier_unittest.cc b/chromium/net/cert/multi_threaded_cert_verifier_unittest.cc
index d070395e9c6..89c394541a9 100644
--- a/chromium/net/cert/multi_threaded_cert_verifier_unittest.cc
+++ b/chromium/net/cert/multi_threaded_cert_verifier_unittest.cc
@@ -77,7 +77,8 @@ class MultiThreadedCertVerifierTest : public TestWithTaskEnvironment {
public:
MultiThreadedCertVerifierTest()
: mock_verify_proc_(base::MakeRefCounted<MockCertVerifyProc>()),
- verifier_(mock_verify_proc_) {
+ verifier_(
+ std::make_unique<MultiThreadedCertVerifier>(mock_verify_proc_)) {
EXPECT_CALL(*mock_verify_proc_, SupportsAdditionalTrustAnchors())
.WillRepeatedly(Return(true));
EXPECT_CALL(*mock_verify_proc_, VerifyInternal(_, _, _, _, _, _, _, _, _))
@@ -88,7 +89,7 @@ class MultiThreadedCertVerifierTest : public TestWithTaskEnvironment {
protected:
scoped_refptr<MockCertVerifyProc> mock_verify_proc_;
- MultiThreadedCertVerifier verifier_;
+ std::unique_ptr<MultiThreadedCertVerifier> verifier_;
};
// Tests that the callback of a canceled request is never made.
@@ -102,7 +103,7 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequest) {
CertVerifyResult verify_result;
std::unique_ptr<CertVerifier::Request> request;
- error = verifier_.Verify(
+ error = verifier_->Verify(
CertVerifier::RequestParams(test_cert, "www.example.com", 0,
/*ocsp_response=*/std::string(),
/*sct_list=*/std::string()),
@@ -116,7 +117,7 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequest) {
// worker thread) is likely to complete by the end of this test.
TestCompletionCallback callback;
for (int i = 0; i < 5; ++i) {
- error = verifier_.Verify(
+ error = verifier_->Verify(
CertVerifier::RequestParams(test_cert, "www2.example.com", 0,
/*ocsp_response=*/std::string(),
/*sct_list=*/std::string()),
@@ -127,6 +128,30 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequest) {
}
}
+// Tests that the callback of a request is never made if the |verifier_| itself
+// is deleted.
+TEST_F(MultiThreadedCertVerifierTest, DeleteVerifier) {
+ base::FilePath certs_dir = GetTestCertsDirectory();
+ scoped_refptr<X509Certificate> test_cert(
+ ImportCertFromFile(certs_dir, "ok_cert.pem"));
+ ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
+
+ int error;
+ CertVerifyResult verify_result;
+ std::unique_ptr<CertVerifier::Request> request;
+
+ error = verifier_->Verify(
+ CertVerifier::RequestParams(test_cert, "www.example.com", 0,
+ /*ocsp_response=*/std::string(),
+ /*sct_list=*/std::string()),
+ &verify_result, base::BindOnce(&FailTest), &request, NetLogWithSource());
+ ASSERT_THAT(error, IsError(ERR_IO_PENDING));
+ ASSERT_TRUE(request);
+ verifier_.reset();
+
+ RunUntilIdle();
+}
+
// Tests that a canceled request is not leaked.
TEST_F(MultiThreadedCertVerifierTest, CancelRequestThenQuit) {
base::FilePath certs_dir = GetTestCertsDirectory();
@@ -147,7 +172,7 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequestThenQuit) {
// can't post the reply back to the origin thread. See
// https://crbug.com/522514
ANNOTATE_SCOPED_MEMORY_LEAK;
- error = verifier_.Verify(
+ error = verifier_->Verify(
CertVerifier::RequestParams(test_cert, "www.example.com", 0,
/*ocsp_response=*/std::string(),
/*sct_list=*/std::string()),
@@ -156,7 +181,7 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequestThenQuit) {
ASSERT_THAT(error, IsError(ERR_IO_PENDING));
EXPECT_TRUE(request);
request.reset();
- // Destroy |verifier| by going out of scope.
+ // Destroy |verifier_| by going out of scope.
}
// Tests propagation of configuration options into CertVerifyProc flags
@@ -183,7 +208,7 @@ TEST_F(MultiThreadedCertVerifierTest, ConvertsConfigToFlags) {
CertVerifier::Config config;
config.*test_config.config_ptr = true;
- verifier_.SetConfig(config);
+ verifier_->SetConfig(config);
EXPECT_CALL(
*mock_verify_proc_,
@@ -194,7 +219,7 @@ TEST_F(MultiThreadedCertVerifierTest, ConvertsConfigToFlags) {
CertVerifyResult verify_result;
TestCompletionCallback callback;
std::unique_ptr<CertVerifier::Request> request;
- int error = verifier_.Verify(
+ int error = verifier_->Verify(
CertVerifier::RequestParams(test_cert, "www.example.com", 0,
/*ocsp_response=*/std::string(),
/*sct_list=*/std::string()),