diff options
Diffstat (limited to 'chromium/net/cert/multi_threaded_cert_verifier_unittest.cc')
-rw-r--r-- | chromium/net/cert/multi_threaded_cert_verifier_unittest.cc | 41 |
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()), |