File indexing completed on 2024-06-02 05:07:01
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 "sendmessagejobtest.h" 0008 #include "chat/sendmessagejob.h" 0009 #include "ruqola_restapi_helper.h" 0010 #include <QJsonDocument> 0011 QTEST_GUILESS_MAIN(SendMessageJobTest) 0012 using namespace RocketChatRestApi; 0013 SendMessageJobTest::SendMessageJobTest(QObject *parent) 0014 : QObject(parent) 0015 { 0016 } 0017 0018 void SendMessageJobTest::shouldHaveDefaultValue() 0019 { 0020 SendMessageJob job; 0021 verifyDefaultValue(&job); 0022 QVERIFY(job.requireHttpAuthentication()); 0023 SendMessageJob::SendMessageArguments args = job.sendMessageArguments(); 0024 QVERIFY(args.roomId.isEmpty()); 0025 QVERIFY(args.message.isEmpty()); 0026 QVERIFY(args.threadMessageId.isEmpty()); 0027 QVERIFY(args.messageId.isEmpty()); 0028 QVERIFY(!job.hasQueryParameterSupport()); 0029 } 0030 0031 void SendMessageJobTest::shouldGenerateRequest() 0032 { 0033 SendMessageJob job; 0034 QNetworkRequest request = QNetworkRequest(QUrl()); 0035 verifyAuthentication(&job, request); 0036 QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/chat.sendMessage"))); 0037 QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json")); 0038 } 0039 0040 void SendMessageJobTest::shouldGenerateJson() 0041 { 0042 SendMessageJob job; 0043 const QString roomId = QStringLiteral("foo1"); 0044 const QString text = QStringLiteral("topic1"); 0045 SendMessageJob::SendMessageArguments args; 0046 args.roomId = roomId; 0047 args.message = text; 0048 job.setSendMessageArguments(args); 0049 QCOMPARE(job.json().toJson(QJsonDocument::Compact), QStringLiteral(R"({"message":{"msg":"%2","rid":"%1"}})").arg(roomId, text).toLatin1()); 0050 0051 const QString threadId = QStringLiteral("threadid"); 0052 args.threadMessageId = threadId; 0053 job.setSendMessageArguments(args); 0054 QCOMPARE(job.json().toJson(QJsonDocument::Compact), 0055 QStringLiteral(R"({"message":{"msg":"%2","rid":"%1","tmid":"%3"}})").arg(roomId, text, threadId).toLatin1()); 0056 0057 const QString messageId = QStringLiteral("msgid"); 0058 args.messageId = messageId; 0059 job.setSendMessageArguments(args); 0060 QCOMPARE(job.json().toJson(QJsonDocument::Compact), 0061 QStringLiteral(R"({"message":{"_id":"%4","msg":"%2","rid":"%1","tmid":"%3"}})").arg(roomId, text, threadId, messageId).toLatin1()); 0062 } 0063 0064 void SendMessageJobTest::shouldNotStarting() 0065 { 0066 SendMessageJob job; 0067 0068 RestApiMethod method; 0069 method.setServerUrl(QStringLiteral("http://www.kde.org")); 0070 job.setRestApiMethod(&method); 0071 0072 QNetworkAccessManager mNetworkAccessManager; 0073 job.setNetworkAccessManager(&mNetworkAccessManager); 0074 QVERIFY(!job.canStart()); 0075 const QString auth = QStringLiteral("foo"); 0076 const QString userId = QStringLiteral("foo"); 0077 job.setAuthToken(auth); 0078 QVERIFY(!job.canStart()); 0079 job.setUserId(userId); 0080 QVERIFY(!job.canStart()); 0081 SendMessageJob::SendMessageArguments args; 0082 args.roomId = QStringLiteral("foo1"); 0083 job.setSendMessageArguments(args); 0084 QVERIFY(!job.canStart()); 0085 0086 args.message = QStringLiteral("topic1"); 0087 job.setSendMessageArguments(args); 0088 QVERIFY(job.canStart()); 0089 } 0090 0091 #include "moc_sendmessagejobtest.cpp"