diff options
author | Kai Uwe Broulik <kde@privat.broulik.de> | 2018-04-04 15:48:53 +0200 |
---|---|---|
committer | Kai Uwe Broulik <kde@privat.broulik.de> | 2018-07-10 19:46:40 +0000 |
commit | d743df975db3403ec83d67bd376d8a6bfea3dfb0 (patch) | |
tree | 647560847f9ae5d4bd6ddffc5d64d40a030a2f3d /tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp | |
parent | 5c5af7155ae989664919de1f10ac17121fa12a36 (diff) |
Support interactive authorization flag in DBusMessage
This flag was introduced to serve as a replacement for a dedicated "interactive" boolean
argument in method calls guarded by Polkit.
Change-Id: Ida91c9872e70f8ca6672563d0ca6642f38c498ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp')
-rw-r--r-- | tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp index 5494959aaf..05480c6dd2 100644 --- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp @@ -33,6 +33,7 @@ #include <QtTest/QtTest> #include <QtCore/qvariant.h> #include <QtDBus/QtDBus> +#include <QtDBus/private/qdbus_symbols_p.h> #include <qdebug.h> #include "../qdbusmarshall/common.h" #include "myobject.h" @@ -213,6 +214,8 @@ private slots: void propertyWritePeer(); void complexPropertyReadPeer(); void complexPropertyWritePeer(); + + void interactiveAuthorizationRequired(); private: QProcess proc; }; @@ -1127,6 +1130,30 @@ void tst_QDBusInterface::complexPropertyWritePeer() QCOMPARE(complexPropPeer(), arg); } +void tst_QDBusInterface::interactiveAuthorizationRequired() +{ + int major; + int minor; + int micro; + q_dbus_get_version(&major, &minor, µ); + + QVersionNumber dbusVersion(major, minor, micro); + if (dbusVersion < QVersionNumber(1, 9, 2)) + QSKIP("Your DBus library is too old to support interactive authorization"); + + QDBusMessage req = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "interactiveAuthorization"); + QDBusMessage reply = QDBusConnection::sessionBus().call(req); + + QCOMPARE(reply.type(), QDBusMessage::ErrorMessage); + QCOMPARE(reply.errorName(), QStringLiteral("org.freedesktop.DBus.Error.InteractiveAuthorizationRequired")); + + req.setInteractiveAuthorizationAllowed(true); + reply = QDBusConnection::sessionBus().call(req); + + QCOMPARE(reply.type(), QDBusMessage::ReplyMessage); + QVERIFY(reply.arguments().at(0).toBool()); +} + QTEST_MAIN(tst_QDBusInterface) #include "tst_qdbusinterface.moc" |