diff options
author | Alexander Lohnau <alexander.lohnau@gmx.de> | 2021-09-26 18:47:44 +0200 |
---|---|---|
committer | Alexander Lohnau <alexander.lohnau@gmx.de> | 2021-10-13 12:59:30 +0000 |
commit | b0a3e4276e8318475c39c2b7b4b5bc4040dcd19e (patch) | |
tree | 6eeea75d0b40a93ae590eb46095215ce6e26ba33 /autotests/kconfigtest.cpp | |
parent | 9b44f490c8f5136571da34fcf28eb15e0f3bea6a (diff) | |
download | kconfig-b0a3e4276e8318475c39c2b7b4b5bc4040dcd19e.tar.gz kconfig-b0a3e4276e8318475c39c2b7b4b5bc4040dcd19e.tar.bz2 |
Create enum to to authorize common keys
By using an enum we have a central place to provide docs for the most
common actions/restrictions. Also consumers can pass in type-safe enum
values instead of potentially undocumented strings that might contain typos.
Also it is better documents is a value is supposed to be authorized using
KAuthorized::authorize or KAuthorized::authorizeAction, in the case of "shell_access"
this was mixed up from time to time.
Considering that we do not want the parameter for the methods to become too long
I have deliberately decided against using `enum class`. Also we don't have
and usecases for the binary operators in combination with the newly added enums.
Task: https://phabricator.kde.org/T11948
Diffstat (limited to 'autotests/kconfigtest.cpp')
-rw-r--r-- | autotests/kconfigtest.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/autotests/kconfigtest.cpp b/autotests/kconfigtest.cpp index 00e7bbf0..9f88e67b 100644 --- a/autotests/kconfigtest.cpp +++ b/autotests/kconfigtest.cpp @@ -16,6 +16,7 @@ #include <kdesktopfile.h> #include <qtemporarydir.h> +#include <kauthorized.h> #include <kconfiggroup.h> #include <kconfigwatcher.h> #include <ksharedconfig.h> @@ -2071,6 +2072,18 @@ void KConfigTest::testNotify() QCOMPARE(otherWatcherSpy[0][1].value<QByteArrayList>(), QByteArrayList({"someGlobalEntry"})); } +void KConfigTest::testKAuthorizeEnums() +{ + KSharedConfig::Ptr config = KSharedConfig::openConfig(); + KConfigGroup actionRestrictions = config->group("KDE Action Restrictions"); + actionRestrictions.writeEntry("shell_access", false); + actionRestrictions.writeEntry("action/open_with", false); + + QVERIFY(!KAuthorized::authorize(KAuthorized::SHELL_ACCESS)); + QVERIFY(!KAuthorized::authorizeAction(KAuthorized::OPEN_WITH)); + actionRestrictions.deleteGroup(); +} + void KConfigTest::testKdeglobalsVsDefault() { // Add testRestore key with global value in kdeglobals |