diff options
author | Saturneric <[email protected]> | 2021-09-19 15:54:06 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2021-09-19 15:54:06 +0000 |
commit | 0f0b9510bbb8be150984bfa8af03f43e1d4135d3 (patch) | |
tree | 6436834f05ac0fe32646dbf47488d25a98ddf8fa /test/GpgCoreTest.cpp | |
parent | Continue to write core test code. (diff) | |
download | GpgFrontend-0f0b9510bbb8be150984bfa8af03f43e1d4135d3.tar.gz GpgFrontend-0f0b9510bbb8be150984bfa8af03f43e1d4135d3.zip |
Support multi-channel Context.
Make the test configurable.
Other modifications.
Diffstat (limited to '')
-rw-r--r-- | test/GpgCoreTest.cpp | 166 |
1 files changed, 69 insertions, 97 deletions
diff --git a/test/GpgCoreTest.cpp b/test/GpgCoreTest.cpp index 51510e9e..7705e8b0 100644 --- a/test/GpgCoreTest.cpp +++ b/test/GpgCoreTest.cpp @@ -28,7 +28,12 @@ #include <gtest/gtest.h> #include <boost/date_time/gregorian/parsers.hpp> #include <boost/dll.hpp> +#include <boost/filesystem/operations.hpp> +#include <boost/filesystem/path.hpp> +#include <fstream> #include <memory> +#include <string> +#include <vector> #include "gpg/GpgConstants.h" #include "gpg/function/GpgKeyGetter.h" @@ -38,97 +43,19 @@ TEST(GpgKeyTest, GpgCoreTest) {} class GpgCoreTest : public ::testing::Test { protected: - GpgFrontend::StdBypeArrayPtr secret_key_ = std::make_unique<std::string>( - "-----BEGIN PGP PRIVATE KEY BLOCK-----\n" - "lQVYBGE0XVEBDADHYmnEbRB8hxqyQmaLmIRU71PTMZc162qWoWTMaPd7a8gQcQwc" - "MUFYHp3mAmoHYUAKyT0lgpyj7UqGDdiAOt8z+nW6tR2Wu2xe6o0su/oK8qGtX37e" - "bexiWcsMftrk/uR+l2G7JcCKMTAszLbyDgg1IaJ/SaVicKaO1CRjD5ZlNa2IQVOG" - "bw0va1CevF6yw5rvc5r300p/kwcKX4taUyPaCT10ZxZnpZUhdsAIX5DfvWURoZ0q" - "jy4JdQFlufhPzSJZ2VoCXn37FeXwEz1Vm8VzyVV70pPWN5osMcNBsRO4nr8cYIxo" - "1PiErm3VdDUHPZ8dKKMlrLaGh3De3ohK47GSLDqBGg/FNnekRwNqBT+HLvfk5Kko" - "lNsC7eyRSagI7IRY+KgjKNpT/9QUGYP9llTonQ2V58XarDFDy8SU/3yOqWaeu0Op" - "A/fpqkp7JF3mGLXzKOZ4ueEOMkh+DsAOPTOQTcbYvnCz8jvHUPlSUqU1Y/7xU6BW" - "rzgqajU563xoxCMAEQEAAQAL/2IGy5NsP8fJsOFlbf9B/AW6KM9TuVEkLiJitSke" - "jlZa1mDnA5o0yTimzODR3QlF0fO7ntl7TsH1n0crNX9N8oEeqZUjCKob+Zrs3H3a" - "6YNKaRzRL5HyH173YLIDCGG/w91NVhpp5DDNIC9WcretGHHu2HKWZb5xPiJIwJ8H" - "gdy+uFOeMo+Mt8HRlDCG0lQ3gUwq3Uzsz9rLEZITCXNeHulK07EQId7RdPGf7afw" - "PE0UU8WIXLoY7PxvT0GRXjj11AheEGNHcebirHbgbLWoevY/+h+r/yAdRns+S2l+" - "PsShh6ki8bH7InI7L79v+021l89FfTZYixwscvwLBN4QWp6FLwqwDJjEHnZRxjCX" - "Y5v7j9gHhhyK2vNbwU1vx/drx/cllIHfYOVRoZtxaAnfW0u51x/uKTknHBoL1GvW" - "zrJHLMC4cHuPYAR6vS5sy7QcqVeB709mrTNVGHa0w6u4U8mlxpIQ/izdxy9k2sgV" - "OAfZMxojIehGymu7LP0DP+ElUQYA2Rr5l81OIO9JCA+pg6B4ZigGYMvGDnBv9kuy" - "lJWWV1O7jPMAfdK0lkehTpw/E4TkRk1t7PiQhXtGprYUAihdR2rx8DyDc438mhvw" - "aN95MURkZ0v9U+04tPzHg/OTfkhNs/C6KfCxYpZD6I8lMZyIXX0BcjBPgl62EQCX" - "QhU6zfF/1muGGQJ6tYvZ7Z/iMqwpqBzi0h5gCQcxSIhP4z8hdfT920LezUhibuqr" - "HrTisZ1rQPPOJ1TxZYwaqKDOUy/rBgDrGrV7Z3k7EaKPEbL/C38FtZT+ZDFGvvPs" - "4HVn/tRhVJPYsW5a0m6qSnd+NZqmKX2twv7IZK+DP3MQeNoJZj1MwDTW0lHDzNPp" - "Ey3fO6+R4oFY4QbBFAqXLLAviAtAigwNJ87lgieeW5SQKluHdC82nqVzVyh89XaM" - "nSe3niVtgIoimTELg5P5uWFcRA4dTENrSTuhKD09fzceSKlqrDVAmygwoQNuGr2t" - "00mT+5Mzctf1cogNvTxE9EfmpPQT5qkGAOoSeWmg5MTAOJsc+A7kzu47COqGsldZ" - "xejz9je45+XFRyE2ywH6EaJ8Fy8yzuLQVw8sRtCB/tC5nE5aKSlgwoJ0A1B8nLl9" - "ANCC3gszj3uGKkf3ITqggtojkrJSFv4kndOqWtBe7GlM1FDyaTS3Va72NqUVLGOo" - "tSVziTGqyXH90p52EKEffnl40/1AZjkRs6cQvvd0cGXoXodubRKm48CXOMJ+cXL5" - "a205komAn1las2wOheK2HNsUQpV87Atk1t1ctC1HcGdGcm9udGVuZFRlc3QgPGdw" - "Z2Zyb250ZW5kQGdwZ2Zyb250ZW5kLnB1Yj6JAdgEEwEIAEIWIQSUkHlbePiv6fk7" - "0JKBcEhZGCZh+wUCYTRdUQIbAwUJA8JKbwULCQgHAgMiAgEGFQoJCAsCBBYCAwEC" - "HgcCF4AACgkQgXBIWRgmYfsYpQwAow3gK+CGoyc/mQ60UbtCUlxJX6xN4palxY24" - "cc7rbBhBJgp4oomPSCjiZjs6Wdiwmm5tC8M4chvfJ2Aw2xHL7W4DrPykKkvrhbRw" - "S82eQyI3VMN6ED9EAGAmhaNME21gRvaUgI+qV7k753nqHTasXI2lB6UZryFbiPRH" - "3BIjPx7msSvNaukVoTvBpHJ/Z9/u4M6TQCCLpQOgHN+0JHW/87O9YTycdqePBVj+" - "pKEHJimebg2w8BWTYFpvusczlGcJdc97lXEV5gQTP/zq4SGNnvghlnjEFD7hRS/G" - "NwQCd7IL56koCxPgvdLLQPTlsLYYo0myJr0ePjdOQWg7heOfdywqBn1pbH9MqpiP" - "d5iNp9kDEAxnJ2H4ToeDF05hGdrfWr7G5yuGDTBiP4Rgr6DwE2gHN6ELzGMqH2Fg" - "9x2sWgf25Z3bocXIzhZLVqA/YWbGtJLDlHiWVhrG20edgpb/KsvJUVcpy6mIM57l" - "2Pk5LCmIZLdlsLY1Mx5IT5UDzUULnQVYBGE0XVEBDADS0miBA8Alwk2WCrF6vm1t" - "5H9nXguOBrTIGntxoLQoUVwB5Ei+7Nrb+c7Y6aMNyEW/Xno28jdsSSwtqbEt2VLb" - "rrshggqi4oPHDHu5qZUf/b3HNyNwJ6w1vdGryHVg/Vg5pKvyYveH/MVHunrCKUQ6" - "imP4lTg8qL6Igq/qD5bOg8582LAxHwsIznpLVEqgN2eO6EGirlvhw0Qyw+CHFJbf" - "bvyGyDcTRZPjOZRufDezsLvC30soL7ZQI6acX8Q18Hi6aXf4iAE2ZpPChzCBnFKw" - "VHfB/MB4zOpphDvxZF53j0p7bZuIoG/aItUHZogrtap0YR45AjMQkHLwIiihL4cd" - "CBxffooai10mW0gos/gutZfIxrrtGpURlSE18lICcFIYctSAt4gxIPpAVcN6bY/k" - "aIaKpvaMtoLuCeBXN6y0sV8vBiVxpvSUZTfzfeOki7CQctdhJPWAELNzzFXvFjyx" - "QHAkZgjNlft1zrOy7ODlXhNPRsFK3VwaZ6iE2f9Lr68AEQEAAQAL/1xpz1V+h2QF" - "4Gy9Ez9y6hUZ7J8rInWHiweMVEBi6ZYi0+ogX6MRwH5c6sc64zbPa4OPrpMXaiQV" - "j0AU+o3WjfOujGkL0A3GrW07k6C3LZ9wYxhIm0g2m86S/q4GmS2C4IGkJZuCtm7t" - "5qyimd0yqa3frCLzhktQzPSaFPLNEpZEQOeJNPLTYMrjd8g9ktjYcJS8Ssk9FRnJ" - "tsNqCaos5FXdGOUcLshL35/jRaWI3gHunt+1cgSTpZ9LgWVatW/PkNAmug3q94+M" - "67A4vsjdqWfezXaJcSfgdPc5b5cznJoqbXX9N+Q/SYMBgCOFfYbFQpWB6/wbJww/" - "Ibit5e2lD97Y4g2lO1QAJaDfvA/LCf49+SLmVN+rkYC+6Le7ygYFNRpvYik2NLY8" - "EnnvEacjPfkCz5BJtP8JTceba/KdCLZQ4FN/vwGl7ykH0oN5TYcVE4CnURzK6Y/2" - "jQ9tT+mKdDIpaNr7QCnCJcL2HFTOQ7IIHmhN6UJu3G9Uf5TfsdagwQYA14HVwvC2" - "K4xmW8I9pqKrru+K2+CjNX5KqOgYM9h3Lfg/1Kr+OSIVrPm7zoEHeGXxH4C5Z5EF" - "6eIB0QRgLbL0roS3dvxVF5cBdUbH5Ec/iOIlRD9RTO7QMW5dvHgr9/PWYs3znM+C" - "h8wMGJ5Y/xbtwPu3++hmwFd79ghl2K+Mdopq8hAHvPCJ5USPfTjBhRU9ntv4C75U" - "jBnzMGqN0Sbn9BLwmBx12jy8EMgcQovtUK9jeEjV/5WMeLgfBnjO1m31BgD6bzTP" - "Y3z+aHEm2sWkwXTEuaQQm6dWrvbMrAw1kbcdnPZCSieHCQesmVnogNU2LH61AXVy" - "NQ0lxVgHheC6rZHl2Eqv1whfmYVjCrC/jKSaokNjPdgSFl8tteZGm5FQto5j+lA9" - "KEW2A6d0MjcrYSN9mVuKUCii0x1YcxT+6kMAi0UvDzADzLkckNX8i47oMLR6lRMN" - "k6B/52EJ5tBBDzeu3rJWkeeZASNnWAKh1JQM6dplUXTO4SodJodXv0183JMF/A76" - "mVjZOT79SBImVTdQyp0WRhYxJJKVQ3q6fHC47igQypZtPy0Itn8Ll0fu6FTPbWJ7" - "Su/UuJKq/FDQ+jM/fhdZ7bfLsXssSl4opyBc1xtbDN0wdab1vy2OOgq1stdE2sr4" - "BX65rUbdflsBNf/YxX+NfAmP1h8YCvPxoIVZOVDCCvbf8K/jKvautLt2op/8wwUj" - "eHmkZSmBBWTKUdFlYD+T0IWe55lgvLWjrLGXnS41v0/a7WgYlOcgrZPI22qcQ+rT" - "iQG8BBgBCAAmFiEElJB5W3j4r+n5O9CSgXBIWRgmYfsFAmE0XVECGwwFCQPCSm8A" - "CgkQgXBIWRgmYftO8QwAxE+6jsIAlNzNKn9ScSuCBOPumtPzlAjADEymR3qxJ3N0" - "7qnzOD3dwwSsX8S5P/aMfUm9KPleYebTwZ/iMM7MBZcxrSPwOhO9i8tnRRCqppC0" - "EcSGSxDe5iP5xFiQkVvr524eVz04orW1ZgAwWh7L5m3GSjq5V77zUetOBHv9WAGL" - "sPOMQAMZUQavL370gxnttR7cn0Of9TM3Ia5L6p0Yi7PD0QztnkkczjaDySSFpxzS" - "XSTo+en5Nul0pY0kt/TBY7+il8lWxCUChEch/SAdnSocoYN+Bd1KQ/J+KUukl71m" - "ZHz67G9t1qso7IH0SksB0dSpxwhs645rG605DlJKnUHgtwE46nnwR22YolcTbTCh" - "tKmdMppPdabbL1gI/I+Jmh6Z+UDDKbl7uUKrz5vua/gxfySFqmNvcKO1ocjbKDcf" - "cqEh8fyKWtmiXrW2zzlszJVGJrpXDDpzgP7ZELGxhfZYFi8rMrSVKDwrpFZBSWMG" - "T2R+xoMRGcJJphKWpVjZ" - "=u+uG" - "\n-----END PGP PRIVATE KEY BLOCK-----\n"); + std::vector<GpgFrontend::StdBypeArrayPtr> secret_keys_; + + boost::filesystem::path parent_path = + boost::dll::program_location().parent_path(); + + boost::filesystem::path config_path = parent_path / "conf" / "core.cfg"; GpgCoreTest() = default; virtual ~GpgCoreTest() = default; virtual void SetUp() { - auto config_path = - boost::dll::program_location().parent_path() / "conf" / "core.cfg"; - + DLOG(INFO) << "SetUp called"; using namespace libconfig; Config cfg; ASSERT_NO_THROW(cfg.readFile(config_path.c_str())); @@ -137,12 +64,53 @@ class GpgCoreTest : public ::testing::Test { ASSERT_TRUE(root.exists("independent_database")); bool independent_database = true; ASSERT_TRUE(root.lookupValue("independent_database", independent_database)); - if (independent_database) - GpgFrontend::GpgContext::GetInstance().SetPassphraseCb( - GpgFrontend::GpgContext::test_passphrase_cb); - GpgFrontend::GpgKeyImportExportor::GetInstance().ImportKey( - std::move(this->secret_key_)); + DLOG(INFO) << "SetUp independent_database"; + if (independent_database) { + ASSERT_TRUE(root.exists("independent_db_path")); + std::string relative_db_path; + + ASSERT_TRUE(root.lookupValue("independent_db_path", relative_db_path)); + + auto db_path = parent_path / relative_db_path; + if (!boost::filesystem::exists(db_path)) { + boost::filesystem::create_directory(db_path); + } + + DLOG(INFO) << "GpgFrontend::GpgContext::CreateInstance"; + GpgFrontend::GpgContext::CreateInstance( + 1, std::make_unique<GpgFrontend::GpgContext>(true, db_path.c_str())); + DLOG(INFO) << "db_path " << db_path; + } + + ASSERT_TRUE(root.exists("data_path")); + std::string relative_data_path; + ASSERT_TRUE(root.lookupValue("data_path", relative_data_path)); + auto data_path = parent_path / relative_data_path; + ASSERT_TRUE(boost::filesystem::exists(data_path)); + + if (root.exists("load_keys.private_keys")) { + LOG(INFO) << "loading private keys"; + auto& private_keys = root.lookup("load_keys.private_keys"); + for (auto it = private_keys.begin(); it != private_keys.end(); it++) { + ASSERT_TRUE(it->exists("filename")); + std::string filename; + it->lookupValue("filename", filename); + auto data_file_path = data_path / filename; + DLOG(INFO) << "private file path" << data_file_path.string(); + std::string data = + GpgFrontend::read_all_data_in_file(data_file_path.string()); + secret_keys_.push_back(std::make_unique<std::string>(data)); + } + LOG(INFO) << "loaded private keys"; + } + + GpgFrontend::GpgContext::GetInstance(1).SetPassphraseCb( + GpgFrontend::GpgContext::test_passphrase_cb); + for (auto& secret_key : secret_keys_) { + GpgFrontend::GpgKeyImportExportor::GetInstance(1).ImportKey( + std::move(secret_key)); + } } virtual void TearDown() {} @@ -154,7 +122,11 @@ class GpgCoreTest : public ::testing::Test { }; TEST_F(GpgCoreTest, CoreInitTest) { - auto& ctx = GpgFrontend::GpgContext::GetInstance(); + auto& ctx = GpgFrontend::GpgContext::GetInstance(1); + DLOG(INFO) << "CoreInitTest ctx DatabasePath " << ctx.GetInfo().DatabasePath; + auto& ctx_default = GpgFrontend::GpgContext::GetInstance(); + DLOG(INFO) << "CoreInitTest ctx_default DatabasePath " + << ctx_default.GetInfo().DatabasePath; ASSERT_TRUE(ctx.good()); } @@ -171,7 +143,7 @@ TEST_F(GpgCoreTest, GpgDataTest) { } TEST_F(GpgCoreTest, GpgKeyTest) { - auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey( + auto key = GpgFrontend::GpgKeyGetter::GetInstance(1).GetKey( "9490795B78F8AFE9F93BD09281704859182661FB"); ASSERT_TRUE(key.good()); ASSERT_TRUE(key.is_private_key()); @@ -214,7 +186,7 @@ TEST_F(GpgCoreTest, GpgKeyTest) { } TEST_F(GpgCoreTest, GpgSubKeyTest) { - auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey( + auto key = GpgFrontend::GpgKeyGetter::GetInstance(1).GetKey( "9490795B78F8AFE9F93BD09281704859182661FB"); auto sub_keys = key.subKeys(); ASSERT_EQ(sub_keys->size(), 2); @@ -244,7 +216,7 @@ TEST_F(GpgCoreTest, GpgSubKeyTest) { } TEST_F(GpgCoreTest, GpgUIDTest) { - auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey( + auto key = GpgFrontend::GpgKeyGetter::GetInstance(1).GetKey( "9490795B78F8AFE9F93BD09281704859182661FB"); auto uids = key.uids(); ASSERT_EQ(uids->size(), 1); @@ -259,7 +231,7 @@ TEST_F(GpgCoreTest, GpgUIDTest) { } TEST_F(GpgCoreTest, GpgKeySignatureTest) { - auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey( + auto key = GpgFrontend::GpgKeyGetter::GetInstance(1).GetKey( "9490795B78F8AFE9F93BD09281704859182661FB"); auto uids = key.uids(); ASSERT_EQ(uids->size(), 1); @@ -283,10 +255,10 @@ TEST_F(GpgCoreTest, GpgKeySignatureTest) { } TEST_F(GpgCoreTest, GpgKeyGetterTest) { - auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey( + auto key = GpgFrontend::GpgKeyGetter::GetInstance(1).GetKey( "9490795B78F8AFE9F93BD09281704859182661FB"); ASSERT_TRUE(key.good()); - auto keys = GpgFrontend::GpgKeyGetter::GetInstance().FetchKey(); + auto keys = GpgFrontend::GpgKeyGetter::GetInstance(1).FetchKey(); ASSERT_GE(keys->size(), 1); ASSERT_TRUE(find(keys->begin(), keys->end(), key) != keys->end()); |