| Index: net/cert/internal/verify_certificate_chain_typed_unittest.h
|
| diff --git a/net/cert/internal/verify_certificate_chain_typed_unittest.h b/net/cert/internal/verify_certificate_chain_typed_unittest.h
|
| index b4990a3a751d8f021f7a70c783f5d5ee92b0d4b3..41cb77e4ff6cf7d9786b0b22099a5704d60271f8 100644
|
| --- a/net/cert/internal/verify_certificate_chain_typed_unittest.h
|
| +++ b/net/cert/internal/verify_certificate_chain_typed_unittest.h
|
| @@ -5,12 +5,8 @@
|
| #ifndef NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_TYPED_UNITTEST_H_
|
| #define NET_CERT_INTERNAL_VERIFY_CERTIFICATE_CHAIN_TYPED_UNITTEST_H_
|
|
|
| -#include "base/base_paths.h"
|
| -#include "base/files/file_util.h"
|
| -#include "base/path_service.h"
|
| #include "net/cert/internal/parsed_certificate.h"
|
| #include "net/cert/internal/test_helpers.h"
|
| -#include "net/cert/pem_tokenizer.h"
|
| #include "net/der/input.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -25,89 +21,12 @@ class VerifyCertificateChainTest : public ::testing::Test {
|
| der::GeneralizedTime time;
|
| bool expected_result;
|
|
|
| - ReadTestFromFile(file_name, &chain, &roots, &time, &expected_result);
|
| + ReadCertChainTestFromFile(
|
| + std::string("net/data/verify_certificate_chain_unittest/") + file_name,
|
| + &chain, &roots, &time, &expected_result);
|
|
|
| TestDelegate::Verify(chain, roots, time, expected_result);
|
| }
|
| -
|
| - private:
|
| - // Reads a data file from the unit-test data.
|
| - std::string ReadTestFileToString(const std::string& file_name) {
|
| - // Compute the full path, relative to the src/ directory.
|
| - base::FilePath src_root;
|
| - PathService::Get(base::DIR_SOURCE_ROOT, &src_root);
|
| - base::FilePath filepath = src_root.AppendASCII(
|
| - std::string("net/data/verify_certificate_chain_unittest/") + file_name);
|
| -
|
| - // Read the full contents of the file.
|
| - std::string file_data;
|
| - if (!base::ReadFileToString(filepath, &file_data)) {
|
| - ADD_FAILURE() << "Couldn't read file: " << filepath.value();
|
| - return std::string();
|
| - }
|
| -
|
| - return file_data;
|
| - }
|
| -
|
| - // Reads a test case from |file_name|. Test cases are comprised of a
|
| - // certificate chain, trust store, a timestamp to validate at, and the
|
| - // expected result of verification.
|
| - void ReadTestFromFile(const std::string& file_name,
|
| - ParsedCertificateList* chain,
|
| - ParsedCertificateList* roots,
|
| - der::GeneralizedTime* time,
|
| - bool* verify_result) {
|
| - chain->clear();
|
| - roots->clear();
|
| -
|
| - std::string file_data = ReadTestFileToString(file_name);
|
| -
|
| - std::vector<std::string> pem_headers;
|
| -
|
| - const char kCertificateHeader[] = "CERTIFICATE";
|
| - const char kTrustedCertificateHeader[] = "TRUSTED_CERTIFICATE";
|
| - const char kTimeHeader[] = "TIME";
|
| - const char kResultHeader[] = "VERIFY_RESULT";
|
| -
|
| - pem_headers.push_back(kCertificateHeader);
|
| - pem_headers.push_back(kTrustedCertificateHeader);
|
| - pem_headers.push_back(kTimeHeader);
|
| - pem_headers.push_back(kResultHeader);
|
| -
|
| - bool has_time = false;
|
| - bool has_result = false;
|
| -
|
| - PEMTokenizer pem_tokenizer(file_data, pem_headers);
|
| - while (pem_tokenizer.GetNext()) {
|
| - const std::string& block_type = pem_tokenizer.block_type();
|
| - const std::string& block_data = pem_tokenizer.data();
|
| -
|
| - if (block_type == kCertificateHeader) {
|
| - ASSERT_TRUE(net::ParsedCertificate::CreateAndAddToVector(
|
| - reinterpret_cast<const uint8_t*>(block_data.data()),
|
| - block_data.size(),
|
| - net::ParsedCertificate::DataSource::INTERNAL_COPY, {}, chain));
|
| - } else if (block_type == kTrustedCertificateHeader) {
|
| - ASSERT_TRUE(net::ParsedCertificate::CreateAndAddToVector(
|
| - reinterpret_cast<const uint8_t*>(block_data.data()),
|
| - block_data.size(),
|
| - net::ParsedCertificate::DataSource::INTERNAL_COPY, {}, roots));
|
| - } else if (block_type == kTimeHeader) {
|
| - ASSERT_FALSE(has_time) << "Duplicate " << kTimeHeader;
|
| - has_time = true;
|
| - ASSERT_TRUE(der::ParseUTCTime(der::Input(&block_data), time));
|
| - } else if (block_type == kResultHeader) {
|
| - ASSERT_FALSE(has_result) << "Duplicate " << kResultHeader;
|
| - ASSERT_TRUE(block_data == "SUCCESS" || block_data == "FAIL")
|
| - << "Unrecognized result: " << block_data;
|
| - has_result = true;
|
| - *verify_result = block_data == "SUCCESS";
|
| - }
|
| - }
|
| -
|
| - ASSERT_TRUE(has_time);
|
| - ASSERT_TRUE(has_result);
|
| - }
|
| };
|
|
|
| // Tests that have only one root. These can be tested without requiring any
|
|
|