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

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "roomscleanhistoryjobtest.h"
0008 #include "rooms/roomscleanhistoryjob.h"
0009 #include "ruqola_restapi_helper.h"
0010 #include <QJsonDocument>
0011 QTEST_GUILESS_MAIN(RoomsCleanHistoryJobTest)
0012 using namespace RocketChatRestApi;
0013 RoomsCleanHistoryJobTest::RoomsCleanHistoryJobTest(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 void RoomsCleanHistoryJobTest::shouldHaveDefaultValue()
0019 {
0020     RoomsCleanHistoryJob job;
0021     QVERIFY(!job.cleanHistoryInfo().isValid());
0022     verifyDefaultValue(&job);
0023     QVERIFY(job.requireHttpAuthentication());
0024     QVERIFY(!job.hasQueryParameterSupport());
0025 
0026     RoomsCleanHistoryJob::CleanHistoryInfo info;
0027     QVERIFY(!info.isValid());
0028     QVERIFY(!info.inclusive);
0029     QVERIFY(!info.excludePinned);
0030     QVERIFY(!info.filesOnly);
0031     QVERIFY(!info.ignoreThreads);
0032     QVERIFY(!info.ignoreDiscussion);
0033     QVERIFY(info.users.isEmpty());
0034     QVERIFY(info.roomId.isEmpty());
0035     QVERIFY(!info.oldest.isValid());
0036     QVERIFY(!info.latest.isValid());
0037 }
0038 
0039 void RoomsCleanHistoryJobTest::shouldGenerateRequest()
0040 {
0041     RoomsCleanHistoryJob job;
0042     QNetworkRequest request = QNetworkRequest(QUrl());
0043     verifyAuthentication(&job, request);
0044     QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/rooms.cleanHistory")));
0045     QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json"));
0046 }
0047 
0048 void RoomsCleanHistoryJobTest::shouldGenerateJson()
0049 {
0050     RoomsCleanHistoryJob job;
0051     RoomsCleanHistoryJob::CleanHistoryInfo info;
0052     const QString roomId = QStringLiteral("room1");
0053     info.roomId = roomId;
0054     info.latest = QDateTime(QDate(2020, 12, 3), QTime(5, 7, 50));
0055     info.oldest = QDateTime(QDate(2020, 3, 3), QTime(5, 7, 50));
0056     job.setCleanHistoryInfo(info);
0057     QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0058              QStringLiteral(R"({"latest":"2020-12-03T05:07:50.000","oldest":"2020-03-03T05:07:50.000","roomId":"%1"})").arg(roomId).toLatin1());
0059     info.inclusive = true;
0060     job.setCleanHistoryInfo(info);
0061     QCOMPARE(
0062         job.json().toJson(QJsonDocument::Compact),
0063         QStringLiteral(R"({"inclusive":true,"latest":"2020-12-03T05:07:50.000","oldest":"2020-03-03T05:07:50.000","roomId":"%1"})").arg(roomId).toLatin1());
0064     info.ignoreThreads = true;
0065     job.setCleanHistoryInfo(info);
0066     QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0067              QStringLiteral(R"({"ignoreThreads":true,"inclusive":true,"latest":"2020-12-03T05:07:50.000","oldest":"2020-03-03T05:07:50.000","roomId":"%1"})")
0068                  .arg(roomId)
0069                  .toLatin1());
0070     const QStringList users = {QStringLiteral("bla"), QStringLiteral("bli")};
0071     info.users = users;
0072     job.setCleanHistoryInfo(info);
0073     QCOMPARE(
0074         job.json().toJson(QJsonDocument::Compact),
0075         QStringLiteral(
0076             R"({"ignoreThreads":true,"inclusive":true,"latest":"2020-12-03T05:07:50.000","oldest":"2020-03-03T05:07:50.000","roomId":"%1","users":["bla","bli"]})")
0077             .arg(roomId)
0078             .toLatin1());
0079     info.ignoreDiscussion = true;
0080     job.setCleanHistoryInfo(info);
0081     QCOMPARE(
0082         job.json().toJson(QJsonDocument::Compact),
0083         QStringLiteral(
0084             R"({"ignoreDiscussion":true,"ignoreThreads":true,"inclusive":true,"latest":"2020-12-03T05:07:50.000","oldest":"2020-03-03T05:07:50.000","roomId":"%1","users":["bla","bli"]})")
0085             .arg(roomId)
0086             .toLatin1());
0087 }
0088 
0089 void RoomsCleanHistoryJobTest::shouldNotStarting()
0090 {
0091     RoomsCleanHistoryJob job;
0092 
0093     RestApiMethod method;
0094     method.setServerUrl(QStringLiteral("http://www.kde.org"));
0095     job.setRestApiMethod(&method);
0096 
0097     QNetworkAccessManager mNetworkAccessManager;
0098     job.setNetworkAccessManager(&mNetworkAccessManager);
0099     QVERIFY(!job.canStart());
0100     const QString auth = QStringLiteral("foo");
0101     const QString userId = QStringLiteral("foo");
0102     job.setAuthToken(auth);
0103     QVERIFY(!job.canStart());
0104     job.setUserId(userId);
0105     QVERIFY(!job.canStart());
0106     RoomsCleanHistoryJob::CleanHistoryInfo info;
0107     const QString roomId = QStringLiteral("room1");
0108     info.roomId = roomId;
0109     job.setCleanHistoryInfo(info);
0110     QVERIFY(!job.canStart());
0111 
0112     info.latest = QDateTime(QDate(2020, 12, 3), QTime(5, 7, 50));
0113     info.oldest = QDateTime(QDate(2020, 3, 3), QTime(5, 7, 50));
0114     job.setCleanHistoryInfo(info);
0115     QVERIFY(job.canStart());
0116 }
0117 
0118 #include "moc_roomscleanhistoryjobtest.cpp"