mirror of https://github.com/nymea/nymea.git
fix issues in param handling in json api
parent
7d8199aac5
commit
53fe5557e0
|
|
@ -346,9 +346,8 @@ JsonReply* DeviceHandler::AddConfiguredDevice(const QVariantMap ¶ms)
|
|||
DeviceClassId deviceClass(params.value("deviceClassId").toString());
|
||||
QList<Param> 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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Param> JsonTypes::unpackParams(const QVariantList ¶mList)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>("deviceClassId");
|
||||
QTest::addColumn<QVariantMap>("deviceParams");
|
||||
QTest::addColumn<QVariantList>("deviceParams");
|
||||
QTest::addColumn<bool>("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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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.");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue