File indexing completed on 2024-05-12 17:08:30
0001 /* 0002 * SPDX-FileCopyrightText: 2018-2019 Daniel Vrátil <dvratil@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include "fakeserver.h" 0008 #include "fakemanager.h" 0009 0010 #include <QDBusConnection> 0011 #include <QDBusConnectionInterface> 0012 #include <QDBusError> 0013 #include <QDebug> 0014 #include <QEventLoop> 0015 #include <QJsonDocument> 0016 #include <QJsonObject> 0017 #include <QTest> 0018 #include <QTimer> 0019 0020 namespace 0021 { 0022 static const QString OrgKdeFakebolt = QStringLiteral("org.kde.fakebolt"); 0023 0024 } 0025 0026 FakeServer::FakeServer(const QString &filename) 0027 { 0028 QFile jsonFile(filename); 0029 if (!jsonFile.open(QIODevice::ReadOnly)) { 0030 qCritical("Failed to open file %s: %s", qUtf8Printable(filename), qUtf8Printable(jsonFile.errorString())); 0031 throw FakeServerException(QStringLiteral("Failed to open file %1: %2").arg(filename, jsonFile.errorString())); 0032 } 0033 0034 const auto doc = QJsonDocument::fromJson(jsonFile.readAll()); 0035 0036 if (!QDBusConnection::sessionBus().registerService(OrgKdeFakebolt)) { 0037 throw FakeServerException(QStringLiteral("Failed to register org.kde.fakebolt service: %1").arg(QDBusConnection::sessionBus().lastError().message())); 0038 } 0039 0040 try { 0041 mManager = std::make_unique<FakeManager>(doc.object()); 0042 } catch (const FakeManagerException &e) { 0043 throw FakeServerException(e.what()); 0044 } 0045 } 0046 0047 FakeServer::FakeServer() 0048 { 0049 if (!QDBusConnection::sessionBus().registerService(OrgKdeFakebolt)) { 0050 throw FakeServerException(QStringLiteral("Failed to register org.kde.fakebolt service: %1").arg(QDBusConnection::sessionBus().lastError().message())); 0051 } 0052 0053 try { 0054 mManager = std::make_unique<FakeManager>(); 0055 } catch (FakeManagerException &e) { 0056 throw FakeServerException(e.what()); 0057 } 0058 } 0059 0060 FakeServer::~FakeServer() 0061 { 0062 } 0063 0064 void FakeServer::enableFakeEnv() 0065 { 0066 qputenv("KBOLT_FAKE", "1"); 0067 } 0068 0069 FakeManager *FakeServer::manager() const 0070 { 0071 return mManager.get(); 0072 }