| Index: net/ocsp/nss_ocsp_unittest.cc
|
| diff --git a/net/ocsp/nss_ocsp_unittest.cc b/net/ocsp/nss_ocsp_unittest.cc
|
| deleted file mode 100644
|
| index 745741e11d975496d6382ed1acd0407657165234..0000000000000000000000000000000000000000
|
| --- a/net/ocsp/nss_ocsp_unittest.cc
|
| +++ /dev/null
|
| @@ -1,162 +0,0 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "net/ocsp/nss_ocsp.h"
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/files/file_path.h"
|
| -#include "base/files/file_util.h"
|
| -#include "base/logging.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "net/base/test_completion_callback.h"
|
| -#include "net/base/test_data_directory.h"
|
| -#include "net/cert/cert_status_flags.h"
|
| -#include "net/cert/cert_verifier.h"
|
| -#include "net/cert/cert_verify_proc.h"
|
| -#include "net/cert/cert_verify_proc_nss.h"
|
| -#include "net/cert/cert_verify_result.h"
|
| -#include "net/cert/multi_threaded_cert_verifier.h"
|
| -#include "net/cert/test_root_certs.h"
|
| -#include "net/cert/x509_certificate.h"
|
| -#include "net/test/cert_test_util.h"
|
| -#include "net/url_request/url_request_filter.h"
|
| -#include "net/url_request/url_request_interceptor.h"
|
| -#include "net/url_request/url_request_test_job.h"
|
| -#include "net/url_request/url_request_test_util.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace net {
|
| -
|
| -namespace {
|
| -
|
| -// Matches the caIssuers hostname from the generated certificate.
|
| -const char kAiaHost[] = "aia-test.invalid";
|
| -// Returning a single DER-encoded cert, so the mime-type must be
|
| -// application/pkix-cert per RFC 5280.
|
| -const char kAiaHeaders[] = "HTTP/1.1 200 OK\0"
|
| - "Content-type: application/pkix-cert\0"
|
| - "\0";
|
| -
|
| -class AiaResponseHandler : public net::URLRequestInterceptor {
|
| - public:
|
| - AiaResponseHandler(const std::string& headers, const std::string& cert_data)
|
| - : headers_(headers), cert_data_(cert_data), request_count_(0) {}
|
| - ~AiaResponseHandler() override {}
|
| -
|
| - // net::URLRequestInterceptor implementation:
|
| - net::URLRequestJob* MaybeInterceptRequest(
|
| - net::URLRequest* request,
|
| - net::NetworkDelegate* network_delegate) const override {
|
| - ++const_cast<AiaResponseHandler*>(this)->request_count_;
|
| -
|
| - return new net::URLRequestTestJob(
|
| - request, network_delegate, headers_, cert_data_, true);
|
| - }
|
| -
|
| - int request_count() const { return request_count_; }
|
| -
|
| - private:
|
| - std::string headers_;
|
| - std::string cert_data_;
|
| - int request_count_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AiaResponseHandler);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -class NssHttpTest : public ::testing::Test {
|
| - public:
|
| - NssHttpTest()
|
| - : context_(false),
|
| - handler_(NULL),
|
| - verify_proc_(new CertVerifyProcNSS),
|
| - verifier_(new MultiThreadedCertVerifier(verify_proc_.get())) {}
|
| - ~NssHttpTest() override {}
|
| -
|
| - void SetUp() override {
|
| - std::string file_contents;
|
| - ASSERT_TRUE(base::ReadFileToString(
|
| - GetTestCertsDirectory().AppendASCII("aia-intermediate.der"),
|
| - &file_contents));
|
| - ASSERT_FALSE(file_contents.empty());
|
| -
|
| - // Ownership of |handler| is transferred to the URLRequestFilter, but
|
| - // hold onto the original pointer in order to access |request_count()|.
|
| - scoped_ptr<AiaResponseHandler> handler(
|
| - new AiaResponseHandler(kAiaHeaders, file_contents));
|
| - handler_ = handler.get();
|
| -
|
| - URLRequestFilter::GetInstance()->AddHostnameInterceptor(
|
| - "http", kAiaHost, handler.Pass());
|
| -
|
| - SetURLRequestContextForNSSHttpIO(&context_);
|
| - EnsureNSSHttpIOInit();
|
| - }
|
| -
|
| - void TearDown() override {
|
| - ShutdownNSSHttpIO();
|
| -
|
| - if (handler_)
|
| - URLRequestFilter::GetInstance()->RemoveHostnameHandler("http", kAiaHost);
|
| - }
|
| -
|
| - CertVerifier* verifier() const {
|
| - return verifier_.get();
|
| - }
|
| -
|
| - int request_count() const {
|
| - return handler_->request_count();
|
| - }
|
| -
|
| - protected:
|
| - const CertificateList empty_cert_list_;
|
| -
|
| - private:
|
| - TestURLRequestContext context_;
|
| - AiaResponseHandler* handler_;
|
| - scoped_refptr<CertVerifyProc> verify_proc_;
|
| - scoped_ptr<CertVerifier> verifier_;
|
| -};
|
| -
|
| -// Tests that when using NSS to verify certificates, and IO is enabled,
|
| -// that a request to fetch missing intermediate certificates is
|
| -// made successfully.
|
| -TEST_F(NssHttpTest, TestAia) {
|
| - scoped_refptr<X509Certificate> test_cert(
|
| - ImportCertFromFile(GetTestCertsDirectory(), "aia-cert.pem"));
|
| - ASSERT_TRUE(test_cert.get());
|
| -
|
| - scoped_refptr<X509Certificate> test_root(
|
| - ImportCertFromFile(GetTestCertsDirectory(), "aia-root.pem"));
|
| - ASSERT_TRUE(test_root.get());
|
| -
|
| - ScopedTestRoot scoped_root(test_root.get());
|
| -
|
| - CertVerifyResult verify_result;
|
| - TestCompletionCallback test_callback;
|
| - CertVerifier::RequestHandle request_handle;
|
| -
|
| - int flags = CertVerifier::VERIFY_CERT_IO_ENABLED;
|
| - int error = verifier()->Verify(test_cert.get(),
|
| - "aia-host.invalid",
|
| - flags,
|
| - NULL,
|
| - &verify_result,
|
| - test_callback.callback(),
|
| - &request_handle,
|
| - BoundNetLog());
|
| - ASSERT_EQ(ERR_IO_PENDING, error);
|
| -
|
| - error = test_callback.WaitForResult();
|
| -
|
| - EXPECT_EQ(OK, error);
|
| -
|
| - // Ensure that NSS made an AIA request for the missing intermediate.
|
| - EXPECT_LT(0, request_count());
|
| -}
|
| -
|
| -} // namespace net
|
|
|