aboutsummaryrefslogtreecommitdiffstats
path: root/test/GpgCoreTestKeygen.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-12-31 01:50:20 +0000
committerSaturneric <[email protected]>2021-12-31 01:50:20 +0000
commitcb10cffa20702ec3dac50adb5aeeebd6138279b0 (patch)
treec614cfb31b30d2c7f3a8175c8309ab2f738953d0 /test/GpgCoreTestKeygen.cpp
parent<refactor, test>(core, test): core improved and test gpg alone mode (diff)
downloadGpgFrontend-cb10cffa20702ec3dac50adb5aeeebd6138279b0.tar.gz
GpgFrontend-cb10cffa20702ec3dac50adb5aeeebd6138279b0.zip
<refactor, test>(core, test): core improved and test gpg key generation
1. Refactor the initialization code of Context. 2. Improve some callback function support. 3. Improve the key deletion function. 4. Modify the key output of some functions. 5. Add test for key generation. 6. Delete all imported keys at the end of the test case. 7. Add setup mode initialization parameters for Context.
Diffstat (limited to '')
-rw-r--r--test/GpgCoreTestKeygen.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/test/GpgCoreTestKeygen.cpp b/test/GpgCoreTestKeygen.cpp
index 05d77af1..b703ee40 100644
--- a/test/GpgCoreTestKeygen.cpp
+++ b/test/GpgCoreTestKeygen.cpp
@@ -33,6 +33,7 @@ TEST_F(GpgCoreTest, GenerateKeyTest) {
keygen_info->setName("foo");
keygen_info->setEmail("[email protected]");
keygen_info->setComment("");
+ keygen_info->setKeySize(1024);
keygen_info->setAlgo("rsa");
keygen_info->setNonExpired(true);
keygen_info->setNonPassPhrase(true);
@@ -50,3 +51,78 @@ TEST_F(GpgCoreTest, GenerateKeyTest) {
ASSERT_TRUE(key.good());
key_opera.DeleteKey(fpr);
}
+
+TEST_F(GpgCoreTest, GenerateKeyTest_1) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(default_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>();
+ keygen_info->setName("foo");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("hello gpgfrontend");
+ keygen_info->setAlgo("rsa");
+ keygen_info->setKeySize(4096);
+ keygen_info->setNonExpired(false);
+ keygen_info->setExpired(boost::posix_time::second_clock::local_time() +
+ boost::posix_time::hours(24));
+ keygen_info->setNonPassPhrase(false);
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(default_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+}
+
+TEST_F(GpgCoreTest, GenerateKeyTest_4) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(default_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>();
+ keygen_info->setName("foo");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("");
+ keygen_info->setAlgo("dsa");
+ keygen_info->setNonExpired(true);
+ keygen_info->setNonPassPhrase(false);
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(default_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+}
+
+TEST_F(GpgCoreTest, GenerateKeyTest_5) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(default_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>();
+ keygen_info->setName("foo");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("");
+ keygen_info->setAlgo("ed25519");
+ keygen_info->setNonExpired(true);
+ keygen_info->setNonPassPhrase(false);
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(default_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+}