File indexing completed on 2024-06-02 05:07:00

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 "roomsexportjobtest.h"
0008 #include "rooms/roomsexportjob.h"
0009 #include "ruqola_restapi_helper.h"
0010 #include <QJsonDocument>
0011 QTEST_GUILESS_MAIN(RoomsExportJobTest)
0012 using namespace RocketChatRestApi;
0013 RoomsExportJobTest::RoomsExportJobTest(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 void RoomsExportJobTest::shouldHaveDefaultValue()
0019 {
0020     RoomsExportJob job;
0021     QVERIFY(!job.roomExportInfo().isValid());
0022     verifyDefaultValue(&job);
0023     QVERIFY(job.requireHttpAuthentication());
0024     QVERIFY(!job.hasQueryParameterSupport());
0025 
0026     RoomsExportJob::RoomsExportInfo info;
0027     QVERIFY(!info.isValid());
0028     QCOMPARE(info.fileFormat, RoomsExportJob::RoomsExportInfo::FileFormat::Unknown);
0029     QVERIFY(info.roomId.isEmpty());
0030     QVERIFY(info.toUsers.isEmpty());
0031     QVERIFY(info.toEmails.isEmpty());
0032     QVERIFY(info.subject.isEmpty());
0033     QVERIFY(info.messages.isEmpty());
0034     QVERIFY(!info.dateFrom.isValid());
0035     QVERIFY(!info.dateTo.isValid());
0036     QVERIFY(!job.requireTwoFactorAuthentication());
0037 }
0038 
0039 void RoomsExportJobTest::shouldGenerateRequest()
0040 {
0041     RoomsExportJob job;
0042     QNetworkRequest request = QNetworkRequest(QUrl());
0043     verifyAuthentication(&job, request);
0044     QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/rooms.export")));
0045     QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json"));
0046 }
0047 
0048 void RoomsExportJobTest::shouldGenerateJson()
0049 {
0050     RoomsExportJob job;
0051     RoomsExportJob::RoomsExportInfo info;
0052     // TODO
0053     const QString roomId = QStringLiteral("room1");
0054     info.roomId = roomId;
0055     info.exportAs = RoomsExportJob::RoomsExportInfo::ExportAs::File;
0056 
0057     info.dateFrom = QDateTime(QDate(2020, 12, 3), QTime(5, 7, 50));
0058     info.dateTo = QDateTime(QDate(2020, 3, 3), QTime(5, 7, 50));
0059     job.setRoomExportInfo(info);
0060     QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0061              QStringLiteral(R"({"dateFrom":"2020-12-03T05:07:50.000","dateTo":"2020-03-03T05:07:50.000","rid":"%1","type":"file"})").arg(roomId).toLatin1());
0062     //    info.inclusive = true;
0063     //    job.setCleanHistoryInfo(info);
0064     //    QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0065     //    QStringLiteral(R"({"inclusive":true,"latest":"2020-12-03T04:07:50.000Z","oldest":"2020-03-03T04:07:50.000Z","roomId":"%1"})").arg(roomId).toLatin1());
0066     //    info.ignoreThreads = true;
0067     //    job.setCleanHistoryInfo(info);
0068     //    QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0069     //    QStringLiteral(R"({"ignoreThreads":true,"inclusive":true,"latest":"2020-12-03T04:07:50.000Z","oldest":"2020-03-03T04:07:50.000Z","roomId":"%1"})").arg(roomId).toLatin1());
0070     //    const QStringList users = {QStringLiteral("bla"), QStringLiteral("bli")};
0071     //    info.users = users;
0072     //    job.setCleanHistoryInfo(info);
0073     //    QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0074     //    QStringLiteral(R"({"ignoreThreads":true,"inclusive":true,"latest":"2020-12-03T04:07:50.000Z","oldest":"2020-03-03T04:07:50.000Z","roomId":"room1","users":["bla","bli"]})").arg(roomId).toLatin1());
0075 }
0076 
0077 void RoomsExportJobTest::shouldNotStarting()
0078 {
0079     RoomsExportJob job;
0080 
0081     RestApiMethod method;
0082     method.setServerUrl(QStringLiteral("http://www.kde.org"));
0083     job.setRestApiMethod(&method);
0084 
0085     QNetworkAccessManager mNetworkAccessManager;
0086     job.setNetworkAccessManager(&mNetworkAccessManager);
0087     QVERIFY(!job.canStart());
0088     const QString auth = QStringLiteral("foo");
0089     const QString userId = QStringLiteral("foo");
0090     job.setAuthToken(auth);
0091     QVERIFY(!job.canStart());
0092     job.setUserId(userId);
0093     QVERIFY(!job.canStart());
0094     RoomsExportJob::RoomsExportInfo info;
0095     const QString roomId = QStringLiteral("room1");
0096     info.roomId = roomId;
0097     job.setRoomExportInfo(info);
0098     QVERIFY(!job.canStart());
0099 
0100     //    info.latest = QDateTime(QDate(2020, 12, 3), QTime(5, 7, 50));
0101     //    info.oldest = QDateTime(QDate(2020, 3, 3), QTime(5, 7, 50));
0102     //    job.setCleanHistoryInfo(info);
0103     //    QVERIFY(job.canStart());
0104     // TODO
0105 }
0106 
0107 #include "moc_roomsexportjobtest.cpp"