@@ -19,16 +19,13 @@
20#include "AccountsService.h"
20#include "AccountsService.h"
21#include "AccountsServiceDBusAdaptor.h"
21#include "AccountsServiceDBusAdaptor.h"
22#include <QSignalSpy>
23#include <QSignalSpy>
23#include <QTest>
24#include <QTest>
24#include <QDebug>
25#include <QDebug>
25#include <QDBusReply>
26#include <QDBusReply>
26#include <QDBusMetaType>
27#include <QDBusMetaType>
28−using StringMap = QMap<QString,QString>;
29−using StringMapList = QList<StringMap>;
30−Q_DECLARE_METATYPE(StringMapList)
32template <class T>
29template <class T>
33QVariant dbusVariant(const T& value) { return QVariant::fromValue(QDBusVariant(value)); }
30QVariant dbusVariant(const T& value) { return QVariant::fromValue(QDBusVariant(value)); }
@@ -263,10 +260,13 @@ private Q_SLOTS:
263 AccountsService session(this, QTest::currentTestFunction());
260 AccountsService session(this, QTest::currentTestFunction());
265 QCOMPARE(session.backgroundFile(), QString());
262 QCOMPARE(session.backgroundFile(), QString());
266− ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
263+
264+ QDBusInterface accountsIface(m_userInterface->service(),
265+ m_userInterface->path(),
267− "org.freedesktop.Accounts.User",
266+ "org.freedesktop.Accounts.User");
268− "BackgroundFile",
267+ ASSERT_DBUS_CALL(accountsIface.asyncCall("SetBackgroundFile",
269− dbusVariant("/test/BackgroundFile")));
268+ "/test/BackgroundFile"));
270 QTRY_COMPARE(session.backgroundFile(), QString("/test/BackgroundFile"));
270 QTRY_COMPARE(session.backgroundFile(), QString("/test/BackgroundFile"));
@@ -311,6 +311,39 @@ private Q_SLOTS:
311 QCOMPARE(arguments.at(0).toInt(), 0);
311 QCOMPARE(arguments.at(0).toInt(), 0);
314+ void testSetRealName()
316+ AccountsService session(this, QTest::currentTestFunction());
318+ // Just confirm that we can't set normal way
319+ auto message = m_userInterface->call("Set",
320+ "org.freedesktop.Accounts.User",
322+ dbusVariant("Stallman"));
323+ QCOMPARE(message.type(), QDBusMessage::ErrorMessage);
324+ QCOMPARE(message.errorName(), QStringLiteral("org.freedesktop.DBus.Error.InvalidArgs"));
326+ message = m_userInterface->call("Get",
327+ "org.freedesktop.Accounts.User",
329+ QCOMPARE(message.type(), QDBusMessage::ReplyMessage);
330+ auto response = message.arguments().first().value<QDBusVariant>().variant().toString();
331+ QCOMPARE(response, QStringLiteral(""));
333+ // Now try it via our AS wrapper and confirm it did get through, unlike above
334+ session.setRealName("Stallman");
336+ QCOMPARE(session.realName(), QStringLiteral("Stallman"));
338+ message = m_userInterface->call("Get",
339+ "org.freedesktop.Accounts.User",
341+ QCOMPARE(message.type(), QDBusMessage::ReplyMessage);
342+ response = message.arguments().first().value<QDBusVariant>().variant().toString();
343+ QCOMPARE(response, QStringLiteral("Stallman"));
314 void testAsynchronousChangeForKeymaps()
347 void testAsynchronousChangeForKeymaps()
316 AccountsService session(this, QTest::currentTestFunction());
349 AccountsService session(this, QTest::currentTestFunction());
@@ -325,10 +358,11 @@ private Q_SLOTS:
325 map2.insert("xkb", "fr");
358 map2.insert("xkb", "fr");
326 inputSources.append(map2);
359 inputSources.append(map2);
361+ QDBusInterface accountsIface(m_userInterface->service(),
328− ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
362+ m_userInterface->path(),
329− "org.freedesktop.Accounts.User",
363+ "org.freedesktop.Accounts.User");
330− "InputSources",
364+ ASSERT_DBUS_CALL(accountsIface.asyncCall("SetInputSources",
331− QVariant::fromValue(QDBusVariant(QVariant::fromValue(inputSources)))));
365+ QVariant::fromValue(inputSources)));
332 QStringList result = {"cz+qwerty", "fr"};
366 QStringList result = {"cz+qwerty", "fr"};
333 QTRY_COMPARE(session.keymaps(), result);
367 QTRY_COMPARE(session.keymaps(), result);