File indexing completed on 2025-02-02 04:51:31

0001 /*
0002    SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "saveroomsettingsjobtest.h"
0008 #include "rooms/saveroomsettingsjob.h"
0009 #include "ruqola_restapi_helper.h"
0010 #include <QJsonDocument>
0011 QTEST_GUILESS_MAIN(SaveRoomSettingsJobTest)
0012 using namespace RocketChatRestApi;
0013 SaveRoomSettingsJobTest::SaveRoomSettingsJobTest(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 void SaveRoomSettingsJobTest::shouldHaveDefaultValue()
0019 {
0020     SaveRoomSettingsJob job;
0021     verifyDefaultValue(&job);
0022     QVERIFY(!job.saveRoomSettingsInfo().isValid());
0023 
0024     QVERIFY(job.requireHttpAuthentication());
0025     QVERIFY(!job.saveRoomSettingsInfo().isValid());
0026     QVERIFY(!job.hasQueryParameterSupport());
0027     QVERIFY(!job.requireTwoFactorAuthentication());
0028 }
0029 
0030 void SaveRoomSettingsJobTest::shouldGenerateRequest()
0031 {
0032     SaveRoomSettingsJob job;
0033     QNetworkRequest request = QNetworkRequest(QUrl());
0034     verifyAuthentication(&job, request);
0035     QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/rooms.saveRoomSettings")));
0036     QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json"));
0037 }
0038 
0039 void SaveRoomSettingsJobTest::shouldGenerateJson()
0040 {
0041     SaveRoomSettingsJob job;
0042     const QString roomId = QStringLiteral("foo1");
0043     SaveRoomSettingsJob::SaveRoomSettingsInfo info;
0044     info.roomId = roomId;
0045     job.setSaveRoomSettingsInfo(info);
0046     QCOMPARE(job.json().toJson(QJsonDocument::Compact), QStringLiteral(R"({"favorite":{},"rid":"%1","roomType":""})").arg(roomId).toLatin1());
0047 
0048     const QString roomAnnouncement = QStringLiteral("announcement");
0049     info.mSettingsWillBeChanged |= SaveRoomSettingsJob::SaveRoomSettingsInfo::RoomAnnouncement;
0050     info.roomAnnouncement = roomAnnouncement;
0051     job.setSaveRoomSettingsInfo(info);
0052     const QStringList systemMessages{QStringLiteral("ua"), QStringLiteral("ca")};
0053     info.mSettingsWillBeChanged |= SaveRoomSettingsJob::SaveRoomSettingsInfo::SystemMessages;
0054     info.systemMessages = systemMessages;
0055     job.setSaveRoomSettingsInfo(info);
0056     QString res;
0057     for (const QString &s : systemMessages) {
0058         if (!res.isEmpty()) {
0059             res += QLatin1Char(',');
0060         }
0061         res += QStringLiteral("\"%1\"").arg(s);
0062     }
0063     QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0064              QStringLiteral(R"({"favorite":{},"rid":"%1","roomAnnouncement":"%2","roomType":"","systemMessages":[%3]})")
0065                  .arg(roomId, roomAnnouncement, res)
0066                  .toLatin1());
0067 }
0068 
0069 void SaveRoomSettingsJobTest::shouldNotStarting()
0070 {
0071     SaveRoomSettingsJob job;
0072 
0073     RestApiMethod method;
0074     method.setServerUrl(QStringLiteral("http://www.kde.org"));
0075     job.setRestApiMethod(&method);
0076 
0077     QNetworkAccessManager mNetworkAccessManager;
0078     job.setNetworkAccessManager(&mNetworkAccessManager);
0079     QVERIFY(!job.canStart());
0080     const QString auth = QStringLiteral("foo");
0081     const QString userId = QStringLiteral("foo");
0082     job.setAuthToken(auth);
0083     QVERIFY(!job.canStart());
0084     job.setUserId(userId);
0085     QVERIFY(!job.canStart());
0086     const QString roomId = QStringLiteral("foo1");
0087     SaveRoomSettingsJob::SaveRoomSettingsInfo info;
0088     info.roomId = roomId;
0089     job.setSaveRoomSettingsInfo(info);
0090     QVERIFY(!job.canStart());
0091 
0092     // We need to change a settings
0093     //     QVERIFY(job.canStart());
0094 }
0095 
0096 #include "moc_saveroomsettingsjobtest.cpp"