diff --git a/tests/dbus_smoketest.cpp b/tests/dbus_smoketest.cpp index 9d71890..b82ab93 100644 --- a/tests/dbus_smoketest.cpp +++ b/tests/dbus_smoketest.cpp @@ -91,6 +91,7 @@ private Q_SLOTS: void pingRunner(); void runnerVersionAndListRunners(); void runnerResolveLaunchMissingProgram(); + void runnerResolveLaunchUnknownRunnerId(); void pingInput(); void inputVersionAndCapabilities(); void inputProfilesCrud(); @@ -575,6 +576,27 @@ void DbusSmokeTest::runnerResolveLaunchMissingProgram() QVERIFY(out.value(QStringLiteral("error")).toString().contains(QStringLiteral("missing program"), Qt::CaseInsensitive)); } +void DbusSmokeTest::runnerResolveLaunchUnknownRunnerId() +{ + org::kde::ALaKarte::Runner1 iface(QStringLiteral("org.kde.ALaKarte.Runner1"), QStringLiteral("/org/kde/ALaKarte/Runner1"), m_bus); + QVERIFY(iface.isValid()); + iface.setTimeout(2000); + + QVariantMap spec; + spec.insert(QStringLiteral("runnerId"), QStringLiteral("alakarte-test-nonexistent")); + spec.insert(QStringLiteral("program"), QStringLiteral("/bin/true")); + spec.insert(QStringLiteral("args"), QStringList{}); + + QDBusPendingReply reply = iface.ResolveLaunch(spec); + reply.waitForFinished(); + QVERIFY2(!reply.isError(), qPrintable(reply.error().message())); + + const QVariantMap out = reply.value(); + QCOMPARE(out.value(QStringLiteral("ok")).toBool(), false); + QVERIFY(out.contains(QStringLiteral("error"))); + QVERIFY(out.value(QStringLiteral("error")).toString().contains(QStringLiteral("unknown runnerId"), Qt::CaseInsensitive)); +} + void DbusSmokeTest::runnerGameProfiles() { org::kde::ALaKarte::Runner1 iface(QStringLiteral("org.kde.ALaKarte.Runner1"), QStringLiteral("/org/kde/ALaKarte/Runner1"), m_bus);