aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edmundson <kde@davidedmundson.co.uk>2016-05-19 21:13:28 +0100
committerDavid Edmundson <kde@davidedmundson.co.uk>2016-05-19 22:18:35 +0100
commit4015794d1275833758198d5705bbdf811c7ed89d (patch)
treeefcd785aabe4783396d77ff4f4779fa26600af48
parentd7893439b0da3a6526044121d8e545c40730b219 (diff)
downloadkconfig-4015794d1275833758198d5705bbdf811c7ed89d.tar.gz
kconfig-4015794d1275833758198d5705bbdf811c7ed89d.tar.bz2
Add autotest for broken KAuthorised check in tryExec()
-rw-r--r--autotests/kdesktopfiletest.cpp49
-rw-r--r--autotests/kdesktopfiletest.h2
2 files changed, 51 insertions, 0 deletions
diff --git a/autotests/kdesktopfiletest.cpp b/autotests/kdesktopfiletest.cpp
index a90faf3c..393a6a03 100644
--- a/autotests/kdesktopfiletest.cpp
+++ b/autotests/kdesktopfiletest.cpp
@@ -18,6 +18,7 @@
#include "kdesktopfiletest.h"
#include "helper.h"
#include <kconfiggroup.h>
+#include <ksharedconfig.h>
#include <qtemporaryfile.h>
#include "kdesktopfile.h"
@@ -26,6 +27,14 @@
QTEST_MAIN(KDesktopFileTest)
+void KDesktopFileTest::initTestCase()
+{
+ QStandardPaths::enableTestMode(true);
+
+ KConfigGroup actionRestrictions(KSharedConfig::openConfig(), "KDE Action Restrictions");
+ actionRestrictions.writeEntry("someBlockedAction", false);
+}
+
void KDesktopFileTest::testRead()
{
QTemporaryFile file("testReadXXXXXX.desktop");
@@ -206,3 +215,43 @@ void KDesktopFileTest::testIsAuthorizedDesktopFile()
qWarning("Skipping test for plasma-desktop.desktop, not found. kde-workspace not installed?");
}
}
+
+void KDesktopFileTest::testTryExecWithAuthorizeAction()
+{
+ {
+ QTemporaryFile file("testAuthActionXXXXXX.desktop");
+ QVERIFY(file.open());
+ const QString fileName = file.fileName();
+ QTextStream ts(&file);
+ ts <<
+ "[Desktop Entry]\n"
+ "Type=Application\n"
+ "Name=My Application\n"
+ "Exec=kfoo\n"
+ "TryExec=bash\n"
+ "X-KDE-AuthorizeAction=someAction"
+ "\n";
+ file.close();
+
+ KDesktopFile desktopFile(fileName);
+ QVERIFY(desktopFile.tryExec());
+ }
+ {
+ QTemporaryFile file("testAuthActionXXXXXX.desktop");
+ QVERIFY(file.open());
+ const QString fileName = file.fileName();
+ QTextStream ts(&file);
+ ts <<
+ "[Desktop Entry]\n"
+ "Type=Application\n"
+ "Name=My Application\n"
+ "Exec=kfoo\n"
+ "TryExec=bash\n"
+ "X-KDE-AuthorizeAction=someBlockedAction"
+ "\n";
+ file.close();
+
+ KDesktopFile desktopFile(fileName);
+ QVERIFY(!desktopFile.tryExec());
+ }
+}
diff --git a/autotests/kdesktopfiletest.h b/autotests/kdesktopfiletest.h
index f4e0c96b..eb0bd1df 100644
--- a/autotests/kdesktopfiletest.h
+++ b/autotests/kdesktopfiletest.h
@@ -25,6 +25,7 @@ class KDesktopFileTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
+ void initTestCase();
void testRead();
void testReadLocalized_data();
void testReadLocalized();
@@ -32,6 +33,7 @@ private Q_SLOTS:
void testSuccessfulTryExec();
void testActionGroup();
void testIsAuthorizedDesktopFile();
+ void testTryExecWithAuthorizeAction();
};