From 221d00c4945c027b83d2ea72bc213e465d16884d Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Wed, 29 Apr 2020 18:45:17 +0300 Subject: Expand pluginloader test coverage - add poi-plugin-load to test compatibility of plugins - rewrite tests to use catch2 - use cpp stdlib to read files - clang-tidy and clang-format pass --- lib/pluginloader/test/pluginloader-sigmatch.cpp | 98 ++++++++++++++++++++++--- 1 file changed, 89 insertions(+), 9 deletions(-) (limited to 'lib/pluginloader/test/pluginloader-sigmatch.cpp') diff --git a/lib/pluginloader/test/pluginloader-sigmatch.cpp b/lib/pluginloader/test/pluginloader-sigmatch.cpp index 2e5a1ff..991d9bc 100644 --- a/lib/pluginloader/test/pluginloader-sigmatch.cpp +++ b/lib/pluginloader/test/pluginloader-sigmatch.cpp @@ -1,17 +1,97 @@ +#define CATCH_CONFIG_MAIN + #include "pluginloader.h" -#include +#include + +TEST_CASE("PluginLoader::signature_state") +{ + // ignore + REQUIRE(PluginLoader::signature_state(true, false, false) == PluginLoader::SigIgnored); + + // check + REQUIRE(PluginLoader::signature_state(false, true, false) >= PluginLoader::SigChecked); + REQUIRE(PluginLoader::signature_state(false, true, false) < PluginLoader::SigEnforced); + REQUIRE(PluginLoader::signature_state(true, true, false) >= PluginLoader::SigChecked); + REQUIRE(PluginLoader::signature_state(true, true, false) < PluginLoader::SigEnforced); + + // enfore + REQUIRE(PluginLoader::signature_state(false, false, true) >= PluginLoader::SigEnforced); + REQUIRE(PluginLoader::signature_state(true, false, true) >= PluginLoader::SigEnforced); + REQUIRE(PluginLoader::signature_state(false, true, true) >= PluginLoader::SigEnforced); + REQUIRE(PluginLoader::signature_state(true, true, true) >= PluginLoader::SigEnforced); +} + +TEST_CASE("files") +{ + REQUIRE(qEnvironmentVariableIsSet("UNSIGNEDFILE")); + REQUIRE(qEnvironmentVariableIsSet("SIGNEDFILE")); + REQUIRE(qEnvironmentVariableIsSet("BADSIGNEDFILE")); +} + +TEST_CASE("PluginLoader::verify missing plugin") +{ + const auto state = PluginLoader::signature_state(false, false, false); + PluginLoader loader("", state); + + REQUIRE_FALSE(loader.verify()); + REQUIRE_FALSE(loader.errorString().isEmpty()); +} + +TEST_CASE("PluginLoader::verify signature ignored") +{ + const auto state = PluginLoader::signature_state(true, false, false); + PluginLoader loader(qgetenv("UNSIGNEDFILE"), state); + + REQUIRE(loader.verify()); +} -PluginLoader *loader = nullptr; +TEST_CASE("PluginLoader::verify signature checked [avialable]") +{ + const auto state = PluginLoader::signature_state(false, true, false); + PluginLoader loader(qgetenv("SIGNEDFILE"), state); + + REQUIRE(loader.verify()); +} + +TEST_CASE("PluginLoader::verify signature checked [missing]") +{ + const auto state = PluginLoader::signature_state(false, true, false); + PluginLoader loader(qgetenv("UNSIGNEDFILE"), state); + + REQUIRE(loader.verify()); +} + +TEST_CASE("PluginLoader::verify signature checked [bad]") +{ + const auto state = PluginLoader::signature_state(false, true, false); + PluginLoader loader(qgetenv("BADSIGNEDFILE"), state); + + REQUIRE_FALSE(loader.verify()); + REQUIRE_FALSE(loader.errorString().isEmpty()); +} + +TEST_CASE("PluginLoader::verify signature enforced [avialable]") +{ + const auto state = PluginLoader::signature_state(false, false, true); + PluginLoader loader(qgetenv("SIGNEDFILE"), state); + + REQUIRE(loader.verify()); +} + +TEST_CASE("PluginLoader::verify signature enforced [missing]") +{ + const auto state = PluginLoader::signature_state(false, false, true); + PluginLoader loader(qgetenv("UNSIGNEDFILE"), state); -TEST(PluginLoader, SignatureMatcher) { - EXPECT_TRUE(loader->verify()); + REQUIRE_FALSE(loader.verify()); + REQUIRE_FALSE(loader.errorString().isEmpty()); } -int main(int argc, char **argv) +TEST_CASE("PluginLoader::verify signature enforced [bad]") { - const PluginLoader::SignatureState state(false, true, false); - loader = new PluginLoader(qgetenv("SIGNEDFILE"), state); + const auto state = PluginLoader::signature_state(false, false, true); + PluginLoader loader(qgetenv("BADSIGNEDFILE"), state); - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + REQUIRE_FALSE(loader.verify()); + REQUIRE_FALSE(loader.errorString().isEmpty()); } -- cgit v1.2.1