fixed enable disable notification tests
This commit is contained in:
parent
44bdfbcb13
commit
b67bd44722
@ -357,6 +357,8 @@ void DevicePlugin::deviceRemoved(Device *device)
|
|||||||
Q_UNUSED(device)
|
Q_UNUSED(device)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! This method will be called for \l{Device}{Devices} with the \l{DeviceClass::SetupMethodDisplayPin} right after the paring request
|
||||||
|
* with the given \a pairingTransactionId for the given \a deviceDescriptor.*/
|
||||||
DeviceManager::DeviceError DevicePlugin::displayPin(const PairingTransactionId &pairingTransactionId, const DeviceDescriptor &deviceDescriptor)
|
DeviceManager::DeviceError DevicePlugin::displayPin(const PairingTransactionId &pairingTransactionId, const DeviceDescriptor &deviceDescriptor)
|
||||||
{
|
{
|
||||||
Q_UNUSED(pairingTransactionId)
|
Q_UNUSED(pairingTransactionId)
|
||||||
@ -368,7 +370,8 @@ DeviceManager::DeviceError DevicePlugin::displayPin(const PairingTransactionId &
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*! Confirms the pairing of a \a deviceClassId with the given \a pairingTransactionId and \a params.
|
/*! Confirms the pairing of a \a deviceClassId with the given \a pairingTransactionId and \a params.
|
||||||
* Returns \l{DeviceManager::DeviceError}{DeviceError} to inform about the result. */
|
* Returns \l{DeviceManager::DeviceError}{DeviceError} to inform about the result. The optional paramerter
|
||||||
|
* \a secret contains for example the pin for \l{Device}{Devices} with the setup method \l{DeviceClass::SetupMethodDisplayPin}.*/
|
||||||
DeviceManager::DeviceSetupStatus DevicePlugin::confirmPairing(const PairingTransactionId &pairingTransactionId, const DeviceClassId &deviceClassId, const ParamList ¶ms, const QString &secret = QString())
|
DeviceManager::DeviceSetupStatus DevicePlugin::confirmPairing(const PairingTransactionId &pairingTransactionId, const DeviceClassId &deviceClassId, const ParamList ¶ms, const QString &secret = QString())
|
||||||
{
|
{
|
||||||
Q_UNUSED(pairingTransactionId)
|
Q_UNUSED(pairingTransactionId)
|
||||||
|
|||||||
@ -92,6 +92,10 @@
|
|||||||
This signal is emitted when a \a rule was added to the system.
|
This signal is emitted when a \a rule was added to the system.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*! \fn void GuhCore::ruleConfigurationChanged(const Rule &rule);
|
||||||
|
This signal is emitted when the configuration of \a rule changed.
|
||||||
|
*/
|
||||||
|
|
||||||
/*! \fn void ruleActiveChanged(const Rule &rule);
|
/*! \fn void ruleActiveChanged(const Rule &rule);
|
||||||
This signal is emitted when a \a rule changed the active state.
|
This signal is emitted when a \a rule changed the active state.
|
||||||
A \l{Rule} is active, when all \l{State}{States} match with the \l{StateDescriptor} conditions.
|
A \l{Rule} is active, when all \l{State}{States} match with the \l{StateDescriptor} conditions.
|
||||||
@ -311,34 +315,36 @@ DeviceManager::DeviceError GuhCore::editDevice(const DeviceId &deviceId, const D
|
|||||||
return m_deviceManager->editDevice(deviceId, deviceDescriptorId);
|
return m_deviceManager->editDevice(deviceId, deviceDescriptorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Calls the metheod RuleEngine::rule().
|
/*! Calls the metheod RuleEngine::rules().
|
||||||
* \sa RuleEngine, */
|
* \sa RuleEngine::rules(), */
|
||||||
QList<Rule> GuhCore::rules() const
|
QList<Rule> GuhCore::rules() const
|
||||||
{
|
{
|
||||||
return m_ruleEngine->rules();
|
return m_ruleEngine->rules();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Calls the metheod RuleEngine::ruleIds().
|
/*! Calls the metheod RuleEngine::ruleIds().
|
||||||
* \sa RuleEngine, */
|
* \sa RuleEngine::ruleIds(), */
|
||||||
QList<RuleId> GuhCore::ruleIds() const
|
QList<RuleId> GuhCore::ruleIds() const
|
||||||
{
|
{
|
||||||
return m_ruleEngine->ruleIds();
|
return m_ruleEngine->ruleIds();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Calls the metheod RuleEngine::findRule(\a ruleId).
|
/*! Calls the metheod RuleEngine::findRule(\a ruleId).
|
||||||
* \sa RuleEngine, */
|
* \sa RuleEngine::findRule(), */
|
||||||
Rule GuhCore::findRule(const RuleId &ruleId)
|
Rule GuhCore::findRule(const RuleId &ruleId)
|
||||||
{
|
{
|
||||||
return m_ruleEngine->findRule(ruleId);
|
return m_ruleEngine->findRule(ruleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Calls the metheod RuleEngine::addRule(\a id, \a name, \a eventDescriptorList, \a stateEvaluator \a actionList, \a exitActionList, \a enabled).
|
/*! Calls the metheod RuleEngine::addRule(\a id, \a name, \a eventDescriptorList, \a stateEvaluator \a actionList, \a exitActionList, \a enabled).
|
||||||
* \sa RuleEngine, */
|
* \sa RuleEngine::addRule(), */
|
||||||
RuleEngine::RuleError GuhCore::addRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled)
|
RuleEngine::RuleError GuhCore::addRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled)
|
||||||
{
|
{
|
||||||
return m_ruleEngine->addRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled);
|
return m_ruleEngine->addRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! Calls the metheod RuleEngine::editRule(\a id, \a name, \a eventDescriptorList, \a stateEvaluator \a actionList, \a exitActionList, \a enabled).
|
||||||
|
* \sa RuleEngine::editRule(), */
|
||||||
RuleEngine::RuleError GuhCore::editRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled)
|
RuleEngine::RuleError GuhCore::editRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled)
|
||||||
{
|
{
|
||||||
return m_ruleEngine->editRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled);
|
return m_ruleEngine->editRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled);
|
||||||
@ -358,11 +364,15 @@ QList<RuleId> GuhCore::findRules(const DeviceId &deviceId)
|
|||||||
return m_ruleEngine->findRules(deviceId);
|
return m_ruleEngine->findRules(deviceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! Calls the metheod RuleEngine::enableRule(\a ruleId).
|
||||||
|
* \sa RuleEngine::enableRule(), */
|
||||||
RuleEngine::RuleError GuhCore::enableRule(const RuleId &ruleId)
|
RuleEngine::RuleError GuhCore::enableRule(const RuleId &ruleId)
|
||||||
{
|
{
|
||||||
return m_ruleEngine->enableRule(ruleId);
|
return m_ruleEngine->enableRule(ruleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! Calls the metheod RuleEngine::disableRule(\a ruleId).
|
||||||
|
* \sa RuleEngine::disableRule(), */
|
||||||
RuleEngine::RuleError GuhCore::disableRule(const RuleId &ruleId)
|
RuleEngine::RuleError GuhCore::disableRule(const RuleId &ruleId)
|
||||||
{
|
{
|
||||||
return m_ruleEngine->disableRule(ruleId);
|
return m_ruleEngine->disableRule(ruleId);
|
||||||
|
|||||||
@ -42,9 +42,9 @@
|
|||||||
\a ruleId holds the id of the removed rule. You should remove any references
|
\a ruleId holds the id of the removed rule. You should remove any references
|
||||||
or copies you hold for this rule.*/
|
or copies you hold for this rule.*/
|
||||||
|
|
||||||
/*! \fn void RuleEngine::ruleConfigurationChanged(const RuleId &ruleId)
|
/*! \fn void RuleEngine::ruleConfigurationChanged(const Rule &rule)
|
||||||
Will be emitted whenever a \l{Rule} changed his enable/disable status.
|
Will be emitted whenever a \l{Rule} changed his enable/disable status.
|
||||||
\a ruleId holds the id of the changed rule.*/
|
The parameter \a rule holds the changed rule.*/
|
||||||
|
|
||||||
/*! \enum RuleEngine::RuleError
|
/*! \enum RuleEngine::RuleError
|
||||||
\value RuleErrorNoError
|
\value RuleErrorNoError
|
||||||
@ -348,13 +348,17 @@ RuleEngine::RuleError RuleEngine::addRule(const RuleId &ruleId, const QString &n
|
|||||||
return RuleErrorNoError;
|
return RuleErrorNoError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! Edit a \l{Rule} with the given \a ruleId, \a name, \a eventDescriptorList, \a stateEvaluator, the list of \a actions the list of \a exitActions and the \a enabled in the engine. */
|
||||||
RuleEngine::RuleError RuleEngine::editRule(const RuleId &ruleId, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actions, const QList<RuleAction> &exitActions, bool enabled)
|
RuleEngine::RuleError RuleEngine::editRule(const RuleId &ruleId, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actions, const QList<RuleAction> &exitActions, bool enabled)
|
||||||
{
|
{
|
||||||
if (ruleId.isNull()) {
|
if (ruleId.isNull()) {
|
||||||
return RuleErrorInvalidRuleId;
|
return RuleErrorInvalidRuleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (findRule(ruleId).id().isNull()) {
|
// store rule in case the add new rule fails
|
||||||
|
Rule rule = findRule(ruleId);
|
||||||
|
|
||||||
|
if (rule.id().isNull()) {
|
||||||
qCWarning(dcRuleEngine) << "Cannot edit rule. There is no rule with id:" << ruleId.toString();
|
qCWarning(dcRuleEngine) << "Cannot edit rule. There is no rule with id:" << ruleId.toString();
|
||||||
return RuleErrorRuleNotFound;
|
return RuleErrorRuleNotFound;
|
||||||
}
|
}
|
||||||
@ -362,12 +366,15 @@ RuleEngine::RuleError RuleEngine::editRule(const RuleId &ruleId, const QString &
|
|||||||
// first remove old rule with this id
|
// first remove old rule with this id
|
||||||
RuleError removeResult = removeRule(ruleId, true);
|
RuleError removeResult = removeRule(ruleId, true);
|
||||||
if (removeResult != RuleErrorNoError) {
|
if (removeResult != RuleErrorNoError) {
|
||||||
|
// no need to restore, rule is still in system
|
||||||
return removeResult;
|
return removeResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
// the rule is removed, now add it with the same id and new vonfiguration
|
// the rule is removed, now add it with the same id and new vonfiguration
|
||||||
RuleError addResult = addRule(ruleId, name, eventDescriptorList, stateEvaluator, actions, exitActions, enabled, true);
|
RuleError addResult = addRule(ruleId, name, eventDescriptorList, stateEvaluator, actions, exitActions, enabled, true);
|
||||||
if (addResult != RuleErrorNoError) {
|
if (addResult != RuleErrorNoError) {
|
||||||
|
// restore rule
|
||||||
|
appendRule(rule);
|
||||||
return addResult;
|
return addResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -168,16 +168,21 @@ bool GuhTestBase::enableNotifications()
|
|||||||
QVariantMap notificationParams;
|
QVariantMap notificationParams;
|
||||||
notificationParams.insert("enabled", true);
|
notificationParams.insert("enabled", true);
|
||||||
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams);
|
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams);
|
||||||
|
if (response.toMap().value("params").toMap().value("enabled").toBool() != true) {
|
||||||
return response.toMap().value("params").toMap().value("enabled").toBool();
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GuhTestBase::disableNotifications()
|
bool GuhTestBase::disableNotifications()
|
||||||
{
|
{
|
||||||
QVariantMap notificationParams;
|
QVariantMap notificationParams;
|
||||||
notificationParams.insert("enabled", true);
|
notificationParams.insert("enabled", false);
|
||||||
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams);
|
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams);
|
||||||
return !response.toMap().value("params").toMap().value("enabled").toBool();
|
if (response.toMap().value("params").toMap().value("enabled").toBool() != false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuhTestBase::restartServer()
|
void GuhTestBase::restartServer()
|
||||||
|
|||||||
@ -268,10 +268,7 @@ void TestJSONRPC::stateChangeEmitsNotifications()
|
|||||||
void TestJSONRPC::deviceAddedRemovedNotifications()
|
void TestJSONRPC::deviceAddedRemovedNotifications()
|
||||||
{
|
{
|
||||||
// enable notificartions
|
// enable notificartions
|
||||||
QVariantMap params;
|
QCOMPARE(enableNotifications(), true);
|
||||||
params.insert("enabled", true);
|
|
||||||
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", params);
|
|
||||||
QCOMPARE(response.toMap().value("params").toMap().value("enabled").toBool(), true);
|
|
||||||
|
|
||||||
// Setup connection to mock client
|
// Setup connection to mock client
|
||||||
QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
|
QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
|
||||||
@ -283,27 +280,18 @@ void TestJSONRPC::deviceAddedRemovedNotifications()
|
|||||||
httpportParam.insert("value", 8765);
|
httpportParam.insert("value", 8765);
|
||||||
deviceParams.append(httpportParam);
|
deviceParams.append(httpportParam);
|
||||||
|
|
||||||
params.clear(); response.clear();
|
QVariantMap params;
|
||||||
params.insert("deviceClassId", mockDeviceClassId);
|
params.insert("deviceClassId", mockDeviceClassId);
|
||||||
params.insert("deviceParams", deviceParams);
|
params.insert("deviceParams", deviceParams);
|
||||||
response = injectAndWait("Devices.AddConfiguredDevice", params);
|
QVariant response = injectAndWait("Devices.AddConfiguredDevice", params);
|
||||||
|
clientSpy.wait();
|
||||||
|
verifyDeviceError(response);
|
||||||
|
QVariantMap notificationDeviceMap = checkNotification(clientSpy, "Devices.DeviceAdded").toMap().value("params").toMap().value("device").toMap();
|
||||||
|
|
||||||
// Lets wait for the notification
|
DeviceId deviceId = DeviceId(response.toMap().value("params").toMap().value("deviceId").toString());
|
||||||
clientSpy.wait(500);
|
|
||||||
qDebug() << "got" << clientSpy.count() << "notifications";
|
|
||||||
//QCOMPARE(clientSpy.count(), 2); // wait for device added notification and response
|
|
||||||
|
|
||||||
QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray());
|
|
||||||
QJsonDocument jsonDocNotification = QJsonDocument::fromJson(clientSpy.at(0).at(1).toByteArray());
|
|
||||||
|
|
||||||
verifyDeviceError(jsonDocResponse.toVariant());
|
|
||||||
DeviceId deviceId = DeviceId(jsonDocResponse.toVariant().toMap().value("params").toMap().value("deviceId").toString());
|
|
||||||
QVERIFY(!deviceId.isNull());
|
QVERIFY(!deviceId.isNull());
|
||||||
|
|
||||||
// check the DeviceAdded notification
|
// check the DeviceAdded notification
|
||||||
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Devices.DeviceAdded"));
|
|
||||||
QVariantMap notificationDeviceMap = jsonDocNotification.toVariant().toMap().value("params").toMap().value("device").toMap();
|
|
||||||
|
|
||||||
QCOMPARE(notificationDeviceMap.value("deviceClassId").toString(), mockDeviceClassId.toString());
|
QCOMPARE(notificationDeviceMap.value("deviceClassId").toString(), mockDeviceClassId.toString());
|
||||||
QCOMPARE(notificationDeviceMap.value("id").toString(), deviceId.toString());
|
QCOMPARE(notificationDeviceMap.value("id").toString(), deviceId.toString());
|
||||||
foreach (const QVariant ¶m, notificationDeviceMap.value("params").toList()) {
|
foreach (const QVariant ¶m, notificationDeviceMap.value("params").toList()) {
|
||||||
@ -312,35 +300,24 @@ void TestJSONRPC::deviceAddedRemovedNotifications()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup connection to mock client
|
|
||||||
QSignalSpy clientSpy2(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
|
|
||||||
|
|
||||||
// now remove the device and check the device removed notification
|
// now remove the device and check the device removed notification
|
||||||
params.clear(); response.clear();
|
params.clear(); response.clear(); clientSpy.clear();
|
||||||
params.insert("deviceId", deviceId);
|
params.insert("deviceId", deviceId);
|
||||||
response = injectAndWait("Devices.RemoveConfiguredDevice", params);
|
response = injectAndWait("Devices.RemoveConfiguredDevice", params);
|
||||||
|
clientSpy.wait();
|
||||||
|
verifyDeviceError(response);
|
||||||
|
checkNotification(clientSpy, "Devices.DeviceRemoved");
|
||||||
|
|
||||||
clientSpy2.wait(500);
|
//QCOMPARE(disableNotifications(), true);
|
||||||
qDebug() << "got" << clientSpy2.count() << "notifications";
|
|
||||||
QCOMPARE(clientSpy2.count(), 2); // wait for device removed notification and response
|
|
||||||
|
|
||||||
jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray());
|
|
||||||
jsonDocNotification = QJsonDocument::fromJson(clientSpy2.at(0).at(1).toByteArray());
|
|
||||||
|
|
||||||
verifyDeviceError(jsonDocResponse.toVariant());
|
|
||||||
|
|
||||||
// check the DeviceRemoved notification
|
|
||||||
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Devices.DeviceRemoved"));
|
|
||||||
QCOMPARE(jsonDocNotification.toVariant().toMap().value("params").toMap().value("deviceId").toString(), deviceId.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestJSONRPC::ruleAddedRemovedNotifications()
|
void TestJSONRPC::ruleAddedRemovedNotifications()
|
||||||
{
|
{
|
||||||
// enable notificartions
|
// enable notificartions
|
||||||
QVariantMap params;
|
QCOMPARE(enableNotifications(), true);
|
||||||
params.insert("enabled", true);
|
|
||||||
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", params);
|
// Setup connection to mock client
|
||||||
QCOMPARE(response.toMap().value("params").toMap().value("enabled").toBool(), true);
|
QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
|
||||||
|
|
||||||
// Add rule and wait for notification
|
// Add rule and wait for notification
|
||||||
// StateDescriptor
|
// StateDescriptor
|
||||||
@ -365,32 +342,20 @@ void TestJSONRPC::ruleAddedRemovedNotifications()
|
|||||||
eventDescriptor.insert("deviceId", m_mockDeviceId);
|
eventDescriptor.insert("deviceId", m_mockDeviceId);
|
||||||
eventDescriptor.insert("paramDescriptors", QVariantList());
|
eventDescriptor.insert("paramDescriptors", QVariantList());
|
||||||
|
|
||||||
params.clear(); response.clear();
|
QVariantMap params;
|
||||||
params.insert("name", "Test Rule notifications");
|
params.insert("name", "Test Rule notifications");
|
||||||
params.insert("actions", QVariantList() << actionNoParams);
|
params.insert("actions", QVariantList() << actionNoParams);
|
||||||
params.insert("eventDescriptor", eventDescriptor);
|
params.insert("eventDescriptor", eventDescriptor);
|
||||||
params.insert("stateEvaluator", stateEvaluator);
|
params.insert("stateEvaluator", stateEvaluator);
|
||||||
|
|
||||||
// Setup connection to mock client
|
QVariant response = injectAndWait("Rules.AddRule", params);
|
||||||
QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
|
clientSpy.wait();
|
||||||
|
QVariantMap notificationRuleMap = checkNotification(clientSpy, "Rules.RuleAdded").toMap().value("params").toMap().value("rule").toMap();
|
||||||
|
verifyRuleError(response);
|
||||||
|
|
||||||
response = injectAndWait("Rules.AddRule", params);
|
RuleId ruleId = RuleId(response.toMap().value("params").toMap().value("ruleId").toString());
|
||||||
|
|
||||||
clientSpy.wait(500);
|
|
||||||
qDebug() << "got" << clientSpy.count() << "notifications";
|
|
||||||
QCOMPARE(clientSpy.count(), 2);
|
|
||||||
|
|
||||||
QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray());
|
|
||||||
QJsonDocument jsonDocNotification = QJsonDocument::fromJson(clientSpy.at(0).at(1).toByteArray());
|
|
||||||
|
|
||||||
verifyRuleError(jsonDocResponse.toVariant());
|
|
||||||
RuleId ruleId = RuleId(jsonDocResponse.toVariant().toMap().value("params").toMap().value("ruleId").toString());
|
|
||||||
QVERIFY(!ruleId.isNull());
|
QVERIFY(!ruleId.isNull());
|
||||||
|
|
||||||
// check the DeviceAdded notification
|
|
||||||
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Rules.RuleAdded"));
|
|
||||||
QVariantMap notificationRuleMap = jsonDocNotification.toVariant().toMap().value("params").toMap().value("rule").toMap();
|
|
||||||
|
|
||||||
QCOMPARE(notificationRuleMap.value("enabled").toBool(), true);
|
QCOMPARE(notificationRuleMap.value("enabled").toBool(), true);
|
||||||
QCOMPARE(notificationRuleMap.value("name").toString(), params.value("name").toString());
|
QCOMPARE(notificationRuleMap.value("name").toString(), params.value("name").toString());
|
||||||
QCOMPARE(notificationRuleMap.value("id").toString(), ruleId.toString());
|
QCOMPARE(notificationRuleMap.value("id").toString(), ruleId.toString());
|
||||||
@ -399,26 +364,16 @@ void TestJSONRPC::ruleAddedRemovedNotifications()
|
|||||||
QCOMPARE(notificationRuleMap.value("eventDescriptors").toList(), QVariantList() << eventDescriptor);
|
QCOMPARE(notificationRuleMap.value("eventDescriptors").toList(), QVariantList() << eventDescriptor);
|
||||||
QCOMPARE(notificationRuleMap.value("exitActions").toList(), QVariantList());
|
QCOMPARE(notificationRuleMap.value("exitActions").toList(), QVariantList());
|
||||||
|
|
||||||
// Setup connection to mock client
|
|
||||||
QSignalSpy clientSpy2(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
|
|
||||||
|
|
||||||
// now remove the rule and check the RuleRemoved notification
|
// now remove the rule and check the RuleRemoved notification
|
||||||
params.clear(); response.clear();
|
params.clear(); response.clear(); clientSpy.clear();
|
||||||
params.insert("ruleId", ruleId);
|
params.insert("ruleId", ruleId);
|
||||||
response = injectAndWait("Rules.RemoveRule", params);
|
response = injectAndWait("Rules.RemoveRule", params);
|
||||||
|
clientSpy.wait();
|
||||||
|
checkNotification(clientSpy, "Devices.DeviceRemoved");
|
||||||
|
verifyRuleError(response);
|
||||||
|
|
||||||
clientSpy2.wait(500);
|
QCOMPARE(disableNotifications(), true);
|
||||||
qDebug() << "got" << clientSpy2.count() << "notifications";
|
|
||||||
QCOMPARE(clientSpy2.count(), 2); // wait for RuleRemoved notification and response
|
|
||||||
|
|
||||||
jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray());
|
|
||||||
jsonDocNotification = QJsonDocument::fromJson(clientSpy2.at(0).at(1).toByteArray());
|
|
||||||
|
|
||||||
verifyRuleError(jsonDocResponse.toVariant());
|
|
||||||
|
|
||||||
// check the DeviceRemoved notification
|
|
||||||
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Rules.RuleRemoved"));
|
|
||||||
QCOMPARE(jsonDocNotification.toVariant().toMap().value("params").toMap().value("ruleId").toString(), ruleId.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestJSONRPC::ruleActiveChangedNotifications()
|
void TestJSONRPC::ruleActiveChangedNotifications()
|
||||||
@ -456,7 +411,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
|
|||||||
|
|
||||||
response = injectAndWait("Rules.AddRule", params);
|
response = injectAndWait("Rules.AddRule", params);
|
||||||
|
|
||||||
clientSpy.wait(500);
|
clientSpy.wait();
|
||||||
qDebug() << "got" << clientSpy.count() << "notifications";
|
qDebug() << "got" << clientSpy.count() << "notifications";
|
||||||
QCOMPARE(clientSpy.count(), 2);
|
QCOMPARE(clientSpy.count(), 2);
|
||||||
|
|
||||||
@ -491,7 +446,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
|
|||||||
QCOMPARE(spy.count(), 1);
|
QCOMPARE(spy.count(), 1);
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
|
|
||||||
clientSpy2.wait(500);
|
clientSpy2.wait();
|
||||||
qDebug() << "got" << clientSpy2.count() << "notifications";
|
qDebug() << "got" << clientSpy2.count() << "notifications";
|
||||||
QCOMPARE(clientSpy2.count(), 6);
|
QCOMPARE(clientSpy2.count(), 6);
|
||||||
|
|
||||||
@ -515,7 +470,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
|
|||||||
QCOMPARE(spy.count(), 1);
|
QCOMPARE(spy.count(), 1);
|
||||||
reply2->deleteLater();
|
reply2->deleteLater();
|
||||||
|
|
||||||
clientSpy2.wait(500);
|
clientSpy2.wait();
|
||||||
QCOMPARE(clientSpy2.count(), 5);
|
QCOMPARE(clientSpy2.count(), 5);
|
||||||
|
|
||||||
for (int i = 0; i < clientSpy2.count(); i++) {
|
for (int i = 0; i < clientSpy2.count(); i++) {
|
||||||
@ -536,7 +491,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
|
|||||||
params.insert("ruleId", ruleId);
|
params.insert("ruleId", ruleId);
|
||||||
response = injectAndWait("Rules.RemoveRule", params);
|
response = injectAndWait("Rules.RemoveRule", params);
|
||||||
|
|
||||||
clientSpy3.wait(500);
|
clientSpy3.wait();
|
||||||
qDebug() << "got" << clientSpy3.count() << "notifications";
|
qDebug() << "got" << clientSpy3.count() << "notifications";
|
||||||
QCOMPARE(clientSpy3.count(), 2); // wait for RuleRemoved notification and response
|
QCOMPARE(clientSpy3.count(), 2); // wait for RuleRemoved notification and response
|
||||||
|
|
||||||
@ -576,7 +531,7 @@ void TestJSONRPC::deviceParamsChangedNotifications()
|
|||||||
response = injectAndWait("Devices.AddConfiguredDevice", params);
|
response = injectAndWait("Devices.AddConfiguredDevice", params);
|
||||||
|
|
||||||
// Lets wait for the notification
|
// Lets wait for the notification
|
||||||
clientSpy.wait(500);
|
clientSpy.wait();
|
||||||
QCOMPARE(clientSpy.count(), 2); // wait for device added notification and response
|
QCOMPARE(clientSpy.count(), 2); // wait for device added notification and response
|
||||||
|
|
||||||
QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray());
|
QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray());
|
||||||
@ -615,7 +570,7 @@ void TestJSONRPC::deviceParamsChangedNotifications()
|
|||||||
params.insert("deviceParams", newDeviceParams);
|
params.insert("deviceParams", newDeviceParams);
|
||||||
response = injectAndWait("Devices.EditDevice", params);
|
response = injectAndWait("Devices.EditDevice", params);
|
||||||
|
|
||||||
clientSpy2.wait(500);
|
clientSpy2.wait();
|
||||||
QCOMPARE(clientSpy2.count(), 2);
|
QCOMPARE(clientSpy2.count(), 2);
|
||||||
|
|
||||||
jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray());
|
jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray());
|
||||||
@ -644,7 +599,7 @@ void TestJSONRPC::deviceParamsChangedNotifications()
|
|||||||
params.insert("deviceId", deviceId);
|
params.insert("deviceId", deviceId);
|
||||||
response = injectAndWait("Devices.RemoveConfiguredDevice", params);
|
response = injectAndWait("Devices.RemoveConfiguredDevice", params);
|
||||||
|
|
||||||
clientSpy3.wait(500);
|
clientSpy3.wait();
|
||||||
QCOMPARE(clientSpy3.count(), 2); // wait for device removed notification and response
|
QCOMPARE(clientSpy3.count(), 2); // wait for device removed notification and response
|
||||||
|
|
||||||
jsonDocResponse = QJsonDocument::fromJson(clientSpy3.at(1).at(1).toByteArray());
|
jsonDocResponse = QJsonDocument::fromJson(clientSpy3.at(1).at(1).toByteArray());
|
||||||
|
|||||||
@ -662,6 +662,8 @@ void TestRules::editRules()
|
|||||||
response = injectAndWait("Rules.EditRule", params);
|
response = injectAndWait("Rules.EditRule", params);
|
||||||
verifyRuleError(response, error);
|
verifyRuleError(response, error);
|
||||||
if (error == RuleEngine::RuleErrorNoError){
|
if (error == RuleEngine::RuleErrorNoError){
|
||||||
|
clientSpy.wait();
|
||||||
|
|
||||||
QVariant notification = checkNotification(clientSpy, "Rules.RuleConfigurationChanged");
|
QVariant notification = checkNotification(clientSpy, "Rules.RuleConfigurationChanged");
|
||||||
QVERIFY2(notification != QVariant(), "not received \"Rules.RuleConfigurationChanged\" notification");
|
QVERIFY2(notification != QVariant(), "not received \"Rules.RuleConfigurationChanged\" notification");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user