2
#include <notify-backend.h>
3
#include <NotificationsInterface.h>
5
#include <libqtdbustest/DBusTestRunner.h>
6
#include <libqtdbustest/QProcessDBusService.h>
7
#include <QtTest/QtTest>
9
using namespace QtDBusTest;
11
class TestNotificationServer: public QObject {
14
QSharedPointer<DBusTestRunner> dbus;
16
QSharedPointer<OrgFreedesktopNotificationsInterface> notificationsInterface;
21
DBusTypes::registerNotificationMetaTypes();
23
dbus.reset(new DBusTestRunner);
25
dbus->registerService(
27
new QProcessDBusService(DBUS_SERVICE_NAME,
28
QDBusConnection::SessionBus,
30
QStringList{"--no-gui"})));
31
dbus->startServices();
33
notificationsInterface.reset(
34
new OrgFreedesktopNotificationsInterface(DBUS_SERVICE_NAME,
36
dbus->sessionConnection()));
40
notificationsInterface.reset();
45
int notify(const QString& name) {
47
notificationsInterface->Notify("my app", 0, "icon " + name,
49
"body " + name, QStringList(),
53
void expectNotification(const NotificationDataList& notifications, int index, int id, const QString& name) {
55
notifications.at(index),
59
.setAppIcon("image://theme/icon " + name)
60
.setBody("body " + name)
61
.setSummary("summary " + name)
62
.setExpireTimeout(5000)
67
uint id1 = notify("1");
68
QCOMPARE(id1, uint(1));
70
uint id2 = notify("2");
71
QCOMPARE(id2, uint(2));
73
NotificationDataList notifications = notificationsInterface->GetNotifications("my app");
74
QCOMPARE(notifications.size(), 2);
76
expectNotification(notifications, 0, id1, "1");
77
expectNotification(notifications, 1, id2, "2");
81
uint id1 = notify("1");
82
QCOMPARE(id1, uint(1));
84
uint id2 = notify("2");
85
QCOMPARE(id2, uint(2));
88
NotificationDataList notifications = notificationsInterface->GetNotifications("my app");
89
QCOMPARE(notifications.size(), 2);
91
expectNotification(notifications, 0, id1, "1");
92
expectNotification(notifications, 1, id2, "2");
95
notificationsInterface->CloseNotification(id1).waitForFinished();
98
NotificationDataList notifications = notificationsInterface->GetNotifications("my app");
99
QCOMPARE(notifications.size(), 1);
101
expectNotification(notifications, 0, id2, "2");
105
void testGetCapabilities() {
106
QStringList capabilities = notificationsInterface->GetCapabilities();
107
QStringList expected {"actions",
119
AFFIRMATIVE_TINT_HINT,
124
NON_SHAPED_ICON_HINT,
130
QCOMPARE(capabilities, expected);
133
void testGetServerInformation() {
134
QString vendor, version, specVersion;
135
QString name = notificationsInterface->GetServerInformation(vendor, version, specVersion);
137
QCOMPARE(name, QString("Unity notification server"));
138
QCOMPARE(vendor, QString("Canonical Ltd"));
139
QCOMPARE(version, QString("1.2"));
140
QCOMPARE(specVersion, QString("1.1"));
145
QTEST_MAIN(TestNotificationServer)
146
#include "notificationservertest.moc"