From 26fc60d30352bb3bbf00f8a392bbc695ff8cf29f Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Tue, 23 Nov 2021 00:11:22 +0900 Subject: [PATCH] Removed original test folder and add more manual tests. Signed-off-by: Michele Calgaro --- test/CMakeLists.txt | 20 --- test/test.cpp | 235 ----------------------------- test/test.h | 20 --- tests/CMakeLists.txt | 1 + tests/test_auth_enum_actions.cpp | 56 +++++++ tests/test_check_authorization.cpp | 1 - 6 files changed, 57 insertions(+), 276 deletions(-) delete mode 100644 test/CMakeLists.txt delete mode 100644 test/test.cpp delete mode 100644 test/test.h create mode 100644 tests/test_auth_enum_actions.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt deleted file mode 100644 index f862c0b14..000000000 --- a/test/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -enable_testing() - -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/agent -) - -automoc4_add_executable(polkit-tqt-test - test.cpp -) - -target_link_libraries(polkit-tqt-test - ${TQT_TQTCORE_LIBRARY} - ${TQT_TQTTEST_LIBRARY} - ${TQT_TQTGUI_LIBRARY} - polkit-tqt-core-1 -) - -add_test(BaseTest ${CMAKE_CURRENT_BINARY_DIR}/polkit-tqt-test) diff --git a/test/test.cpp b/test/test.cpp deleted file mode 100644 index 62a3ecbfa..000000000 --- a/test/test.cpp +++ /dev/null @@ -1,235 +0,0 @@ - - -#include "test.h" -#include "core/polkittqt1-authority.h" -#include "agent/polkittqt1-agent-session.h" -#include "core/polkittqt1-details.h" -#include -#include -#include -#include -#include -using namespace PolkitTQt; -using namespace PolkitTQt::Agent; - -void wait() -{ - for (int i = 0; i < 100; i++) { - usleep(100); - TQCoreApplication::processEvents(); - } -} - -void TestAuth::test_Auth_checkAuthorization() -{ - // This needs the file org.tqt.policykit.examples.policy from examples to be installed - UnixProcessSubject process(TQCoreApplication::applicationPid()); - Authority::Result result; - // Check if this method returns good authorization results - Authority *authority = Authority::instance(); - result = authority->checkAuthorizationSync("org.tqt.policykit.examples.kick", process, Authority::None); - TQCOMPARE(result, Authority::No); - TQVERIFY(!authority->hasError()); - result = authority->checkAuthorizationSync("org.tqt.policykit.examples.cry", process, Authority::None); - TQCOMPARE(result, Authority::Yes); - TQVERIFY(!authority->hasError()); - result = authority->checkAuthorizationSync("org.tqt.policykit.examples.bleed", process, Authority::None); - TQCOMPARE(result, Authority::Challenge); - TQVERIFY(!authority->hasError()); - - // Now we try async methods - TQSignalSpy spy(authority, SIGNAL(checkAuthorizationFinished(PolkitTQt::Authority::Result))); - // Call asynchronous checkAuthorization - authority->checkAuthorization("org.tqt.policykit.examples.kick", process, Authority::None); - // Give the polkit time to obtain the result and emit the signal with it - wait(); - // Test if the signal was emitted - TQCOMPARE(spy.count(), 1); - // Test the result - result = qVariantValue (spy.takeFirst()[0]); - TQCOMPARE(result, Authority::No); - TQVERIFY(!authority->hasError()); - spy.clear(); - - // Let's test the cancellability - authority->checkAuthorization("org.tqt.policykit.examples.kick", process, Authority::None); - authority->checkAuthorizationCancel(); - // Wait and check if the signal arrieved - wait(); - TQCOMPARE(spy.count(), 0); - - // Check if it can cancel user authentication dialog - authority->checkAuthorization("org.tqt.policykit.examples.bleed", process, Authority::AllowUserInteraction); - // Show it for second - sleep(1); - // And now kill it - authority->checkAuthorizationCancel(); - TQVERIFY(!authority->hasError()); - // But how to test if it was successful? - tqWarning() << "You should see an authentication dialog for a short period."; -} - -void TestAuth::test_Auth_enumerateActions() -{ - // This needs the file org.tqt.policykit.examples.policy from examples to be installed - ActionDescription::List list = Authority::instance()->enumerateActionsSync(); - TQVERIFY(!Authority::instance()->hasError()); - // Check whether enumerateAction returns at least example actions - int count = 0; - Q_FOREACH(const ActionDescription &ad, list) { - if ((ad.actionId() == "org.tqt.policykit.examples.kick") || - (ad.actionId() == "org.tqt.policykit.examples.cry") || - (ad.actionId() == "org.tqt.policykit.examples.bleed")) - count++; - } - TQCOMPARE(count, 3); - - - // Test asynchronous version as well - list.clear(); - count = 0; - TQSignalSpy spy(Authority::instance(), SIGNAL(enumerateActionsFinished(PolkitTQt::ActionDescription::List))); - Authority::instance()->enumerateActions(); - wait(); - TQCOMPARE(spy.count(), 1); - list = qVariantValue (spy.takeFirst()[0]); - TQVERIFY(!Authority::instance()->hasError()); - Q_FOREACH(const ActionDescription &ad, list) { - if ((ad.actionId() == "org.tqt.policykit.examples.kick") || - (ad.actionId() == "org.tqt.policykit.examples.cry") || - (ad.actionId() == "org.tqt.policykit.examples.bleed")) - count++; - } - TQCOMPARE(count, 3); - - // Test cancelling the enumeration - spy.clear(); - Authority::instance()->enumerateActions(); - Authority::instance()->enumerateActionsCancel(); - wait(); - TQCOMPARE(spy.count(), 0); - TQVERIFY(!Authority::instance()->hasError()); -} - -void TestAuth::test_Identity() -{ - // Get real name and id of current user and group - struct passwd *userinfo = getpwuid(getuid()); - TQString userName = userinfo->pw_name; - unsigned int userId = userinfo->pw_uid; - unsigned int groupId = userinfo->pw_gid; - - // Try to create UnixUser from username - UnixUserIdentity user(userName); - TQVERIFY(user.identity()); - - // Create generic Identity from UnixUser via string representation - Identity id = Identity::fromString(user.toString()); - // Compare obtained uid with real uid - TQCOMPARE(id.toUnixUserIdentity().uid(), userId); - - // Create generic Identity from UnixGroup via string representation - UnixGroupIdentity group(groupId); - TQVERIFY(group.identity()); - id = Identity::fromString(group.toString()); - TQCOMPARE(id.toUnixGroupIdentity().gid(), groupId); - - // Test setting gid to another value - group.setGid(9999U); - id = Identity::fromString(group.toString()); - TQCOMPARE(id.toUnixGroupIdentity().gid(), 9999U); -} - -void TestAuth::test_Authority() -{ - Authority *authority = Authority::instance(); - TQVERIFY(authority); - TQVERIFY(!authority->hasError()); - - // Verify emiting of the signals - TQSignalSpy spy(authority, SIGNAL(consoleKitDBChanged())); - TQDBusMessage msg = TQDBusMessage::createMethodCall("org.freedesktop.ConsoleKit", - "/org/freedesktop/ConsoleKit/Manager", - "org.freedesktop.ConsoleKit.Manager", - "OpenSession"); - TQDBusMessage reply = TQDBusConnection::systemBus().call(msg); - TQString cookie; - cookie = qVariantValue (reply.arguments()[0]); - - - msg = TQDBusMessage::createMethodCall("org.freedesktop.ConsoleKit", - "/org/freedesktop/ConsoleKit/Manager", - "org.freedesktop.ConsoleKit.Manager", - "CloseSession"); - msg.setArguments(TQList () << cookie); - TQDBusConnection::systemBus().call(msg); - // FIXME: Emitting consoleKitDBChanged is not working now - tqWarning() << "Emitting consoleKitDBChanged is not working now, test will be skipped"; - //TQVERIFY(spy.count() > 0); - TQVERIFY(!authority->hasError()); - - // configChanged signal from authority requires changing some policy files - // and it would require user interaction (typing the password) - // so this is not covered by this test -} - -void TestAuth::test_Subject() -{ - // Get pid of this appication - TQ_LONG pid = TQCoreApplication::applicationPid(); - // Create unix process for it - UnixProcessSubject *process = new UnixProcessSubject(pid); - // Test if pid doesn't differ - TQCOMPARE(process->pid(), pid); - - // Serialize and deserialize subject - //Subject *subject = Subject::fromString(process->toString()); - // and try it - //TQCOMPARE(((UnixProcess *) subject)->pid(), pid); - delete process; -} - -void TestAuth::test_Session() -{ - /* - UnixUser user(getuid()); - Session *session = new Session(&user, "/org/freedesktop/ConsoleKit/Session2"); - TQSignalSpy spy_completed(session, SIGNAL(completed(bool))); - TQSignalSpy spy_request(session, SIGNAL(request(TQString,bool))); - TQSignalSpy spy_error(session, SIGNAL(showError(TQString))); - TQSignalSpy spy_info(session, SIGNAL(showInfo(TQString))); - session->initiate(); - session->response("aaa"); - // Canceling should emit the "completed" signal - session->cancel(); - TQCOMPARE(spy_completed.count(), 1); - - //UnixProcess *process = new UnixProcess(TQCoreApplication::applicationPid()); - //Authority::instance()->checkAuthorization("org.tqt.policykit.examples.kick", process, Authority::None); - - tqDebug() << "COMPLETED:" << spy_completed.count(); - tqDebug() << "REQUEST:" << spy_request.count(); - tqDebug() << "ERROR:" << spy_error.count(); - tqDebug() << "INFO:" << spy_info.count(); - */ -} - -void TestAuth::test_Details() -{ - Details details; - details.insert("1", "aaa"); - details.insert("2", "bbb"); - details.insert("3", "ccc"); - details.insert("4", "ddd"); - TQCOMPARE(details.lookup("1"), TQString("aaa")); - TQCOMPARE(details.lookup("2"), TQString("bbb")); - TQCOMPARE(details.lookup("3"), TQString("ccc")); - TQCOMPARE(details.lookup("4"), TQString("ddd")); - TQList list = details.keys(); - TQVERIFY(list.contains("1")); - TQVERIFY(list.contains("2")); - TQVERIFY(list.contains("3")); - TQVERIFY(list.contains("4")); -} - -TQTEST_MAIN(TestAuth) diff --git a/test/test.h b/test/test.h deleted file mode 100644 index 4a3579d89..000000000 --- a/test/test.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef TEST_H -#define TEST_H - -#include -#include - -class TestAuth : public TQObject -{ - Q_OBJECT -private Q_SLOTS: - void test_Auth_checkAuthorization(); - void test_Auth_enumerateActions(); - void test_Identity(); - void test_Authority(); - void test_Subject(); - void test_Session(); - void test_Details(); -}; - -#endif // TEST_H diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index cc2083861..92a8543d0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -50,6 +50,7 @@ set( _test_auto_executables # ${CMAKE_CURRENT_SOURCE_DIR}/run_test.sh set( _test_manual_executables test_check_authorization + test_auth_enum_actions ) foreach( _test_name ${_test_auto_executables} ) diff --git a/tests/test_auth_enum_actions.cpp b/tests/test_auth_enum_actions.cpp new file mode 100644 index 000000000..d7c992a97 --- /dev/null +++ b/tests/test_auth_enum_actions.cpp @@ -0,0 +1,56 @@ + +#include + +#include "core/polkit-tqt-authority.h" +#include "core/polkit-tqt-details.h" + +#define TEST_PASSED 0 +#define TEST_FAILED 1 + +using namespace PolkitTQt; + +void wait() +{ + for (int i = 0; i < 100; i++) + { + usleep(100); + } +} + +int main(void) +{ + // This needs the file org.tqt.policykit.examples.policy from examples to be installed + ActionDescription::List list = Authority::instance()->enumerateActionsSync(); + if (Authority::instance()->hasError()) + { + return TEST_FAILED; + } + // Check whether enumerateAction returns at least example actions + int count = 0; + ActionDescription::List::const_iterator adIt; + for (adIt = list.begin(); adIt != list.end(); ++adIt) + { + if (((*adIt).actionId() == "org.tqt.policykit.examples.kick") || + ((*adIt).actionId() == "org.tqt.policykit.examples.cry") || + ((*adIt).actionId() == "org.tqt.policykit.examples.bleed")) + { + count++; + } + } + if (count != 3) + { + return TEST_FAILED; + } + + // Test cancelling the enumeration + Authority::instance()->enumerateActions(); + Authority::instance()->enumerateActionsCancel(); + wait(); + if (Authority::instance()->hasError()) + { + return TEST_FAILED; + } + + return TEST_PASSED; +} + diff --git a/tests/test_check_authorization.cpp b/tests/test_check_authorization.cpp index 4fb6674c1..61b836920 100644 --- a/tests/test_check_authorization.cpp +++ b/tests/test_check_authorization.cpp @@ -1,5 +1,4 @@ -#include #include #include "core/polkit-tqt-authority.h"