diff --git a/libguh-core/debugserverhandler.cpp b/libguh-core/debugserverhandler.cpp index 364f4961..94775af4 100644 --- a/libguh-core/debugserverhandler.cpp +++ b/libguh-core/debugserverhandler.cpp @@ -223,6 +223,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeStartElement("tr"); writer.writeTextElement("th", QCoreApplication::translate("main", "Log database")); + writer.writeTextElement("td", GuhSettings::logPath()); writer.writeStartElement("td"); writer.writeStartElement("form"); writer.writeAttribute("method", "get"); @@ -236,7 +237,8 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeEndElement(); // 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("form"); writer.writeAttribute("method", "get"); @@ -262,6 +264,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeStartElement("tr"); writer.writeTextElement("th", QCoreApplication::translate("main", "Guhd settings")); + writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleGlobal).fileName()); writer.writeStartElement("td"); writer.writeStartElement("form"); writer.writeAttribute("method", "get"); @@ -276,6 +279,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeStartElement("tr"); writer.writeTextElement("th", QCoreApplication::translate("main", "Device settings")); + writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleDevices).fileName()); writer.writeStartElement("td"); writer.writeStartElement("form"); writer.writeAttribute("method", "get"); @@ -290,6 +294,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeStartElement("tr"); writer.writeTextElement("th", QCoreApplication::translate("main", "Device state settings")); + writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleDeviceStates).fileName()); writer.writeStartElement("td"); writer.writeStartElement("form"); writer.writeAttribute("method", "get"); @@ -305,6 +310,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeStartElement("tr"); writer.writeTextElement("th", QCoreApplication::translate("main", "Rules settings")); + writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleRules).fileName()); writer.writeStartElement("td"); writer.writeStartElement("form"); writer.writeAttribute("method", "get"); @@ -317,6 +323,21 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeEndElement(); // td 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.writeEmptyElement("hr"); @@ -385,17 +406,52 @@ QByteArray DebugServerHandler::loadResourceFile(const QString &resourceFileName) 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(); } +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) { 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 if (requestPath.startsWith("/debug/logdb.sql")) { qCDebug(dcWebServer()) << "Loading" << GuhSettings::logPath(); @@ -573,66 +629,46 @@ HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath) reply->setPayload(settingsFileData); 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")) { - QString resourceFileName = "/styles.css"; - // Check if exists - if (!resourceFileExits(resourceFileName)) { - qCWarning(dcWebServer()) << "The requested resource file" << resourceFileName << "does not exist"; - HttpReply *reply = RestResource::createErrorReply(HttpReply::NotFound); + if (!settingsFile.open(QFile::ReadOnly)) { + qCWarning(dcWebServer()) << "Could not read file for debug download" << settingsFileName; + HttpReply *reply = RestResource::createErrorReply(HttpReply::Forbidden); + reply->setHeader(HttpReply::ContentTypeHeader, "text/html"); + reply->setPayload(createErrorXmlDocument(HttpReply::NotFound, QCoreApplication::translate("main", "Could not open file") + " " + settingsFileName)); + return reply; + } + + QByteArray settingsFileData = settingsFile.readAll(); + settingsFile.close(); + + HttpReply *reply = RestResource::createSuccessReply(); reply->setHeader(HttpReply::ContentTypeHeader, "text/plain"); - reply->setPayload(createErrorXmlDocument(HttpReply::NotFound, QCoreApplication::translate("main", "Could not find find") + " " + resourceFileName)); + reply->setPayload(settingsFileData); 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 (!fileName.endsWith(".png")) -// return RestResource::createErrorReply(HttpReply::NotFound); - -// 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()); + // If nothing matches, redirect to /debug page + qCWarning(dcWebServer()) << "Resource for debug interface not found. Redirecting to /debug"; + HttpReply *reply = RestResource::createErrorReply(HttpReply::PermanentRedirect); + reply->setHeader(HttpReply::LocationHeader, "/debug"); return reply; } diff --git a/libguh-core/debugserverhandler.h b/libguh-core/debugserverhandler.h index cfb19d83..7073d437 100644 --- a/libguh-core/debugserverhandler.h +++ b/libguh-core/debugserverhandler.h @@ -39,7 +39,11 @@ private: QByteArray createDebugXmlDocument(); QByteArray createErrorXmlDocument(HttpReply::HttpStatusCode statusCode, const QString &errorMessage); 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); + }; } diff --git a/libguh-core/httpreply.cpp b/libguh-core/httpreply.cpp index 8166f562..2b412e4b 100644 --- a/libguh-core/httpreply.cpp +++ b/libguh-core/httpreply.cpp @@ -47,6 +47,8 @@ The request has no content but it was expected. \value Found The resource was found. + \value PermanentRedirect + The resource redirects permanent to given url. \value BadRequest The request was bad formatted. Also if a \l{Param} was not understood or the header is not correct. \value Forbidden @@ -352,6 +354,8 @@ QByteArray HttpReply::getHttpReasonPhrase(const HttpReply::HttpStatusCode &statu return "No Content"; case Found: return "Found"; + case PermanentRedirect: + return "Permanent Redirect"; case BadRequest: return "Bad Request"; case Forbidden: diff --git a/libguh-core/httpreply.h b/libguh-core/httpreply.h index fcca7c76..d6cca201 100644 --- a/libguh-core/httpreply.h +++ b/libguh-core/httpreply.h @@ -42,6 +42,7 @@ public: Accepted = 202, NoContent = 204, Found = 302, + PermanentRedirect = 308, BadRequest = 400, Forbidden = 403, NotFound = 404, diff --git a/tests/auto/webserver/testwebserver.cpp b/tests/auto/webserver/testwebserver.cpp index a0ec91d4..5a56423a 100644 --- a/tests/auto/webserver/testwebserver.cpp +++ b/tests/auto/webserver/testwebserver.cpp @@ -482,6 +482,13 @@ void TestWebserver::getDebugServer_data() QTest::addColumn("serverEnabled"); QTest::addColumn("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 QTest::newRow("GET /debug | server enabled | 200") << "get" << "/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("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 - QTest::newRow("GET /debug/logdb | server enabled | 200") << "get" << "/debug/logdb" << true << 200; - QTest::newRow("OPTIONS /debug/logdb | server enabled | 200") << "options" << "/debug/logdb" << true << 200; - QTest::newRow("PUT /debug/logdb | server enabled | 405") << "put" << "/debug/logdb" << true << 405; - QTest::newRow("POST /debug/logdb | server enabled | 405") << "post" << "/debug/logdb" << true << 405; - QTest::newRow("DELETE /debug/logdb | server enabled | 405") << "delete" << "/debug/logdb" << true << 405; + QTest::newRow("GET /debug/logdb.sql | server enabled | 200") << "get" << "/debug/logdb.sql" << true << 200; + QTest::newRow("OPTIONS /debug/logdb.sql | server enabled | 200") << "options" << "/debug/logdb.sql" << true << 200; + QTest::newRow("PUT /debug/logdb.sql | server enabled | 405") << "put" << "/debug/logdb.sql" << true << 405; + QTest::newRow("POST /debug/logdb.sql | server enabled | 405") << "post" << "/debug/logdb.sql" << true << 405; + QTest::newRow("DELETE /debug/logdb.sql | server enabled | 405") << "delete" << "/debug/logdb.sql" << true << 405; // logdb disabled - QTest::newRow("GET /debug/logdb | server enabled | 404") << "get" << "/debug/logdb" << false << 404; - QTest::newRow("OPTIONS /debug/logdb | server enabled | 404") << "options" << "/debug/logdb" << false << 404; - QTest::newRow("PUT /debug/logdb | server enabled | 404") << "put" << "/debug/logdb" << false << 404; - QTest::newRow("POST /debug/logdb | server enabled | 404") << "post" << "/debug/logdb" << false << 404; - QTest::newRow("DELETE /debug/logdb | server enabled | 404") << "delete" << "/debug/logdb" << false << 404; + QTest::newRow("GET /debug/logdb.sql | server disabled | 404") << "get" << "/debug/logdb.sql" << false << 404; + QTest::newRow("OPTIONS /debug/logdb.sql | server disabled | 404") << "options" << "/debug/logdb.sql" << false << 404; + QTest::newRow("PUT /debug/logdb.sql | server disabled | 404") << "put" << "/debug/logdb.sql" << false << 404; + QTest::newRow("POST /debug/logdb.sql | server disabled | 404") << "post" << "/debug/logdb.sql" << false << 404; + QTest::newRow("DELETE /debug/logdb.sql | server disabled | 404") << "delete" << "/debug/logdb.sql" << false << 404; // Check if syslog is accessable QFileInfo syslogFileInfo("/var/log/syslog"); @@ -516,17 +537,17 @@ void TestWebserver::getDebugServer_data() if (syslogFileInfo.exists() && syslogFileInfo.isReadable()) { // syslog enabled 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("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/logdb" << true << 405; - QTest::newRow("POST /debug/syslog | server enabled | 405") << "post" << "/debug/logdb" << true << 405; - QTest::newRow("DELETE /debug/syslog | server enabled | 405") << "delete" << "/debug/logdb" << true << 405; + QTest::newRow("OPTIONS /debug/syslog | server enabled | 200") << "options" << "/debug/syslog" << true << 200; + QTest::newRow("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/syslog" << 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/syslog" << true << 405; } else { // syslog enabled, but not readable 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("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/logdb" << true << 405; - QTest::newRow("POST /debug/syslog | server enabled | 405") << "post" << "/debug/logdb" << true << 405; - QTest::newRow("DELETE /debug/syslog | server enabled | 405") << "delete" << "/debug/logdb" << true << 405; + QTest::newRow("OPTIONS /debug/syslog | server enabled | 200") << "options" << "/debug/syslog" << true << 200; + QTest::newRow("PUT /debug/syslog | server enabled | 405") << "put" << "/debug/syslog" << 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/syslog" << true << 405; } // 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; // settings/guhd disabled - QTest::newRow("GET /debug/settings/guhd | server enabled | 404") << "get" << "/debug/settings/guhd" << false << 404; - QTest::newRow("OPTIONS /debug/settings/guhd | server enabled | 404") << "options" << "/debug/settings/guhd" << false << 404; - QTest::newRow("PUT /debug/settings/guhd | server enabled | 404") << "put" << "/debug/settings/guhd" << false << 404; - QTest::newRow("POST /debug/settings/guhd | server enabled | 404") << "post" << "/debug/settings/guhd" << false << 404; - QTest::newRow("DELETE /debug/settings/guhd | server enabled | 404") << "delete" << "/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 disabled | 404") << "options" << "/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 disabled | 404") << "post" << "/debug/settings/guhd" << false << 404; + QTest::newRow("DELETE /debug/settings/guhd | server disabled | 404") << "delete" << "/debug/settings/guhd" << false << 404; // settings/devices enabled 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; // settings/devices disabled - QTest::newRow("GET /debug/settings/devices | server enabled | 404") << "get" << "/debug/settings/devices" << false << 404; - QTest::newRow("OPTIONS /debug/settings/devices | server enabled | 404") << "options" << "/debug/settings/devices" << false << 404; - QTest::newRow("PUT /debug/settings/devices | server enabled | 404") << "put" << "/debug/settings/devices" << false << 404; - QTest::newRow("POST /debug/settings/devices | server enabled | 404") << "post" << "/debug/settings/devices" << false << 404; - QTest::newRow("DELETE /debug/settings/devices | server enabled | 404") << "delete" << "/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 disabled | 404") << "options" << "/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 disabled | 404") << "post" << "/debug/settings/devices" << false << 404; + QTest::newRow("DELETE /debug/settings/devices | server disabled | 404") << "delete" << "/debug/settings/devices" << false << 404; // settings/rules enabled 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; // settings/rules disabled - QTest::newRow("GET /debug/settings/rules | server enabled | 404") << "get" << "/debug/settings/rules" << false << 404; - QTest::newRow("OPTIONS /debug/settings/rules | server enabled | 404") << "options" << "/debug/settings/rules" << false << 404; - QTest::newRow("PUT /debug/settings/rules | server enabled | 404") << "put" << "/debug/settings/rules" << false << 404; - QTest::newRow("POST /debug/settings/rules | server enabled | 404") << "post" << "/debug/settings/rules" << false << 404; - QTest::newRow("DELETE /debug/settings/rules | server enabled | 404") << "delete" << "/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 disabled | 404") << "options" << "/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 disabled | 404") << "post" << "/debug/settings/rules" << false << 404; + QTest::newRow("DELETE /debug/settings/rules | server disabled | 404") << "delete" << "/debug/settings/rules" << false << 404; // settings/devicestates enabled 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; // settings/devicestates disabled - QTest::newRow("GET /debug/settings/devicestates | server enabled | 404") << "get" << "/debug/settings/devicestates" << false << 404; - QTest::newRow("OPTIONS /debug/settings/devicestates | server enabled | 404") << "options" << "/debug/settings/devicestates" << false << 404; - QTest::newRow("PUT /debug/settings/devicestates | server enabled | 404") << "put" << "/debug/settings/devicestates" << false << 404; - QTest::newRow("POST /debug/settings/devicestates | server enabled | 404") << "post" << "/debug/settings/devicestates" << false << 404; - QTest::newRow("DELETE /debug/settings/devicestates | server enabled | 404") << "delete" << "/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 disabled | 404") << "options" << "/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 disabled | 404") << "post" << "/debug/settings/devicestates" << false << 404; + QTest::newRow("DELETE /debug/settings/devicestates | server disabled | 404") << "delete" << "/debug/settings/devicestates" << false << 404; + } void TestWebserver::getDebugServer()