diff options
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/test_ocsp.cpp | 36 | ||||
-rw-r--r-- | src/tests/tests.cpp | 41 | ||||
-rw-r--r-- | src/tests/tests.h | 3 |
3 files changed, 48 insertions, 32 deletions
diff --git a/src/tests/test_ocsp.cpp b/src/tests/test_ocsp.cpp index 2839d9ef5..6a872ae62 100644 --- a/src/tests/test_ocsp.cpp +++ b/src/tests/test_ocsp.cpp @@ -21,34 +21,6 @@ namespace Botan_Tests { class OCSP_Tests final : public Test { private: - std::vector<uint8_t> slurp_data_file(const std::string& path) - { - const std::string fsname = Test::data_file(path); - std::ifstream file(fsname.c_str(), std::ios::binary); - if(!file.good()) - { - throw Test_Error("Error reading from " + fsname); - } - - std::vector<uint8_t> contents; - - while(file.good()) - { - std::vector<uint8_t> buf(4096); - file.read(reinterpret_cast<char*>(buf.data()), buf.size()); - size_t got = file.gcount(); - - if(got == 0 && file.eof()) - { - break; - } - - contents.insert(contents.end(), buf.data(), buf.data() + got); - } - - return contents; - } - std::shared_ptr<const Botan::X509_Certificate> load_test_X509_cert(const std::string& path) { return std::make_shared<const Botan::X509_Certificate>(Test::data_file(path)); @@ -56,7 +28,7 @@ class OCSP_Tests final : public Test std::shared_ptr<const Botan::OCSP::Response> load_test_OCSP_resp(const std::string& path) { - return std::make_shared<const Botan::OCSP::Response>(slurp_data_file(path)); + return std::make_shared<const Botan::OCSP::Response>(Test::read_binary_data_file(path)); } Test::Result test_response_parsing() @@ -75,7 +47,7 @@ class OCSP_Tests final : public Test { try { - Botan::OCSP::Response resp(slurp_data_file(ocsp_input_path)); + Botan::OCSP::Response resp(Test::read_binary_data_file(ocsp_input_path)); result.test_success("Parsed input " + ocsp_input_path); } catch(Botan::Exception& e) @@ -93,7 +65,7 @@ class OCSP_Tests final : public Test try { - Botan::OCSP::Response resp1(slurp_data_file("x509/ocsp/resp1.der")); + Botan::OCSP::Response resp1(Test::read_binary_data_file("x509/ocsp/resp1.der")); const auto &certs1 = resp1.certificates(); if(result.test_eq("Expected count of certificates", certs1.size(), 1)) { @@ -105,7 +77,7 @@ class OCSP_Tests final : public Test result.test_eq("CN matches expected", matches, true); } - Botan::OCSP::Response resp2(slurp_data_file("x509/ocsp/resp2.der")); + Botan::OCSP::Response resp2(Test::read_binary_data_file("x509/ocsp/resp2.der")); const auto &certs2 = resp2.certificates(); result.test_eq("Expect no certificates", certs2.size(), 0); } diff --git a/src/tests/tests.cpp b/src/tests/tests.cpp index bda3cd648..e4ed5e896 100644 --- a/src/tests/tests.cpp +++ b/src/tests/tests.cpp @@ -506,6 +506,47 @@ Test* Test::get_test(const std::string& test_name) return nullptr; } +std::string Test::read_data_file(const std::string& path) + { + const std::string fsname = Test::data_file(path); + std::ifstream file(fsname.c_str()); + if(!file.good()) + { + throw Test_Error("Error reading from " + fsname); + } + + return std::string((std::istreambuf_iterator<char>(file)), + std::istreambuf_iterator<char>()); + } + +std::vector<uint8_t> Test::read_binary_data_file(const std::string& path) + { + const std::string fsname = Test::data_file(path); + std::ifstream file(fsname.c_str(), std::ios::binary); + if(!file.good()) + { + throw Test_Error("Error reading from " + fsname); + } + + std::vector<uint8_t> contents; + + while(file.good()) + { + std::vector<uint8_t> buf(4096); + file.read(reinterpret_cast<char*>(buf.data()), buf.size()); + size_t got = file.gcount(); + + if(got == 0 && file.eof()) + { + break; + } + + contents.insert(contents.end(), buf.data(), buf.data() + got); + } + + return contents; + } + // static member variables of Test std::unique_ptr<Botan::RandomNumberGenerator> Test::m_test_rng; std::string Test::m_data_dir; diff --git a/src/tests/tests.h b/src/tests/tests.h index 9ab8e43b8..193f7e06d 100644 --- a/src/tests/tests.h +++ b/src/tests/tests.h @@ -413,6 +413,9 @@ class Test static const std::string& data_dir(); + static std::string read_data_file(const std::string& path); + static std::vector<uint8_t> read_binary_data_file(const std::string& path); + static Botan::RandomNumberGenerator& rng(); static std::string random_password(); static uint64_t timestamp(); // nanoseconds arbitrary epoch |