diff --git a/server/jsonrpc/devicehandler.cpp b/server/jsonrpc/devicehandler.cpp
index d18b52e1..50625dd2 100644
--- a/server/jsonrpc/devicehandler.cpp
+++ b/server/jsonrpc/devicehandler.cpp
@@ -346,9 +346,8 @@ JsonReply* DeviceHandler::AddConfiguredDevice(const QVariantMap ¶ms)
DeviceClassId deviceClass(params.value("deviceClassId").toString());
QList deviceParams;
foreach (const QVariant ¶mVariant, params.value("deviceParams").toList()) {
- QString paramName = paramVariant.toMap().keys().first();
- Param param(paramName);
- param.setValue(paramVariant.toMap().value(paramName));
+ Param param(paramVariant.toMap().value("name").toString());
+ param.setValue(paramVariant.toMap().value("value"));
deviceParams.append(param);
}
diff --git a/server/jsonrpc/jsontypes.cpp b/server/jsonrpc/jsontypes.cpp
index a4dacfdb..4056a7a2 100644
--- a/server/jsonrpc/jsontypes.cpp
+++ b/server/jsonrpc/jsontypes.cpp
@@ -304,7 +304,8 @@ QVariantMap JsonTypes::packStateEvaluator(const StateEvaluator &stateEvaluator)
QVariantMap JsonTypes::packParam(const Param ¶m)
{
QVariantMap variantMap;
- variantMap.insert(param.name(), param.value());
+ variantMap.insert("name", param.name());
+ variantMap.insert("value", param.value());
return variantMap;
}
@@ -434,8 +435,9 @@ Param JsonTypes::unpackParam(const QVariantMap ¶mMap)
if (paramMap.keys().count() == 0) {
return Param();
}
- QString key = paramMap.keys().first();
- return Param(key, paramMap.value(key));
+ QString name = paramMap.value("name").toString();
+ QVariant value = paramMap.value("value");
+ return Param(name, value);
}
QList JsonTypes::unpackParams(const QVariantList ¶mList)
diff --git a/tests/auto/actions/testactions.cpp b/tests/auto/actions/testactions.cpp
index c5826404..753aef9a 100644
--- a/tests/auto/actions/testactions.cpp
+++ b/tests/auto/actions/testactions.cpp
@@ -51,10 +51,12 @@ void TestActions::executeAction_data()
QVariantList params;
QVariantMap param1;
- param1.insert("mockActionParam1", 5);
+ param1.insert("name", "mockActionParam1");
+ param1.insert("value", 5);
params.append(param1);
QVariantMap param2;
- param2.insert("mockActionParam2", true);
+ param2.insert("name", "mockActionParam2");
+ param2.insert("value", true);
params.append(param2);
QTest::newRow("valid action") << m_mockDeviceId << mockActionIdWithParams << params << true;
diff --git a/tests/auto/devices/testdevices.cpp b/tests/auto/devices/testdevices.cpp
index badd6543..b82624c0 100644
--- a/tests/auto/devices/testdevices.cpp
+++ b/tests/auto/devices/testdevices.cpp
@@ -119,7 +119,8 @@ void TestDevices::setPluginConfig()
QVariantList configuration;
QVariantMap configParam;
- configParam.insert("configParamInt", value);
+ configParam.insert("name", "configParamInt");
+ configParam.insert("value", value);
configuration.append(configParam);
params.insert("configuration", configuration);
QVariant response = injectAndWait("Devices.SetPluginConfiguration", params);
@@ -131,7 +132,8 @@ void TestDevices::setPluginConfig()
response = injectAndWait("Devices.GetPluginConfiguration", params);
verifySuccess(response);
qDebug() << "222" << response.toMap().value("params").toMap().value("configuration").toList().first();
- QVERIFY2(response.toMap().value("params").toMap().value("configuration").toList().first().toMap().value("configParamInt") == value, "Value not set correctly");
+ QVERIFY2(response.toMap().value("params").toMap().value("configuration").toList().first().toMap().value("name") == "configParamInt", "Value not set correctly");
+ QVERIFY2(response.toMap().value("params").toMap().value("configuration").toList().first().toMap().value("value") == value, "Value not set correctly");
}
}
@@ -179,11 +181,14 @@ void TestDevices::getSupportedDevices()
void TestDevices::addConfiguredDevice_data()
{
QTest::addColumn("deviceClassId");
- QTest::addColumn("deviceParams");
+ QTest::addColumn("deviceParams");
QTest::addColumn("success");
- QVariantMap deviceParams;
- deviceParams.insert("httpport", m_mockDevice1Port - 1);
+ QVariantList deviceParams;
+ QVariantMap httpportParam;
+ httpportParam.insert("name", "httpport");
+ httpportParam.insert("value", m_mockDevice1Port - 1);
+ deviceParams.append(httpportParam);
QTest::newRow("User, JustAdd") << mockDeviceClassId << deviceParams << true;
QTest::newRow("Auto, JustAdd") << mockDeviceAutoClassId << deviceParams << false;
@@ -193,16 +198,25 @@ void TestDevices::addConfiguredDevice_data()
QTest::newRow("Setup failure") << mockDeviceBrokenClassId << deviceParams << false;
QTest::newRow("Setup failure, Async") << mockDeviceBrokenAsyncSetupClassId << deviceParams << false;
- QVariantMap invalidDeviceParams;
- invalidDeviceParams.insert("tropptth", m_mockDevice1Port - 1);
- QTest::newRow("User, JustAdd, invalid params") << mockDeviceClassId << invalidDeviceParams << false;
+ QVariantList invalidDeviceParams;
+ QTest::newRow("User, JustAdd, missing params") << mockDeviceClassId << invalidDeviceParams << false;
+
+ QVariantMap fakeparam;
+ fakeparam.insert("name", "tropptth");
+ invalidDeviceParams.append(fakeparam);
+ QTest::newRow("User, JustAdd, invalid param") << mockDeviceClassId << invalidDeviceParams << false;
+
+ fakeparam.insert("value", "buhuu");
+ invalidDeviceParams.clear();
+ invalidDeviceParams.append(fakeparam);
+ QTest::newRow("User, JustAdd, wrong param") << mockDeviceClassId << invalidDeviceParams << false;
}
void TestDevices::addConfiguredDevice()
{
QFETCH(DeviceClassId, deviceClassId);
- QFETCH(QVariantMap, deviceParams);
+ QFETCH(QVariantList, deviceParams);
QFETCH(bool, success);
QVariantMap params;
@@ -270,8 +284,11 @@ void TestDevices::storedDevices()
{
QVariantMap params;
params.insert("deviceClassId", mockDeviceClassId);
- QVariantMap deviceParams;
- deviceParams.insert("httpport", 8888);
+ QVariantList deviceParams;
+ QVariantMap httpportParam;
+ httpportParam.insert("name", "httpport");
+ httpportParam.insert("value", 8888);
+ deviceParams.append(httpportParam);
params.insert("deviceParams", deviceParams);
QVariant response = injectAndWait("Devices.AddConfiguredDevice", params);
verifySuccess(response);
@@ -293,7 +310,7 @@ void TestDevices::storedDevices()
qDebug() << "found added device" << device.toMap().value("params").toList().first().toMap();
qDebug() << "expected deviceParams:" << deviceParams;
- QCOMPARE(device.toMap().value("params").toList().first().toMap(), deviceParams);
+ QCOMPARE(device.toMap().value("params").toList(), deviceParams);
found = true;
break;
}
diff --git a/tests/auto/guhtestbase.cpp b/tests/auto/guhtestbase.cpp
index a3263925..7db34b43 100644
--- a/tests/auto/guhtestbase.cpp
+++ b/tests/auto/guhtestbase.cpp
@@ -64,9 +64,14 @@ void GuhTestBase::initTestCase()
// Lets add one instance of the mockdevice
QVariantMap params;
params.insert("deviceClassId", "{753f0d32-0468-4d08-82ed-1964aab03298}");
- QVariantMap deviceParams;
- deviceParams.insert("httpport", m_mockDevice1Port);
+
+ QVariantList deviceParams;
+ QVariantMap httpPortParam;
+ httpPortParam.insert("name", "httpport");
+ httpPortParam.insert("value", m_mockDevice1Port);
+ deviceParams.append(httpPortParam);
params.insert("deviceParams", deviceParams);
+
QVariant response = injectAndWait("Devices.AddConfiguredDevice", params);
verifySuccess(response);
diff --git a/tests/auto/rules/testrules.cpp b/tests/auto/rules/testrules.cpp
index 11381f27..45744137 100644
--- a/tests/auto/rules/testrules.cpp
+++ b/tests/auto/rules/testrules.cpp
@@ -234,10 +234,12 @@ void TestRules::loadStoreConfig()
action2.insert("deviceId", m_mockDeviceId);
QVariantList action2Params;
QVariantMap action2Param1;
- action2Param1.insert("mockActionParam1", 5);
+ action2Param1.insert("name", "mockActionParam1");
+ action2Param1.insert("value", 5);
action2Params.append(action2Param1);
QVariantMap action2Param2;
- action2Param2.insert("mockActionParam2", true);
+ action2Param2.insert("name", "mockActionParam2");
+ action2Param2.insert("value", true);
action2Params.append(action2Param2);
action2.insert("params", action2Params);
@@ -289,6 +291,8 @@ void TestRules::loadStoreConfig()
if (actionVariant.toMap().value("actionTypeId") == replyActionVariant.toMap().value("actionTypeId") &&
actionVariant.toMap().value("deviceId") == replyActionVariant.toMap().value("deviceId")) {
found = true;
+ qDebug() << "AAA:" << actionVariant;
+ qDebug() << "BBB:" << replyActionVariant;
QVERIFY2(actionVariant == replyActionVariant, "Action doesn't match after loading from config.");
}
}