Improve code coverage and debug server handler

This commit is contained in:
Simon Stürz 2018-02-10 17:08:58 +01:00 committed by Michael Zanetti
parent 568cb749b1
commit eafa59b32f
5 changed files with 161 additions and 94 deletions

View File

@ -223,6 +223,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
writer.writeStartElement("tr"); writer.writeStartElement("tr");
writer.writeTextElement("th", QCoreApplication::translate("main", "Log database")); writer.writeTextElement("th", QCoreApplication::translate("main", "Log database"));
writer.writeTextElement("td", GuhSettings::logPath());
writer.writeStartElement("td"); writer.writeStartElement("td");
writer.writeStartElement("form"); writer.writeStartElement("form");
writer.writeAttribute("method", "get"); writer.writeAttribute("method", "get");
@ -236,7 +237,8 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
writer.writeEndElement(); // tr writer.writeEndElement(); // tr
writer.writeStartElement("tr"); writer.writeStartElement("tr");
writer.writeTextElement("th", QCoreApplication::translate("main", "Syslog")); writer.writeTextElement("th", QCoreApplication::translate("main", "System logs"));
writer.writeTextElement("td", "/var/log/syslog");
writer.writeStartElement("td"); writer.writeStartElement("td");
writer.writeStartElement("form"); writer.writeStartElement("form");
writer.writeAttribute("method", "get"); writer.writeAttribute("method", "get");
@ -262,6 +264,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
writer.writeStartElement("tr"); writer.writeStartElement("tr");
writer.writeTextElement("th", QCoreApplication::translate("main", "Guhd settings")); writer.writeTextElement("th", QCoreApplication::translate("main", "Guhd settings"));
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleGlobal).fileName());
writer.writeStartElement("td"); writer.writeStartElement("td");
writer.writeStartElement("form"); writer.writeStartElement("form");
writer.writeAttribute("method", "get"); writer.writeAttribute("method", "get");
@ -276,6 +279,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
writer.writeStartElement("tr"); writer.writeStartElement("tr");
writer.writeTextElement("th", QCoreApplication::translate("main", "Device settings")); writer.writeTextElement("th", QCoreApplication::translate("main", "Device settings"));
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleDevices).fileName());
writer.writeStartElement("td"); writer.writeStartElement("td");
writer.writeStartElement("form"); writer.writeStartElement("form");
writer.writeAttribute("method", "get"); writer.writeAttribute("method", "get");
@ -290,6 +294,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
writer.writeStartElement("tr"); writer.writeStartElement("tr");
writer.writeTextElement("th", QCoreApplication::translate("main", "Device state settings")); writer.writeTextElement("th", QCoreApplication::translate("main", "Device state settings"));
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleDeviceStates).fileName());
writer.writeStartElement("td"); writer.writeStartElement("td");
writer.writeStartElement("form"); writer.writeStartElement("form");
writer.writeAttribute("method", "get"); writer.writeAttribute("method", "get");
@ -305,6 +310,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
writer.writeStartElement("tr"); writer.writeStartElement("tr");
writer.writeTextElement("th", QCoreApplication::translate("main", "Rules settings")); writer.writeTextElement("th", QCoreApplication::translate("main", "Rules settings"));
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleRules).fileName());
writer.writeStartElement("td"); writer.writeStartElement("td");
writer.writeStartElement("form"); writer.writeStartElement("form");
writer.writeAttribute("method", "get"); writer.writeAttribute("method", "get");
@ -317,6 +323,21 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
writer.writeEndElement(); // td writer.writeEndElement(); // td
writer.writeEndElement(); // tr writer.writeEndElement(); // tr
writer.writeStartElement("tr");
writer.writeTextElement("th", QCoreApplication::translate("main", "Plugins settings"));
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRolePlugins).fileName());
writer.writeStartElement("td");
writer.writeStartElement("form");
writer.writeAttribute("method", "get");
writer.writeAttribute("action", "/debug/settings/plugins");
writer.writeStartElement("button");
writer.writeAttribute("type", "submit");
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
writer.writeEndElement(); // button
writer.writeEndElement(); // form
writer.writeEndElement(); // td
writer.writeEndElement(); // tr
writer.writeEndElement(); // table writer.writeEndElement(); // table
writer.writeEmptyElement("hr"); writer.writeEmptyElement("hr");
@ -385,17 +406,52 @@ QByteArray DebugServerHandler::loadResourceFile(const QString &resourceFileName)
return inputStream.readAll().toUtf8(); return inputStream.readAll().toUtf8();
} }
bool DebugServerHandler::resourceFileExits(const QString &resourceFileName) QString DebugServerHandler::getResourceFileName(const QString &requestPath)
{ {
QFile resourceFile(QString(":%1").arg(resourceFileName)); return QString(requestPath).remove("/debug");
}
bool DebugServerHandler::resourceFileExits(const QString &requestPath)
{
QFile resourceFile(QString(":%1").arg(getResourceFileName(requestPath)));
return resourceFile.exists(); return resourceFile.exists();
} }
HttpReply *DebugServerHandler::processDebugFileRequest(const QString &requestPath)
{
// Here we already know that the resource file exists
QString resourceFileName = getResourceFileName(requestPath);
QByteArray data = loadResourceFile(resourceFileName);
// Create reply for resource file
HttpReply *reply = RestResource::createSuccessReply();
reply->setPayload(data);
// Check content type
if (resourceFileName.endsWith(".css")) {
reply->setHeader(HttpReply::ContentTypeHeader, "text/css; charset=\"utf-8\";");
} else if (resourceFileName.endsWith(".svg")) {
reply->setHeader(HttpReply::ContentTypeHeader, "image/svg+xml; charset=\"utf-8\";");
}
return reply;
}
HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath) HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath)
{ {
qCDebug(dcWebServer()) << "Debug request for" << requestPath; qCDebug(dcWebServer()) << "Debug request for" << requestPath;
// Check if debug page request
if (requestPath == "/debug" || requestPath == "/debug/") {
qCDebug(dcWebServer()) << "Create debug interface page";
// Fallback default debug page
HttpReply *reply = RestResource::createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "text/html");
reply->setPayload(createDebugXmlDocument());
return reply;
}
// Check if this is a logdb requested // Check if this is a logdb requested
if (requestPath.startsWith("/debug/logdb.sql")) { if (requestPath.startsWith("/debug/logdb.sql")) {
qCDebug(dcWebServer()) << "Loading" << GuhSettings::logPath(); qCDebug(dcWebServer()) << "Loading" << GuhSettings::logPath();
@ -573,66 +629,46 @@ HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath)
reply->setPayload(settingsFileData); reply->setPayload(settingsFileData);
return reply; return reply;
} }
}
// Check if a resource file was requested if (requestPath.startsWith("/debug/settings/plugins")) {
QString settingsFileName = GuhSettings(GuhSettings::SettingsRolePlugins).fileName();
qCDebug(dcWebServer()) << "Loading" << settingsFileName;
QFile settingsFile(settingsFileName);
if (!settingsFile.exists()) {
qCWarning(dcWebServer()) << "Could not read file for debug download" << settingsFileName << "file does not exist.";
HttpReply *reply = RestResource::createErrorReply(HttpReply::NotFound);
reply->setHeader(HttpReply::ContentTypeHeader, "text/html");
reply->setPayload(createErrorXmlDocument(HttpReply::NotFound, QCoreApplication::translate("main", "Could not find file") + " " + settingsFileName));
return reply;
}
if (requestPath.startsWith("/debug/styles.css")) { if (!settingsFile.open(QFile::ReadOnly)) {
QString resourceFileName = "/styles.css"; qCWarning(dcWebServer()) << "Could not read file for debug download" << settingsFileName;
// Check if exists HttpReply *reply = RestResource::createErrorReply(HttpReply::Forbidden);
if (!resourceFileExits(resourceFileName)) { reply->setHeader(HttpReply::ContentTypeHeader, "text/html");
qCWarning(dcWebServer()) << "The requested resource file" << resourceFileName << "does not exist"; reply->setPayload(createErrorXmlDocument(HttpReply::NotFound, QCoreApplication::translate("main", "Could not open file") + " " + settingsFileName));
HttpReply *reply = RestResource::createErrorReply(HttpReply::NotFound); return reply;
}
QByteArray settingsFileData = settingsFile.readAll();
settingsFile.close();
HttpReply *reply = RestResource::createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "text/plain"); reply->setHeader(HttpReply::ContentTypeHeader, "text/plain");
reply->setPayload(createErrorXmlDocument(HttpReply::NotFound, QCoreApplication::translate("main", "Could not find find") + " " + resourceFileName)); reply->setPayload(settingsFileData);
return reply; return reply;
} }
QByteArray data = loadResourceFile(resourceFileName);
// Check if content loaded
if (data.isEmpty()) {
qCWarning(dcWebServer()) << "Empty resource file" << resourceFileName;
HttpReply *reply = RestResource::createErrorReply(HttpReply::NoContent);
reply->setHeader(HttpReply::ContentTypeHeader, "text/plain");
reply->setPayload(createErrorXmlDocument(HttpReply::NotFound, QCoreApplication::translate("main", "Could not find find") + " " + resourceFileName));
return reply;
}
HttpReply *reply = RestResource::createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "text/css; charset=\"utf-8\";");
reply->setPayload(data);
return reply;
} }
// Check if this is a resource file request
if (resourceFileExits(requestPath)) {
return processDebugFileRequest(requestPath);
}
// If nothing matches, redirect to /debug page
// if (!fileName.endsWith(".png")) qCWarning(dcWebServer()) << "Resource for debug interface not found. Redirecting to /debug";
// return RestResource::createErrorReply(HttpReply::NotFound); HttpReply *reply = RestResource::createErrorReply(HttpReply::PermanentRedirect);
reply->setHeader(HttpReply::LocationHeader, "/debug");
// QByteArray imageData;
// QImage image(":" + fileName);
// QBuffer buffer(&imageData);
// buffer.open(QIODevice::WriteOnly);
// image.save(&buffer, "png");
// if (!imageData.isEmpty()) {
// HttpReply *reply = RestResource::createSuccessReply();
// reply->setHeader(HttpReply::ContentTypeHeader, "image/png");
// reply->setPayload(imageData);
// return reply;
// }
// return RestResource::createErrorReply(HttpReply::NotFound);
qCDebug(dcWebServer()) << "Create debug interface page";
// Fallback default debug page
HttpReply *reply = RestResource::createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "text/html");
reply->setPayload(createDebugXmlDocument());
return reply; return reply;
} }

View File

@ -39,7 +39,11 @@ private:
QByteArray createDebugXmlDocument(); QByteArray createDebugXmlDocument();
QByteArray createErrorXmlDocument(HttpReply::HttpStatusCode statusCode, const QString &errorMessage); QByteArray createErrorXmlDocument(HttpReply::HttpStatusCode statusCode, const QString &errorMessage);
QByteArray loadResourceFile(const QString &resourceFileName); QByteArray loadResourceFile(const QString &resourceFileName);
bool resourceFileExits(const QString &resourceFileName); QString getResourceFileName(const QString &requestPath);
bool resourceFileExits(const QString &requestPath);
HttpReply *processDebugFileRequest(const QString &requestPath);
}; };
} }

View File

@ -47,6 +47,8 @@
The request has no content but it was expected. The request has no content but it was expected.
\value Found \value Found
The resource was found. The resource was found.
\value PermanentRedirect
The resource redirects permanent to given url.
\value BadRequest \value BadRequest
The request was bad formatted. Also if a \l{Param} was not understood or the header is not correct. The request was bad formatted. Also if a \l{Param} was not understood or the header is not correct.
\value Forbidden \value Forbidden
@ -352,6 +354,8 @@ QByteArray HttpReply::getHttpReasonPhrase(const HttpReply::HttpStatusCode &statu
return "No Content"; return "No Content";
case Found: case Found:
return "Found"; return "Found";
case PermanentRedirect:
return "Permanent Redirect";
case BadRequest: case BadRequest:
return "Bad Request"; return "Bad Request";
case Forbidden: case Forbidden:

View File

@ -42,6 +42,7 @@ public:
Accepted = 202, Accepted = 202,
NoContent = 204, NoContent = 204,
Found = 302, Found = 302,
PermanentRedirect = 308,
BadRequest = 400, BadRequest = 400,
Forbidden = 403, Forbidden = 403,
NotFound = 404, NotFound = 404,

View File

@ -482,6 +482,13 @@ void TestWebserver::getDebugServer_data()
QTest::addColumn<bool>("serverEnabled"); QTest::addColumn<bool>("serverEnabled");
QTest::addColumn<int>("expectedStatusCode"); QTest::addColumn<int>("expectedStatusCode");
// Resource files
QTest::newRow("GET /debug/styles.css | server enabled | 200") << "get" << "/debug/styles.css" << true << 200;
QTest::newRow("GET /debug/logo.svg | server enabled | 200") << "get" << "/debug/logo.svg" << true << 200;
// Check redirection
QTest::newRow("GET /debug/thisresourcedoesnotexist | server enabled | 308-200") << "get" << "/debug/thisresourcedoesnotexist" << true << 308;
// debug enabled // debug enabled
QTest::newRow("GET /debug | server enabled | 200") << "get" << "/debug" << true << 200; QTest::newRow("GET /debug | server enabled | 200") << "get" << "/debug" << true << 200;
QTest::newRow("OPTIONS /debug | server enabled | 200") << "options" << "/debug" << true << 200; QTest::newRow("OPTIONS /debug | server enabled | 200") << "options" << "/debug" << true << 200;
@ -496,19 +503,33 @@ void TestWebserver::getDebugServer_data()
QTest::newRow("POST /debug | server disabled | 404") << "post" << "/debug" << false << 404; QTest::newRow("POST /debug | server disabled | 404") << "post" << "/debug" << false << 404;
QTest::newRow("DELETE /debug | server disabled | 404") << "delete" << "/debug" << false << 404; QTest::newRow("DELETE /debug | server disabled | 404") << "delete" << "/debug" << false << 404;
// styles.css enabled
QTest::newRow("GET /debug/styles.css | server enabled | 200") << "get" << "/debug/styles.css" << true << 200;
QTest::newRow("OPTIONS /debug/styles.css | server enabled | 200") << "options" << "/debug/styles.css" << true << 200;
QTest::newRow("PUT /debug/styles.css | server enabled | 405") << "put" << "/debug/styles.css" << true << 405;
QTest::newRow("POST /debug/styles.css | server enabled | 405") << "post" << "/debug/styles.css" << true << 405;
QTest::newRow("DELETE /debug/styles.css | server enabled | 405") << "delete" << "/debug/styles.css" << true << 405;
// styles.css disabled
QTest::newRow("GET /debug/styles.css | server disabled | 404") << "get" << "/debug/styles.css" << false << 404;
QTest::newRow("OPTIONS /debug/styles.css | server disabled | 404") << "options" << "/debug/styles.css" << false << 404;
QTest::newRow("PUT /debug/styles.css | server disabled | 404") << "put" << "/debug/styles.css" << false << 404;
QTest::newRow("POST /debug/styles.css | server disabled | 404") << "post" << "/debug/styles.css" << false << 404;
QTest::newRow("DELETE /debug/styles.css | server disabled | 404") << "delete" << "/debug/styles.css" << false << 404;
// logdb enabled // logdb enabled
QTest::newRow("GET /debug/logdb | server enabled | 200") << "get" << "/debug/logdb" << true << 200; QTest::newRow("GET /debug/logdb.sql | server enabled | 200") << "get" << "/debug/logdb.sql" << true << 200;
QTest::newRow("OPTIONS /debug/logdb | server enabled | 200") << "options" << "/debug/logdb" << true << 200; QTest::newRow("OPTIONS /debug/logdb.sql | server enabled | 200") << "options" << "/debug/logdb.sql" << true << 200;
QTest::newRow("PUT /debug/logdb | server enabled | 405") << "put" << "/debug/logdb" << true << 405; QTest::newRow("PUT /debug/logdb.sql | server enabled | 405") << "put" << "/debug/logdb.sql" << true << 405;
QTest::newRow("POST /debug/logdb | server enabled | 405") << "post" << "/debug/logdb" << true << 405; QTest::newRow("POST /debug/logdb.sql | server enabled | 405") << "post" << "/debug/logdb.sql" << true << 405;
QTest::newRow("DELETE /debug/logdb | server enabled | 405") << "delete" << "/debug/logdb" << true << 405; QTest::newRow("DELETE /debug/logdb.sql | server enabled | 405") << "delete" << "/debug/logdb.sql" << true << 405;
// logdb disabled // logdb disabled
QTest::newRow("GET /debug/logdb | server enabled | 404") << "get" << "/debug/logdb" << false << 404; QTest::newRow("GET /debug/logdb.sql | server disabled | 404") << "get" << "/debug/logdb.sql" << false << 404;
QTest::newRow("OPTIONS /debug/logdb | server enabled | 404") << "options" << "/debug/logdb" << false << 404; QTest::newRow("OPTIONS /debug/logdb.sql | server disabled | 404") << "options" << "/debug/logdb.sql" << false << 404;
QTest::newRow("PUT /debug/logdb | server enabled | 404") << "put" << "/debug/logdb" << false << 404; QTest::newRow("PUT /debug/logdb.sql | server disabled | 404") << "put" << "/debug/logdb.sql" << false << 404;
QTest::newRow("POST /debug/logdb | server enabled | 404") << "post" << "/debug/logdb" << false << 404; QTest::newRow("POST /debug/logdb.sql | server disabled | 404") << "post" << "/debug/logdb.sql" << false << 404;
QTest::newRow("DELETE /debug/logdb | server enabled | 404") << "delete" << "/debug/logdb" << false << 404; QTest::newRow("DELETE /debug/logdb.sql | server disabled | 404") << "delete" << "/debug/logdb.sql" << false << 404;
// Check if syslog is accessable // Check if syslog is accessable
QFileInfo syslogFileInfo("/var/log/syslog"); QFileInfo syslogFileInfo("/var/log/syslog");
@ -516,17 +537,17 @@ void TestWebserver::getDebugServer_data()
if (syslogFileInfo.exists() && syslogFileInfo.isReadable()) { if (syslogFileInfo.exists() && syslogFileInfo.isReadable()) {
// syslog enabled // syslog enabled
QTest::newRow("GET /debug/syslog | server enabled | 200") << "get" << "/debug/syslog" << true << 200; QTest::newRow("GET /debug/syslog | server enabled | 200") << "get" << "/debug/syslog" << true << 200;
QTest::newRow("OPTIONS /debug/syslog | server enabled | 200") << "options" << "/debug/logdb" << true << 200; QTest::newRow("OPTIONS /debug/syslog | server enabled | 200") << "options" << "/debug/syslog" << true << 200;
QTest::newRow("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/logdb" << true << 405; QTest::newRow("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/syslog" << true << 405;
QTest::newRow("POST /debug/syslog | server enabled | 405") << "post" << "/debug/logdb" << true << 405; QTest::newRow("POST /debug/syslog | server enabled | 405") << "post" << "/debug/syslog" << true << 405;
QTest::newRow("DELETE /debug/syslog | server enabled | 405") << "delete" << "/debug/logdb" << true << 405; QTest::newRow("DELETE /debug/syslog | server enabled | 405") << "delete" << "/debug/syslog" << true << 405;
} else { } else {
// syslog enabled, but not readable // syslog enabled, but not readable
QTest::newRow("GET /debug/syslog | server enabled | 200") << "get" << "/debug/syslog" << true << 403; QTest::newRow("GET /debug/syslog | server enabled | 200") << "get" << "/debug/syslog" << true << 403;
QTest::newRow("OPTIONS /debug/syslog | server enabled | 200") << "options" << "/debug/logdb" << true << 200; QTest::newRow("OPTIONS /debug/syslog | server enabled | 200") << "options" << "/debug/syslog" << true << 200;
QTest::newRow("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/logdb" << true << 405; QTest::newRow("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/syslog" << true << 405;
QTest::newRow("POST /debug/syslog | server enabled | 405") << "post" << "/debug/logdb" << true << 405; QTest::newRow("POST /debug/syslog | server enabled | 405") << "post" << "/debug/syslog" << true << 405;
QTest::newRow("DELETE /debug/syslog | server enabled | 405") << "delete" << "/debug/logdb" << true << 405; QTest::newRow("DELETE /debug/syslog | server enabled | 405") << "delete" << "/debug/syslog" << true << 405;
} }
// syslog disabled // syslog disabled
@ -544,11 +565,11 @@ void TestWebserver::getDebugServer_data()
QTest::newRow("DELETE /debug/settings/guhd | server enabled | 405") << "delete" << "/debug/settings/guhd" << true << 405; QTest::newRow("DELETE /debug/settings/guhd | server enabled | 405") << "delete" << "/debug/settings/guhd" << true << 405;
// settings/guhd disabled // settings/guhd disabled
QTest::newRow("GET /debug/settings/guhd | server enabled | 404") << "get" << "/debug/settings/guhd" << false << 404; QTest::newRow("GET /debug/settings/guhd | server disabled | 404") << "get" << "/debug/settings/guhd" << false << 404;
QTest::newRow("OPTIONS /debug/settings/guhd | server enabled | 404") << "options" << "/debug/settings/guhd" << false << 404; QTest::newRow("OPTIONS /debug/settings/guhd | server disabled | 404") << "options" << "/debug/settings/guhd" << false << 404;
QTest::newRow("PUT /debug/settings/guhd | server enabled | 404") << "put" << "/debug/settings/guhd" << false << 404; QTest::newRow("PUT /debug/settings/guhd | server disabled | 404") << "put" << "/debug/settings/guhd" << false << 404;
QTest::newRow("POST /debug/settings/guhd | server enabled | 404") << "post" << "/debug/settings/guhd" << false << 404; QTest::newRow("POST /debug/settings/guhd | server disabled | 404") << "post" << "/debug/settings/guhd" << false << 404;
QTest::newRow("DELETE /debug/settings/guhd | server enabled | 404") << "delete" << "/debug/settings/guhd" << false << 404; QTest::newRow("DELETE /debug/settings/guhd | server disabled | 404") << "delete" << "/debug/settings/guhd" << false << 404;
// settings/devices enabled // settings/devices enabled
QTest::newRow("GET /debug/settings/devices | server enabled | 200") << "get" << "/debug/settings/devices" << true << 200; QTest::newRow("GET /debug/settings/devices | server enabled | 200") << "get" << "/debug/settings/devices" << true << 200;
@ -558,11 +579,11 @@ void TestWebserver::getDebugServer_data()
QTest::newRow("DELETE /debug/settings/devices | server enabled | 405") << "delete" << "/debug/settings/devices" << true << 405; QTest::newRow("DELETE /debug/settings/devices | server enabled | 405") << "delete" << "/debug/settings/devices" << true << 405;
// settings/devices disabled // settings/devices disabled
QTest::newRow("GET /debug/settings/devices | server enabled | 404") << "get" << "/debug/settings/devices" << false << 404; QTest::newRow("GET /debug/settings/devices | server disabled | 404") << "get" << "/debug/settings/devices" << false << 404;
QTest::newRow("OPTIONS /debug/settings/devices | server enabled | 404") << "options" << "/debug/settings/devices" << false << 404; QTest::newRow("OPTIONS /debug/settings/devices | server disabled | 404") << "options" << "/debug/settings/devices" << false << 404;
QTest::newRow("PUT /debug/settings/devices | server enabled | 404") << "put" << "/debug/settings/devices" << false << 404; QTest::newRow("PUT /debug/settings/devices | server disabled | 404") << "put" << "/debug/settings/devices" << false << 404;
QTest::newRow("POST /debug/settings/devices | server enabled | 404") << "post" << "/debug/settings/devices" << false << 404; QTest::newRow("POST /debug/settings/devices | server disabled | 404") << "post" << "/debug/settings/devices" << false << 404;
QTest::newRow("DELETE /debug/settings/devices | server enabled | 404") << "delete" << "/debug/settings/devices" << false << 404; QTest::newRow("DELETE /debug/settings/devices | server disabled | 404") << "delete" << "/debug/settings/devices" << false << 404;
// settings/rules enabled // settings/rules enabled
QTest::newRow("GET /debug/settings/rules | server enabled | 200") << "get" << "/debug/settings/rules" << true << 200; QTest::newRow("GET /debug/settings/rules | server enabled | 200") << "get" << "/debug/settings/rules" << true << 200;
@ -572,11 +593,11 @@ void TestWebserver::getDebugServer_data()
QTest::newRow("DELETE /debug/settings/rules | server enabled | 405") << "delete" << "/debug/settings/rules" << true << 405; QTest::newRow("DELETE /debug/settings/rules | server enabled | 405") << "delete" << "/debug/settings/rules" << true << 405;
// settings/rules disabled // settings/rules disabled
QTest::newRow("GET /debug/settings/rules | server enabled | 404") << "get" << "/debug/settings/rules" << false << 404; QTest::newRow("GET /debug/settings/rules | server disabled | 404") << "get" << "/debug/settings/rules" << false << 404;
QTest::newRow("OPTIONS /debug/settings/rules | server enabled | 404") << "options" << "/debug/settings/rules" << false << 404; QTest::newRow("OPTIONS /debug/settings/rules | server disabled | 404") << "options" << "/debug/settings/rules" << false << 404;
QTest::newRow("PUT /debug/settings/rules | server enabled | 404") << "put" << "/debug/settings/rules" << false << 404; QTest::newRow("PUT /debug/settings/rules | server disabled | 404") << "put" << "/debug/settings/rules" << false << 404;
QTest::newRow("POST /debug/settings/rules | server enabled | 404") << "post" << "/debug/settings/rules" << false << 404; QTest::newRow("POST /debug/settings/rules | server disabled | 404") << "post" << "/debug/settings/rules" << false << 404;
QTest::newRow("DELETE /debug/settings/rules | server enabled | 404") << "delete" << "/debug/settings/rules" << false << 404; QTest::newRow("DELETE /debug/settings/rules | server disabled | 404") << "delete" << "/debug/settings/rules" << false << 404;
// settings/devicestates enabled // settings/devicestates enabled
QTest::newRow("GET /debug/settings/devicestates | server enabled | 200") << "get" << "/debug/settings/devicestates" << true << 200; QTest::newRow("GET /debug/settings/devicestates | server enabled | 200") << "get" << "/debug/settings/devicestates" << true << 200;
@ -586,11 +607,12 @@ void TestWebserver::getDebugServer_data()
QTest::newRow("DELETE /debug/settings/devicestates | server enabled | 405") << "delete" << "/debug/settings/devicestates" << true << 405; QTest::newRow("DELETE /debug/settings/devicestates | server enabled | 405") << "delete" << "/debug/settings/devicestates" << true << 405;
// settings/devicestates disabled // settings/devicestates disabled
QTest::newRow("GET /debug/settings/devicestates | server enabled | 404") << "get" << "/debug/settings/devicestates" << false << 404; QTest::newRow("GET /debug/settings/devicestates | server disabled | 404") << "get" << "/debug/settings/devicestates" << false << 404;
QTest::newRow("OPTIONS /debug/settings/devicestates | server enabled | 404") << "options" << "/debug/settings/devicestates" << false << 404; QTest::newRow("OPTIONS /debug/settings/devicestates | server disabled | 404") << "options" << "/debug/settings/devicestates" << false << 404;
QTest::newRow("PUT /debug/settings/devicestates | server enabled | 404") << "put" << "/debug/settings/devicestates" << false << 404; QTest::newRow("PUT /debug/settings/devicestates | server disabled | 404") << "put" << "/debug/settings/devicestates" << false << 404;
QTest::newRow("POST /debug/settings/devicestates | server enabled | 404") << "post" << "/debug/settings/devicestates" << false << 404; QTest::newRow("POST /debug/settings/devicestates | server disabled | 404") << "post" << "/debug/settings/devicestates" << false << 404;
QTest::newRow("DELETE /debug/settings/devicestates | server enabled | 404") << "delete" << "/debug/settings/devicestates" << false << 404; QTest::newRow("DELETE /debug/settings/devicestates | server disabled | 404") << "delete" << "/debug/settings/devicestates" << false << 404;
} }
void TestWebserver::getDebugServer() void TestWebserver::getDebugServer()