File indexing completed on 2024-06-02 05:06:54
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 "findorcreateinvitejobtest.h" 0008 #include "invite/findorcreateinvitejob.h" 0009 #include "ruqola_restapi_helper.h" 0010 #include <QJsonDocument> 0011 #include <QJsonObject> 0012 QTEST_GUILESS_MAIN(FindOrCreateInviteJobTest) 0013 using namespace RocketChatRestApi; 0014 FindOrCreateInviteJobTest::FindOrCreateInviteJobTest(QObject *parent) 0015 : QObject(parent) 0016 { 0017 } 0018 0019 void FindOrCreateInviteJobTest::shouldHaveDefaultValue() 0020 { 0021 FindOrCreateInviteJob job; 0022 verifyDefaultValue(&job); 0023 QVERIFY(job.requireHttpAuthentication()); 0024 QVERIFY(!job.hasQueryParameterSupport()); 0025 } 0026 0027 void FindOrCreateInviteJobTest::shouldGenerateRequest() 0028 { 0029 FindOrCreateInviteJob job; 0030 QNetworkRequest request = QNetworkRequest(QUrl()); 0031 verifyAuthentication(&job, request); 0032 QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/findOrCreateInvite"))); 0033 QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json")); 0034 } 0035 0036 void FindOrCreateInviteJobTest::shouldGenerateJson() 0037 { 0038 FindOrCreateInviteJob job; 0039 0040 const QString roomId = QStringLiteral("foo1"); 0041 job.setRoomId(roomId); 0042 QCOMPARE(job.json().toJson(QJsonDocument::Compact), QStringLiteral(R"({"days":0,"maxUses":20,"rid":"%1"})").arg(roomId).toLatin1()); 0043 job.setMaxUses(32); 0044 QCOMPARE(job.json().toJson(QJsonDocument::Compact), QStringLiteral(R"({"days":0,"maxUses":32,"rid":"%1"})").arg(roomId).toLatin1()); 0045 job.setNumberOfDays(42); 0046 QCOMPARE(job.json().toJson(QJsonDocument::Compact), QStringLiteral(R"({"days":42,"maxUses":32,"rid":"%1"})").arg(roomId).toLatin1()); 0047 } 0048 0049 void FindOrCreateInviteJobTest::shouldNotStarting() 0050 { 0051 FindOrCreateInviteJob job; 0052 0053 RestApiMethod method; 0054 method.setServerUrl(QStringLiteral("http://www.kde.org")); 0055 job.setRestApiMethod(&method); 0056 0057 QNetworkAccessManager mNetworkAccessManager; 0058 job.setNetworkAccessManager(&mNetworkAccessManager); 0059 QVERIFY(!job.canStart()); 0060 const QString auth = QStringLiteral("foo"); 0061 const QString userId = QStringLiteral("foo"); 0062 job.setAuthToken(auth); 0063 QVERIFY(!job.canStart()); 0064 job.setUserId(userId); 0065 QVERIFY(!job.canStart()); 0066 const QString roomId = QStringLiteral("foo1"); 0067 job.setRoomId(roomId); 0068 QVERIFY(job.canStart()); 0069 } 0070 0071 void FindOrCreateInviteJobTest::shouldParseResult_data() 0072 { 0073 QTest::addColumn<QString>("name"); 0074 QTest::addColumn<FindOrCreateInviteJob::InviteUsersInfo>("inviteUsersInfo"); 0075 FindOrCreateInviteJob::InviteUsersInfo info; 0076 info.url = QUrl(QStringLiteral("https://go.rocket.chat/invite?host=www.kde.org&path=invite%2FPE6Nq6")); 0077 info.maxUses = 0; 0078 info.roomId = QStringLiteral("QMkvkiMyxKoEuJjnb"); 0079 info.userId = QStringLiteral("bla"); 0080 0081 QTest::newRow("test1") << QStringLiteral("test1") << info; 0082 } 0083 0084 void FindOrCreateInviteJobTest::shouldParseResult() 0085 { 0086 QFETCH(QString, name); 0087 QFETCH(FindOrCreateInviteJob::InviteUsersInfo, inviteUsersInfo); 0088 const QString originalJsonFile = QLatin1String(RUQOLA_DATA_DIR) + QLatin1String("/inviteusers/") + name + QLatin1String(".json"); 0089 QFile f(originalJsonFile); 0090 QVERIFY(f.open(QIODevice::ReadOnly)); 0091 const QByteArray content = f.readAll(); 0092 const QJsonDocument doc = QJsonDocument::fromJson(content); 0093 QJsonObject obj = doc.object(); 0094 f.close(); 0095 FindOrCreateInviteJob job; 0096 const FindOrCreateInviteJob::InviteUsersInfo result = job.parseResult(obj); 0097 const bool messageIsEqual = (result == inviteUsersInfo); 0098 if (!messageIsEqual) { 0099 qDebug() << "originalMessage " << result; 0100 qDebug() << "ExpectedMessage " << inviteUsersInfo; 0101 } 0102 QVERIFY(messageIsEqual); 0103 } 0104 0105 #include "moc_findorcreateinvitejobtest.cpp"