fix issues in param handling in json api

This commit is contained in:
Michael Zanetti 2014-06-22 23:43:27 +02:00
parent 7d8199aac5
commit 53fe5557e0
6 changed files with 53 additions and 24 deletions

View File

@ -346,9 +346,8 @@ JsonReply* DeviceHandler::AddConfiguredDevice(const QVariantMap &params)
DeviceClassId deviceClass(params.value("deviceClassId").toString()); DeviceClassId deviceClass(params.value("deviceClassId").toString());
QList<Param> deviceParams; QList<Param> deviceParams;
foreach (const QVariant &paramVariant, params.value("deviceParams").toList()) { foreach (const QVariant &paramVariant, params.value("deviceParams").toList()) {
QString paramName = paramVariant.toMap().keys().first(); Param param(paramVariant.toMap().value("name").toString());
Param param(paramName); param.setValue(paramVariant.toMap().value("value"));
param.setValue(paramVariant.toMap().value(paramName));
deviceParams.append(param); deviceParams.append(param);
} }

View File

@ -304,7 +304,8 @@ QVariantMap JsonTypes::packStateEvaluator(const StateEvaluator &stateEvaluator)
QVariantMap JsonTypes::packParam(const Param &param) QVariantMap JsonTypes::packParam(const Param &param)
{ {
QVariantMap variantMap; QVariantMap variantMap;
variantMap.insert(param.name(), param.value()); variantMap.insert("name", param.name());
variantMap.insert("value", param.value());
return variantMap; return variantMap;
} }
@ -434,8 +435,9 @@ Param JsonTypes::unpackParam(const QVariantMap &paramMap)
if (paramMap.keys().count() == 0) { if (paramMap.keys().count() == 0) {
return Param(); return Param();
} }
QString key = paramMap.keys().first(); QString name = paramMap.value("name").toString();
return Param(key, paramMap.value(key)); QVariant value = paramMap.value("value");
return Param(name, value);
} }
QList<Param> JsonTypes::unpackParams(const QVariantList &paramList) QList<Param> JsonTypes::unpackParams(const QVariantList &paramList)

View File

@ -51,10 +51,12 @@ void TestActions::executeAction_data()
QVariantList params; QVariantList params;
QVariantMap param1; QVariantMap param1;
param1.insert("mockActionParam1", 5); param1.insert("name", "mockActionParam1");
param1.insert("value", 5);
params.append(param1); params.append(param1);
QVariantMap param2; QVariantMap param2;
param2.insert("mockActionParam2", true); param2.insert("name", "mockActionParam2");
param2.insert("value", true);
params.append(param2); params.append(param2);
QTest::newRow("valid action") << m_mockDeviceId << mockActionIdWithParams << params << true; QTest::newRow("valid action") << m_mockDeviceId << mockActionIdWithParams << params << true;

View File

@ -119,7 +119,8 @@ void TestDevices::setPluginConfig()
QVariantList configuration; QVariantList configuration;
QVariantMap configParam; QVariantMap configParam;
configParam.insert("configParamInt", value); configParam.insert("name", "configParamInt");
configParam.insert("value", value);
configuration.append(configParam); configuration.append(configParam);
params.insert("configuration", configuration); params.insert("configuration", configuration);
QVariant response = injectAndWait("Devices.SetPluginConfiguration", params); QVariant response = injectAndWait("Devices.SetPluginConfiguration", params);
@ -131,7 +132,8 @@ void TestDevices::setPluginConfig()
response = injectAndWait("Devices.GetPluginConfiguration", params); response = injectAndWait("Devices.GetPluginConfiguration", params);
verifySuccess(response); verifySuccess(response);
qDebug() << "222" << response.toMap().value("params").toMap().value("configuration").toList().first(); 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() void TestDevices::addConfiguredDevice_data()
{ {
QTest::addColumn<DeviceClassId>("deviceClassId"); QTest::addColumn<DeviceClassId>("deviceClassId");
QTest::addColumn<QVariantMap>("deviceParams"); QTest::addColumn<QVariantList>("deviceParams");
QTest::addColumn<bool>("success"); QTest::addColumn<bool>("success");
QVariantMap deviceParams; QVariantList deviceParams;
deviceParams.insert("httpport", m_mockDevice1Port - 1); QVariantMap httpportParam;
httpportParam.insert("name", "httpport");
httpportParam.insert("value", m_mockDevice1Port - 1);
deviceParams.append(httpportParam);
QTest::newRow("User, JustAdd") << mockDeviceClassId << deviceParams << true; QTest::newRow("User, JustAdd") << mockDeviceClassId << deviceParams << true;
QTest::newRow("Auto, JustAdd") << mockDeviceAutoClassId << deviceParams << false; 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") << mockDeviceBrokenClassId << deviceParams << false;
QTest::newRow("Setup failure, Async") << mockDeviceBrokenAsyncSetupClassId << deviceParams << false; QTest::newRow("Setup failure, Async") << mockDeviceBrokenAsyncSetupClassId << deviceParams << false;
QVariantMap invalidDeviceParams; QVariantList invalidDeviceParams;
invalidDeviceParams.insert("tropptth", m_mockDevice1Port - 1); QTest::newRow("User, JustAdd, missing params") << mockDeviceClassId << invalidDeviceParams << false;
QTest::newRow("User, JustAdd, invalid 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() void TestDevices::addConfiguredDevice()
{ {
QFETCH(DeviceClassId, deviceClassId); QFETCH(DeviceClassId, deviceClassId);
QFETCH(QVariantMap, deviceParams); QFETCH(QVariantList, deviceParams);
QFETCH(bool, success); QFETCH(bool, success);
QVariantMap params; QVariantMap params;
@ -270,8 +284,11 @@ void TestDevices::storedDevices()
{ {
QVariantMap params; QVariantMap params;
params.insert("deviceClassId", mockDeviceClassId); params.insert("deviceClassId", mockDeviceClassId);
QVariantMap deviceParams; QVariantList deviceParams;
deviceParams.insert("httpport", 8888); QVariantMap httpportParam;
httpportParam.insert("name", "httpport");
httpportParam.insert("value", 8888);
deviceParams.append(httpportParam);
params.insert("deviceParams", deviceParams); params.insert("deviceParams", deviceParams);
QVariant response = injectAndWait("Devices.AddConfiguredDevice", params); QVariant response = injectAndWait("Devices.AddConfiguredDevice", params);
verifySuccess(response); verifySuccess(response);
@ -293,7 +310,7 @@ void TestDevices::storedDevices()
qDebug() << "found added device" << device.toMap().value("params").toList().first().toMap(); qDebug() << "found added device" << device.toMap().value("params").toList().first().toMap();
qDebug() << "expected deviceParams:" << deviceParams; qDebug() << "expected deviceParams:" << deviceParams;
QCOMPARE(device.toMap().value("params").toList().first().toMap(), deviceParams); QCOMPARE(device.toMap().value("params").toList(), deviceParams);
found = true; found = true;
break; break;
} }

View File

@ -64,9 +64,14 @@ void GuhTestBase::initTestCase()
// Lets add one instance of the mockdevice // Lets add one instance of the mockdevice
QVariantMap params; QVariantMap params;
params.insert("deviceClassId", "{753f0d32-0468-4d08-82ed-1964aab03298}"); 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); params.insert("deviceParams", deviceParams);
QVariant response = injectAndWait("Devices.AddConfiguredDevice", params); QVariant response = injectAndWait("Devices.AddConfiguredDevice", params);
verifySuccess(response); verifySuccess(response);

View File

@ -234,10 +234,12 @@ void TestRules::loadStoreConfig()
action2.insert("deviceId", m_mockDeviceId); action2.insert("deviceId", m_mockDeviceId);
QVariantList action2Params; QVariantList action2Params;
QVariantMap action2Param1; QVariantMap action2Param1;
action2Param1.insert("mockActionParam1", 5); action2Param1.insert("name", "mockActionParam1");
action2Param1.insert("value", 5);
action2Params.append(action2Param1); action2Params.append(action2Param1);
QVariantMap action2Param2; QVariantMap action2Param2;
action2Param2.insert("mockActionParam2", true); action2Param2.insert("name", "mockActionParam2");
action2Param2.insert("value", true);
action2Params.append(action2Param2); action2Params.append(action2Param2);
action2.insert("params", action2Params); action2.insert("params", action2Params);
@ -289,6 +291,8 @@ void TestRules::loadStoreConfig()
if (actionVariant.toMap().value("actionTypeId") == replyActionVariant.toMap().value("actionTypeId") && if (actionVariant.toMap().value("actionTypeId") == replyActionVariant.toMap().value("actionTypeId") &&
actionVariant.toMap().value("deviceId") == replyActionVariant.toMap().value("deviceId")) { actionVariant.toMap().value("deviceId") == replyActionVariant.toMap().value("deviceId")) {
found = true; found = true;
qDebug() << "AAA:" << actionVariant;
qDebug() << "BBB:" << replyActionVariant;
QVERIFY2(actionVariant == replyActionVariant, "Action doesn't match after loading from config."); QVERIFY2(actionVariant == replyActionVariant, "Action doesn't match after loading from config.");
} }
} }