diff options
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" |